<?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>192808</bug_id>
          
          <creation_ts>2018-12-18 00:56:36 -0800</creation_ts>
          <short_desc>Use Ref&lt;&gt; as much as possible</short_desc>
          <delta_ts>2018-12-21 22:38:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488843</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 00:56:36 -0800</bug_when>
    <thetext>Use Ref&lt;&gt; as much as possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488844</commentid>
    <comment_count>1</comment_count>
      <attachid>357549</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 00:57:36 -0800</bug_when>
    <thetext>Created attachment 357549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488848</commentid>
    <comment_count>2</comment_count>
      <attachid>357552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 01:14:18 -0800</bug_when>
    <thetext>Created attachment 357552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488849</commentid>
    <comment_count>3</comment_count>
      <attachid>357553</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 01:31:38 -0800</bug_when>
    <thetext>Created attachment 357553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488850</commentid>
    <comment_count>4</comment_count>
      <attachid>357554</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 01:37:36 -0800</bug_when>
    <thetext>Created attachment 357554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488851</commentid>
    <comment_count>5</comment_count>
      <attachid>357555</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 02:02:54 -0800</bug_when>
    <thetext>Created attachment 357555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488854</commentid>
    <comment_count>6</comment_count>
      <attachid>357556</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 02:40:46 -0800</bug_when>
    <thetext>Created attachment 357556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488855</commentid>
    <comment_count>7</comment_count>
      <attachid>357557</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 03:05:12 -0800</bug_when>
    <thetext>Created attachment 357557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488859</commentid>
    <comment_count>8</comment_count>
      <attachid>357560</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 03:37:17 -0800</bug_when>
    <thetext>Created attachment 357560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488860</commentid>
    <comment_count>9</comment_count>
      <attachid>357561</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 04:00:53 -0800</bug_when>
    <thetext>Created attachment 357561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488862</commentid>
    <comment_count>10</comment_count>
      <attachid>357562</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 05:40:15 -0800</bug_when>
    <thetext>Created attachment 357562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488863</commentid>
    <comment_count>11</comment_count>
      <attachid>357563</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 06:07:59 -0800</bug_when>
    <thetext>Created attachment 357563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488864</commentid>
    <comment_count>12</comment_count>
      <attachid>357564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 06:28:58 -0800</bug_when>
    <thetext>Created attachment 357564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488892</commentid>
    <comment_count>13</comment_count>
      <attachid>357569</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 07:46:38 -0800</bug_when>
    <thetext>Created attachment 357569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488959</commentid>
    <comment_count>14</comment_count>
      <attachid>357584</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-18 11:06:27 -0800</bug_when>
    <thetext>Created attachment 357584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489234</commentid>
    <comment_count>15</comment_count>
      <attachid>357584</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-18 23:28:29 -0800</bug_when>
    <thetext>Comment on attachment 357584
Patch

Seems like you have some build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489246</commentid>
    <comment_count>16</comment_count>
      <attachid>357665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-19 00:22:47 -0800</bug_when>
    <thetext>Created attachment 357665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489255</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-19 02:01:05 -0800</bug_when>
    <thetext>OK, the patch is ready now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489421</commentid>
    <comment_count>18</comment_count>
      <attachid>357665</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-19 13:05:54 -0800</bug_when>
    <thetext>Comment on attachment 357665
Patch

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

&gt; Source/JavaScriptCore/API/JSTypedArray.cpp:188
&gt; +    Ref&lt;ArrayBuffer&gt; buffer = ArrayBuffer::createFromBytes(bytes, length, [=](void* p) {

auto buffer?

&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:59
&gt; +    Ref&lt;ArrayBuffer&gt; newBuffer = thisObject-&gt;impl()-&gt;slice(begin, end);

auto newBuffer?

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:259
&gt; +    ASSERT(data);

It seems like this whole function should be replaced by switchOn.  Right now it is not obvious that this assertion is correct.  Could we leave this one as a RefPtr for now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489783</commentid>
    <comment_count>19</comment_count>
      <attachid>357796</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-20 00:02:54 -0800</bug_when>
    <thetext>Created attachment 357796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489784</commentid>
    <comment_count>20</comment_count>
      <attachid>357665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-20 00:04:58 -0800</bug_when>
    <thetext>Comment on attachment 357665
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/API/JSTypedArray.cpp:188
&gt;&gt; +    Ref&lt;ArrayBuffer&gt; buffer = ArrayBuffer::createFromBytes(bytes, length, [=](void* p) {
&gt; 
&gt; auto buffer?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:59
&gt;&gt; +    Ref&lt;ArrayBuffer&gt; newBuffer = thisObject-&gt;impl()-&gt;slice(begin, end);
&gt; 
&gt; auto newBuffer?

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:259
&gt;&gt; +    ASSERT(data);
&gt; 
&gt; It seems like this whole function should be replaced by switchOn.  Right now it is not obvious that this assertion is correct.  Could we leave this one as a RefPtr for now?

OK, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489785</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-20 00:05:09 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=357665&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/API/JSTypedArray.cpp:188
&gt;&gt; +    Ref&lt;ArrayBuffer&gt; buffer = ArrayBuffer::createFromBytes(bytes, length, [=](void* p) {
&gt; 
&gt; auto buffer?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:59
&gt;&gt; +    Ref&lt;ArrayBuffer&gt; newBuffer = thisObject-&gt;impl()-&gt;slice(begin, end);
&gt; 
&gt; auto newBuffer?

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:259
&gt;&gt; +    ASSERT(data);
&gt; 
&gt; It seems like this whole function should be replaced by switchOn.  Right now it is not obvious that this assertion is correct.  Could we leave this one as a RefPtr for now?

OK, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489800</commentid>
    <comment_count>22</comment_count>
      <attachid>357802</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-20 01:19:32 -0800</bug_when>
    <thetext>Created attachment 357802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489845</commentid>
    <comment_count>23</comment_count>
      <attachid>357812</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-20 08:21:02 -0800</bug_when>
    <thetext>Created attachment 357812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490615</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-21 22:37:47 -0800</bug_when>
    <thetext>Committed r239535: &lt;https://trac.webkit.org/changeset/239535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490616</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-21 22:38:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46916279&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357549</attachid>
            <date>2018-12-18 00:57:36 -0800</date>
            <delta_ts>2018-12-18 01:14:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218175734.patch</filename>
            <type>text/plain</type>
            <size>386230</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uM2JjYjZkZWU0YTZlYzAyYzQzMWI0MDUxZDI1YWUwYmMzNWIyMDM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
OjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Ondh
dGNoUG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2Vz
OjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpn
ZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
QWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBh
c3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNl
OjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpj
cmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVy
ZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlVmll
dzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsu
Y3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgpOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6Cisg
ICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2hlZXQ6OnJ1bGVzKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2U6OnVuaWNvZGVSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyk6CisgICAgICAgICogY3NzL1NWR0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvciBjb25zdCk6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBw
ZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBkb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11
dGF0aW9uU2NvcGUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXIpOgorICAg
ICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCk6CisgICAgICAgICogZG9tL1BvaW50
ZXJFdmVudC5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGll
ZFNwZWxsQ29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRl
ZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKToKKyAgICAgICAg
KiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5
U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92
ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxl
c0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFBy
b3BlcnRpZXNOb3RJbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRU
b1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25SaWdodFRvTGVmdCk6CisgICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZSk6
CisgICAgICAgICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcv
UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNl
cnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRs
ZVN0eWxlU3BhbnMpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJn
ZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAg
ICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXN0
YW5jZUJldHdlZW5Qb3NpdGlvbnMpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KToKKyAgICAgICAg
KiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVy
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
UGFyc2VyOjpjcmVhdGVOZXdDdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFz
Q1NTUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0
aFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5UGF0aCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjphcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICogbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJz
ZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbik6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpnZXRNYXRjaGVkQ1NTUnVsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCBj
b25zdCk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6
ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxSZXF1ZXN0V2l0aEtl
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZW
aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5v
dGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBl
bmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5RmlsdGVyQW5pbWF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6
OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6
YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Q09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrVmlkZW9UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdl
Qm9keSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Ojpj
cmVhdGVOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6cG9wdXBNZW51KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlDb21tb25CdXR0
b25QYWRkaW5nVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0
QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6U3RvcmFnZSk6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjphcmVhIGNvbnN0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVN
ZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNl
cnZhdGlvbi5oOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToKKwogMjAxOC0xMi0xNyAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2lu
XVtDbGFuZ10gRml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOTZhZTg1NWFjNzU3NzcxYTEzZjJlOGRkYzk0ZDBh
MDNlNDY1YzkuLjc3Njg0ZThiY2FkYjQ4NGUyN2FjOTk4NGFkNGI3NzY1NjFiOWIyYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtl
c3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29ubmVjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb25uZWN0aW9uIHNlbmRNZXNzYWdlV2l0aE5h
bWU6Ym9keTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3Rd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZXaWR0aDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQ
TkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jw
b3JhdGVVcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3cpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVu
dFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAg
ICAgICAoLVtXS0RPTVJhbmdlIGluaXRXaXRoRG9jdW1lbnQ6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRl
SXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybVVSTFJl
cXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFi
YXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydENhaXJvU3VyZmFjZVRv
U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25h
cnlQb3B1cEluZm9Gb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxh
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNv
cHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorCiAyMDE4LTEyLTE3ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gTGF5b3V0IFRlc3QgaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRw
cy5odG1sIGFuZCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYXJlIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGFk
NmZhODA1ZTZjNzE3MjVkMTI0Yzk3NzVmMThjYTRiODc2YjM5YzkuLjMxMmRjMDMyNGM1MTFhMmE2
NTAzYmE2MTNiNDA4OWM2ZWI4OWI1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAg
KiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3Jv
dXAuY3BwOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmg6CisKIDIwMTgtMTItMTEgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bV2ViS2l0TGVn
YWN5XVtDbGFuZ10gV2ViS2l0Lmggd2FybmluZzogJ0lXZWJFZGl0aW5nRGVsZWdhdGUyOjpzaG91
bGRJbnNlcnROb2RlJyBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVuY3Rpb24gWy1Xb3Zlcmxv
YWRlZC12aXJ0dWFsXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGU4NDRmOTA1MTNj
MzM2YzI0ZTYzOWZlZjY5OGJkODM4MWI2NDRhYzIuLmQyYzYxYzhlNTMzYTJmMWFiZDc1ZTRlNWE0
NWJhMTdmYmFiOThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJj
aFBvcHVwTWVudUlPUyk6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJW
aXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRp
dmVzOl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRo
Q29ycmVjdGlvbkluZGljYXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlj
a09uTGlua1RvVVJMOl0pOgorCiAyMDE4LTEyLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggZTI0Mzg5YzMxZTdjNzA2N2ZmZTQ1YmM2NDEwYmI0YTVmZTQxOWFkYS4u
ODk4N2E2MmMxOWQxZGQyYmMwMDc2YjhjOWM1NDQ0ZGMwYzA2NDhhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtp
ICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11
Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNo
b3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFBs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBs
dWdpblZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0OndpdGhOb3RpZnlEYXRh
OnNlbmROb3RpZmljYXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6
YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF93cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkVHlwZXM6dG9Q
YXN0ZWJvYXJkOmNhY2hlZEF0dHJpYnV0ZWRTdHJpbmc6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3Js
ZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZy
YW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOndv
cmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZyYW1lczpdKToKKwog
MjAxOC0xMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBv
ZmZzZXRMZWZ0IGFuZCBvZmZzZXRQYXJlbnQgc2hvdWxkIGFkanVzdCBhY3Jvc3Mgc2hhZG93IGJv
dW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0MGFjMDUzODFmYjdkMDY5
NDZkYmI0NGEwZTFlNDYxOTE4YjJjMDNmLi5kNjEwZWRhZTlhY2ExMDdhNDY4MzVhN2U4MmQxN2Fj
OWJhZmU5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4K
KworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKToKKyAgICAg
ICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6YmluZGlu
Z0luc3RhbmNlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAg
ICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAg
ICAgICAoV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoK
KyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgor
ICAgICAgICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6Omdl
dEltYWdlQ29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojph
ZGRVc2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVl
dFRvR3JvdXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6
IGV4cGVjdGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFy
aWFudCBhbmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBl
ZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4
Li40YTk1ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVs
ZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxl
bmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAg
ICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0
b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZh
MGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2lu
dEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNo
cG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRk
KHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBv
aW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwog
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxs
IGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZi
MGYzMTkzODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJh
NDZhOWViOGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNh
bGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAg
ICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVk
ZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxT
d2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3
IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5l
dyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1l
cihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVy
cmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VS
ZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNr
KiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVh
cDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dl
ZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5h
YmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRh
MzZhNTg4MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5
N2MzYmVmOWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02Mjks
OCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxT
d2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0
b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBl
cjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7
CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0
YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTli
YjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNS
YXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewog
ICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigp
PiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJr
ZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
bwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21z
UGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4
NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3
ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcg
KzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJ
c29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29u
c3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2Vk
QmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBU
aGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNw
YWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhC
aXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3
U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNv
bnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVs
KGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBm
b3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5k
ZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVh
OGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2Vs
bFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElz
b0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQor
UmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAg
LTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAg
UmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAg
ICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3Zjlh
ZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThh
NDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5k
RW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hh
cmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNv
dXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJh
bGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRU
YXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAg
QEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxs
ZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RF
bXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5k
bGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsK
ICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5Kiwg
TWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1
ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0Nzcz
ZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3
ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgog
ICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRy
PFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
OworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3Rv
cnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQg
Zm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3Mg
U3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNo
Tm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVs
Tm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2Vk
QmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBA
IGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMm
KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFj
aE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4
MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZj
Zjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2Vk
Q2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVm
UHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJr
ZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJz
cGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsK
ICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxs
b2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlz
LCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4
YWMzOWYzZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNz
YWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2Fn
ZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAg
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmlu
Z01vZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVy
ZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRi
NDYyZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEz
NTM5M2EzYzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4
LCAwLCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewog
ICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7
CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdp
bikgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdp
bikgY29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRl
TGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUlt
cGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxB
cnJheUJ1ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdN
b2RlKHNoYXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJi
ZDdjZmJjNWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAx
YmYyNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEyOCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3Rp
bWF0ZUluQnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUg
YmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9p
ZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNs
YXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVy
PiB7CiAgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZm
ZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsK
KyAgICBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQg
ZW5kKSBjb25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgp
IGNvbnN0OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwg
dW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmNwcAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42
NGZmZjRhODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAg
ICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQp
KSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkK
IHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgp
LCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgp
LCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYx
MWUwNTJiZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFz
cyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAK
LSAgICBXYXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdh
dGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9p
ZCBmaXJlQWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0
OworICAgIFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRh
ZjJlMDdlLi43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
IGVsc2UKICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAg
ICAgCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBs
KCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwor
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGlj
ZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5n
TW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1
YmNhNjE0MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9O
YXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1
ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUg
aW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1l
bnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRv
IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAg
ICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24p
LCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMDdhNGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uOTkyMjY2YWNjYTk4
OTAyM2M4ODk1NzAyMWE3ZTVmMjlhYWQ1ZTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zCiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNC
bG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0
ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJv
ZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKaW5kZXggOWQyNTA2NzVmZGU3YzJlYzFmYjYzMWE5MWZlZWE3Y2M0MzhjNWE5Yi4u
NThhNzJiMTIxY2UxZjkzNTM5NjdhYjJhM2Q0YmI3ZDc3OWRmOGQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTMwNCwx
MCArMzA0LDEwIEBAIHZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihSZWY8UG9z
aXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlCiAgICAgaWYgKCFmcmFtZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2Vv
Tm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90
aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0
aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdU
Rk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKLSAg
ICBtX29uZVNob3RzLmFkZChub3RpZmllcik7CisgICAgbV9vbmVTaG90cy5hZGQoV1RGTW92ZShu
b3RpZmllcikpOwogfQogCiBpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0
aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxi
YWNrPiYmIGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyYmIG9wdGlvbnMpCkBAIC0zMTUs
MTQgKzMxNSwxNCBAQCBpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9u
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8UAogICAgIGlmICghZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0g
R2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qo
bm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRl
KCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayks
IFdURk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAK
ICAgICBpbnQgd2F0Y2hJRDsKICAgICAvLyBLZWVwIGFza2luZyBmb3IgdGhlIG5leHQgaWQgdW50
aWwgd2UncmUgZ2l2ZW4gb25lIHRoYXQgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlLgogICAgIGRvIHsK
ICAgICAgICAgd2F0Y2hJRCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y2lyY3VsYXJTZXF1
ZW50aWFsSUQoKTsKLSAgICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgV1RGTW92
ZShub3RpZmllcikpKTsKKyAgICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgbm90
aWZpZXIuY29weVJlZigpKSk7CiAgICAgcmV0dXJuIHdhdGNoSUQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyNThkODlh
NWFkYWJjYTU4OGExOWE0OGQ5NzhmNmVlMjIxZjhkZTdlLi5kMDlhMDUxOTY0ZTY5MTVhYzExZGZh
NzE2NjczYjA4MTMwMDFmZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwog
ICAgIGZvciAoYXV0byYgbmFtZSA6IG1faW5mby5vYmplY3RTdG9yZU5hbWVzKCkpCiAgICAgICAg
IG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChuYW1lKTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5z
b3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5
NC4uZjk4NDczNzU5NjgxYjc3Yjc5MzE3MDBiNzY0ZmJlYTJiM2EwZmYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
MTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5k
ZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIW1fZGVs
ZXRlZCkgewogICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8uaW5kZXhOYW1lcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2RjMTIuLjE3NWJk
ZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM3MiwxMyAr
MzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwogfQogCi12b2lk
IElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hl
ZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVy
YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5z
KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBpZGVudGlmaWVy
ID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVy
YXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9w
ZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwogCiAg
ICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMxNDZlNWQ2OTJl
ZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFiYTQ5OGZhOTcw
ZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2
ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJv
Z3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3Bl
cmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICB2
b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBj
b21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZlYy4uOGRkYjU2
ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAgfQogfTsKIAot
aW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVy
YXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAo
SURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZv
aWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mKSkKIHsK
LSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFu
c2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRp
b24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDw+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAg
IHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwK
ICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJhdGlv
biA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24p
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAy
PgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlv
bigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFu
c2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBNUDIpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewotICAg
IGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4o
dHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAg
IHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwK
ICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8VHJhbnNhY3Rp
b25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAyJiBw
YXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3BlcmF0
aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2Fj
dGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRl
cjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2FjdGlv
biwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxUcmFu
c2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQg
KElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHRE
YXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBv
cGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24s
IHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0s
IHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoq
Y29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0yNDcsMTIg
KzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9u
T3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBw
YXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBN
UDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwg
cGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgotUmVm
UHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1Jl
ZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAg
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElE
QlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAyJiBwYXJhbWV0
ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0g
bmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2FjdGlvbiwg
cmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFt
ZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2Fj
dGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXgg
MTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNhOTlhZTA5ODFj
OGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzExMCw3IEBAIHZv
aWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3RyYWludHMmIGNv
bnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5zZXREZWZhdWx0
VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVz
dDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OlVzZXJNZWRp
YSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSB9
LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdC0+
c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwogfQpAQCAtMTIz
LDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0RGlzcGxheU1l
ZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLnZp
ZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVx
dWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuIHsgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2MTI2YWYyYjM2
ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1
ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJNZWRpYVJlcXVl
c3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3Ry
ZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihuZXcg
VXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShwcm9t
aXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFSZXF1ZXN0
KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVz
dWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApp
bmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42ZGU3ZTVjOGQ3
YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNDgsNyArNDgs
NyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShE
b2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFSZXF1ZXN0
PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwgflVzZXJNZWRp
YVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdmZGRiYzAwODBi
YzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRkZjI3ODRkOWJi
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlRmluYWxWYWx1
ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAKICAgICAvLyBO
b3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhlciAodW5pdHkt
Z2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVjdGlvbnMgd291
bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYgbmVjZXNzYXJ5
LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwg
bnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6
Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1cy0+c2V0Q2hh
bm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoYXV0byYg
b3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA4OGFlMDRh
YmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFmYzc2MTFiMzcw
MzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3LDggQEAgdm9p
ZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVhdGUgZG91Ymxl
IGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAgICAvLyBUaGVz
ZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJl
YWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7
Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5w
dXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMs
IGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8QXVkaW9CdWZm
ZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVy
OjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJh
dGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVmZmVy
U2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVmZmVyID0gbV9u
dW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAgICAgICAgIG1f
aW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0cHV0QnVmZmVy
cy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5YmRjNjgzOWQw
YmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQwNGY3YWIwNjM1
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1
dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFNRTFJlc3Vs
dFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3Vs
dFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNvIHdlIGNhbiBm
ZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CkBA
IC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRi
KQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJlc3VsdFNldC0+
c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAgbV9yZXN1bHRT
ZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3VsdFNldCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUu
Y3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5MDcuLjBkYzQx
MWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdlYkdQVT4gV2Vi
R1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVUFk
YXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmIGRlZmVy
cmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShk
ZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVkLnJlamVjdCgp
OwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJyZWQucmVzb2x2
ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRleCBlZWVjNGRm
NjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMxNjE5ZTAwZGI5
MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShjb25z
dCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVBZGFwdGVy
PiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvci4KLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwogfQogCiBXZWJH
UFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRl
ci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNmZWMuLjhkMDRl
NTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRl
c2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURldmljZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAppbmRl
eCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlhNWM3NjQyZjI0
YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShS
ZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6
Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQnVmZmVyOjpX
ZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVkNjgyZmJlMjQy
OGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFkYWNkN2NiY2Iy
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVQnVmZmVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwogCiAgICAgY29u
c3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMwMzM4NDI5NDIu
LmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCkBA
IC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUNv
bW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1
ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJlZlB0cjxXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5SZW5kZXJQYXNz
KFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNo
bWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsgY29s
b3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2htZW50LmNsZWFy
Q29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFzc0Rl
c2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAg
IGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29tbWFu
ZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpKQorICAgICAg
ICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMyNTI2MzkyNDM3
YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwogCiBj
bGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29tbWFu
ZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CiAKICAgICBj
b25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9j
b21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDc3YmE0Y2JjMDhmOTZiMWUzMjJjNjlkNDg3ZjcwNTk0
MTI4NmM0MzguLmU0MGVhOTgyNzc5YTc5MzVkODM2MDgyNzA4OWEwZjAxNzUzNDE5MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtNDYs
OCArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVEZXZpY2U+IFdl
YkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCiB7Ci0gICAg
YXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFrZSBhZGFwdGVy
IGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVybiBkZXZpY2Ug
PyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxl
YXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURldmlj
ZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4gY3Jl
YXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNl
KFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFw
dGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjAsMTUgKzYxLDE3
IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0
ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9yIG5lZWRlZD8K
LSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3Jp
cHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSB9KTsKLSAgICByZXR1cm4g
YnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDog
bnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQ
VUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSkp
CisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1
bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXaGF0IGNhbiBi
ZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFk
ZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KTsK
LSAgICByZXR1cm4gbW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJl
bGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUgPSBtX2Rldmlj
ZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlw
dG9yLmNvZGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSht
b2R1bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxpZGF0ZUFuZENv
bnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQpAQCAtODksMTQgKzkyLDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxpbmUgPSBtX2Rl
dmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsg
V1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwgZGVzY3JpcHRv
ci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwotICAgIHJldHVy
biBwaXBlbGluZSA/IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFz
ZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2Ut
PmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1v
dmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJp
bWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAgICAgcmV0dXJu
IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gY29t
bWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgcmV0dXJu
IGNvbW1hbmRCdWZmZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tbWFuZEJ1ZmZl
ciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJldHVybiBXZWJH
UFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZp
Y2U6OmdldFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5NzUwY2I3NGE2
ZGI3NjU3YjJjZTgxZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1MzFjMGZmOTg2
NDdiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRC
dWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
IGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKaW5kZXggMzEyOTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3Zi4uODdhN2Vh
ZjE5ZjA5OTA3MWRiN2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CiAKICAg
ICAvLyBGSVhNRTogTGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2lnbmVkIGxvbmc+
LiBXaHkgaXMgdGhlIGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5nIHRoZSBJREwg
d2FudHMgYSBzZXF1ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVy
cyh1bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYsIFZlY3Rvcjx1
bnNpZ25lZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4Zjk3Mzg2MmE0
ODhlYzBjMzFlYTlmYS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEzOTI4NjQ1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0
ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmIHBpcGVsaW5lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBp
cGVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzczY2FjZDkyMGY5
N2QyMi4uMzkxN2ZhZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5o
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShS
ZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAgUmVmPEdQVVJl
bmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUu
Y29weVJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5MjMwNDFjZjhl
NTk2Yjg2MWI5OGUuLjk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmExYzdmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVT
aGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hh
ZGVyTW9kdWxlOjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9k
dWxlKSkpOwogfQogCiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1vZHVsZShSZWY8
R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2VjMjRhMWZlMDlh
NmViNGM2Zjc0NTdhMGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2Y2FkNDViMzMz
NzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3Jl
YXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBjb25zdCBHUFVT
aGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0cigpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKaW5k
ZXggYzY3ODBlZjYxYjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5ZDdmOTYzYmQy
ZTkxNTdkODVjZGQzN2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAgV2ViR1BVVGV4
dHVyZTo6V2ViR1BVVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQogCiBSZWZQdHI8
V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmll
dygpCiB7Ci0gICAgYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcoKTsKLSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1cmVWaWV3Ojpj
cmVhdGUoZ3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkpCisg
ICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmVWaWV3LmNwcAppbmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0YjEyMzQ2NTFj
Li43MjY1OTQ1YTIzZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCkBAIC0z
MCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVRleHR1
cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcp
CitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVRleHR1
cmVWaWV3KFdURk1vdmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVU
ZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVWaWV3OjpXZWJH
UFVUZXh0dXJlVmlldyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBmZDgxNDkyYjA4
MWRmY2RjOTFiZWY1MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2UwZGYzOTUwM2Y4
NzkxYmVjYTA5MmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0
dXJlVmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+
IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJl
Vmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVUZXh0dXJlPiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGYxMTRi
YTk0OWIwYjMyZDBmNmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3N2M4MTQ0YmI2
YmY2NTdiN2ZkMGFjMmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQdHI8UmFuZ2U+
IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRyPFJhbmdlPiBv
cmlnaW5hbFJhbgogICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgZW5kUG9z
aXRpb24gPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdlLT5lbmRDb250
YWluZXIoKSk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9IFJhbmdlOjpj
cmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwotICAgIGlmICgh
c2VhcmNoUmFuZ2UgfHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1dG8gc2VhcmNo
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uKTsKKyAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSht
X2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9uKCkp
OwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2Vh
cmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOworICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFs
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZp
bmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFy
Z2V0T2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJSKE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0
Q2FjaGVBdGsuY3BwCmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5MzM2NzZjZDA5
ZjAuLmY3Y2QzYWE4YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3Bw
CkBAIC0zMzcsOCArMzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAgICAgICAgLy8g
Q29uc2lkZXIgcHJldmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJlc2VudCBmb3IK
ICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gZW5zdXJlIHdl
IGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxpbmUgdGV4dCBh
cmVhcykuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBvZmZzZXRUb0Vt
aXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5v
ZGUoKSwgMCwgbm9kZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0VtaXQsIHRleHRU
b0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwCmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMyMzRmNjA4ZGE2
MDcuLmJjMTZlNGIyOTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAg
IGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2Rl
KSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdl
LmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAgLTI4Niw4ICsy
ODYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgo
QXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9i
amVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpj
cmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVu
dE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0
UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRrSHlwZXJsaW5r
KiBsaW5rKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDE4YzllOWI1
Nzk3Yzk5MTZkMjYyNWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2ZjNDE1YjBlZWQ1
N2I0NGZmMmQ3OWFiY2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
QEAgLTQwNiwxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JP
YmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAKICAgICAvLyBD
YWxjdWxhdGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0aGUgb2JqZWN0
LgogICAgIFBvc2l0aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUobm9kZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50ID0gUmFuZ2U6
OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VT
dGFydCk7CisgICAgYXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAKICAgICAvLyBT
ZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBs
ZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNv
dmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtP
ZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50
LmdldCgpLCB0cnVlKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAg
IGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLmdl
dCgpLCB0cnVlKTsKKyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0a09mZnNldChj
b3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJlbnQucHRyKCks
IHRydWUpKTsKKyAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJhbmdlTGVuZ3Ro
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOwogCiAg
ICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gd29ya2luZyB3
aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgpID09IFVQ
U1RSRUFNKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDhj
N2IxY2YzOGI5Y2I4OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhlOWQwYTdkM2Vj
YWU3MDJhNDM5NTYyZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCkBAIC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05T
UmFuZ2U6KFJhbmdlICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWluZXIoKSAhPSBz
Y29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNjb3BlKSkKICAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwg
MCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAg
YXV0byB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwg
MCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CiAgICAg
QVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBz
dGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkp
OworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0
UmFuZ2UucHRyKCkpOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIo
KSwgcmFuZ2UtPmVuZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250
YWluZXIoKSA9PSBzY29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1cm4gTlNNYWtl
UmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAKaW5kZXggOWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBkODcxNS4uMzU0
NWQ1ZDUxMWZmODY4MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC03OCw4
ICs3OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0VGFzazo6SlNH
bG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNy
b3Rhc2s+JiYgdGFzaykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyB9KQog
ewotICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAg
IG1fdGFzayA9IFtjYWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgYXV0
byBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IFdURk1vdmUodGFzaykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwo
KTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkxYTI4N2FhYi4u
ZTdkOTM3ZWVhNzRjMTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDksOCArMjA5LDgg
QEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCi0gICAgUmVm
UHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6
Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFtjYWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rh
c2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8g
bWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4o
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXgg
MzgwYWQ1YmQxNTIwMTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYwNGNiYWViODdm
MDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMzLDkgKzEzMyw5
IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSY+KG9i
amVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAg
YXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNr
TWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFja10o
KSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxi
YWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5NmM4OWQxMzhj
MzU2NmEzMWMwY2MyNDkuLmU2NmU5NTdmYmYxYzk1MmQ5OWFlZTA4MTkzNjZlMDMyMjllYTBjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQpAQCAtODUsNyArODUsNyBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBO
UE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0lu
c3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBh
dXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3Qs
IFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVj
dGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1MjhiYThjZWI5
ODczY2I2ZjEzMzU5MzYzNWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVhZTM4MDVh
NzAyYjY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xvbmVEZXNl
cmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW50U2l6
ZSBpbWFnZVNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bGVuZ3RoIHx8IChpbWFnZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVuZ3RoKTsK
LSAgICAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRl
KGltYWdlU2l6ZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRl
KGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAg
IGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1OCw3ICsy
OTU4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3NoYXJlZEJ1
ZmZlcnMtPmF0KGluZGV4KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4
KSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gZ2V0SlNWYWx1ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVl
ID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWMs
IHZhbHVlKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUxNWU1NTYw
ZDQ0OTY1ZGE2NDA0MTU0ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVmODNhOWMz
MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCkBAIC0z
NCw3ICszNCw3IEBAIGNsYXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNlIDogcHVi
bGljIEluc3RhbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0YW5jZT4g
Y3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAgIHN0YXRp
YyBSZWY8T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9i
amVjdD4mJik7CiAgICAgdmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAgc3RhdGlj
IHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3QqIGV4Y2Vw
dGlvbkVudmlyb25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVudCBtZWFu
cyB0aGUgZXhjZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBlbnZpcm9u
bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4
IDBhZWMwY2VlYWY5YzZjMmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2FmZmM2NmFk
ZjcyNDJjYzQ2MDFjZDMyYTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3RhbmNlOjpP
YmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3Qp
CiB7CiB9CiAKLVJlZlB0cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGlu
c3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJbnN0YW5j
ZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYm
IHJvb3RPYmplY3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5hZGQoKF9f
YnJpZGdlIENGVHlwZVJlZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7Ci0gICAgICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBhZG9wdFJl
ZihuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7Ci0gICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShy
b290T2JqZWN0KSkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5w
dHIoKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3RhbmNlOjp+
T2JqY0luc3RhbmNlKCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApp
bmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNkOWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEy
NmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUwNWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKQEAgLTE3MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9p
bW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBt
X2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZm
ZXIpOwotICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5n
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShi
dWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4g
d2hldGhlciBvciBub3QgZm9udEZvckZhbWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tp
bHksIG5vbmUgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJh
MzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2UxMWVmYjA0YTYyLi4wYTAxN2RiNDRkYmVkZGIwNzY5Yjcx
NjQ4NzNhYmYxYWQ5YTQxYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBA
IC0yNTksNyArMjU5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxl
cygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBT
dGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQgcnVsZUNvdW50ID0gbGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVDb3VudDsgKytpKQogICAg
ICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcAppbmRleCBhMjRhNTM2MjY4OTBhOGE5MWQxMTczOGNhOWE1OGE0NTM3MWJiOGI4Li5lMzQ5
MTcxMjg3ODkwYjk4NzRhNzA0YWI3YjQxYmY2OWNkYTU1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgp
IGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFt
X2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9z
OwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9iYWNraW5nLT5yYW5n
ZXMoKSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0
ZShyYW5nZS5mcm9tLCByYW5nZS50bykpOwogICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsK
QEAgLTM5MCw3ICszOTAsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNv
bnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2Jh
Y2tpbmctPmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJub3JtYWwi
X3M7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9iYWNraW5nLT5mZWF0
dXJlU2V0dGluZ3MoKSkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFsdWU6
OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAgICBy
ZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0lu
c3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNT
U09NV3JhcHBlcnMuY3BwCmluZGV4IGZkYjhlM2FmNzlhYzYyYjc4OTU2MGI4M2MzN2ViNzQzYzhm
ZTYxMmYuLmJkZWZlYzRhN2ZhN2M0MGIzNjlhMGEzZDJmMGUzZDM2YjcyODc3NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTc5LDkgKzc5
LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRD
b250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMqIHMKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBw
ZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOwotICAgIG1fc3R5bGVTaGVl
dENTU09NV3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3Qoc3R5
bGVTaGVldFdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NT
dHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOworICAgIG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIuY29weVJlZigpKTsKKyAgICBjb2xsZWN0KHN0
eWxlU2hlZXRXcmFwcGVyLnB0cigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
Ojpjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+JiBzaGVldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDMzMWU4MzYzZmFlODdhYjQ1M2ZjMWU3ZDU1Mzll
MDk4MDZmYjEzNTIuLjJiNzVlYmJmNzg2YTlkNjQzZmZiMWM3ZDNiOTM5MThiOTI4MDg2NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHN0cm9r
ZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1CiBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3Vy
cmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7CiAgICAg
aWYgKHBhaW50VHlwZSA+PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpIHsKLSAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX1VSSSkpOwogICAgICAgICBp
ZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSkKICAgICAgICAgICAgIHZhbHVl
cy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc0ZmEzZjUzOThmZTZm
YmU0MjQ2Y2U2YzEwZDM4ZDU5ZjhlMmIzYTYuLjZhMjAzNjBhNTQ2MDI2YTFjZmY4MTI3YWU4MTUx
ZWFmMjMzMDA0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODAs
OCArMTk4MCw4IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBTdHJpbmcg
Y3NzVXJsID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1
cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7CiAKLSAgICAgICAgICAgIFJlZlB0
cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAg
ICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOworICAgICAg
ICAgICAgYXV0byBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShj
c3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGTW92ZShvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggMGRjMTA5
OGY1NGY4NGJiZjJiYTdiYmEzNTk3MWI2OGQ1YTlkYmJlYy4uMWVlZmViOGJkMTBjMjU0YjgyNGJj
MDZjZDViOGFlZjA2NjAyMTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEy
ICs0NSwxMiBAQCBzdHJ1Y3QgU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpS
ZWZDb3VudGVkQmFzZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9
PSBzaXplb2YoU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9z
dGF5X3NtYWxsKTsKIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09N
V3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKK1JlZjxDU1NSdWxlPiBT
dHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hl
ZXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwg
bnVsbHB0cik7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1
bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsg
CiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihudWxscHRyLCBwYXJlbnRSdWxlKTsKIH0K
QEAgLTEzMSw3ICsxMzEsNyBAQCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29w
eSgpIGNvbnN0CiAgICAgQ1JBU0goKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVD
U1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1
bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFz
ZSYgc2VsZiA9IGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE2OSwxMSAr
MTY5LDEzIEBAIFJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTCiAgICAgY2FzZSBDaGFyc2V0OgogICAg
IGNhc2UgS2V5ZnJhbWU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIEFTU0VSVChydWxlKTsK
KwogICAgIGlmIChwYXJlbnRSdWxlKQogICAgICAgICBydWxlLT5zZXRQYXJlbnRSdWxlKHBhcmVu
dFJ1bGUpOwotICAgIHJldHVybiBydWxlOworICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxs
KCk7CiB9CiAKIHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaAppbmRleCA2ODA3MTQxZmVlYTcxYjA3NmFmYTlhNGE2OWEzY2QyNmZjNTMy
Mjg4Li43MTgwNTIzMTM4NDQwMzJmNzVjOWM2Y2QxZTVhYTkzZGJlZGQ0MmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJs
aWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgbmVlZCBmb3IgdGhlIG51bGwgcGFyZW50IHZlcnNpb24uCi0gICAgUmVm
UHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVl
dCA9IG51bGxwdHIpIGNvbnN0OwotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNT
U09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgYm9vbCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZmFsc2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xh
c3MgU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUmVmUHRyPENT
U1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NT
UnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OwogICAgIC8vIFRoaXMgaXMgb25seSBuZWVk
ZWQgdG8gc3VwcG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKaW5kZXggMGZlZTg0Y2Q3ZWIyNjc5MmUzZGY2ZDQ2
N2U5MGE2MmYxZmQwY2M1NC4uNjY4NGE4YWVhMTRiZWJkNmQzODUzMjZhNGI0ZGFlZTk3NzdlN2Fh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjp+Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcigpCiAgICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUobV90YXJn
ZXQucHRyKCkpOwogfQogCi1SZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFy
Z2V0KQorUmVmPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHsKICAgICBB
Y2N1bXVsYXRvck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGFjY3VtdWxhdG9yTWFwKCkuYWRkKCZ0
YXJnZXQsIG51bGxwdHIpOwogICAgIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9y
PiBhY2N1bXVsYXRvcjsKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKEMK
ICAgICAgICAgYWNjdW11bGF0b3IgPSBhZG9wdFJlZihuZXcgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcih0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JD
aGlsZExpc3RNdXRhdGlvbih0YXJnZXQpKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBhY2N1bXVsYXRvci5nZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yOwor
ICAgIHJldHVybiBhY2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBpbmxpbmUgYm9v
bCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3JkZXIoTm9kZSYg
Y2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRl
eCA5Yjk0MzcxNmRiYzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2NzY3NzY4ZjBk
NzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yIGlzIG5v
dCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNjb3BlIGlzIHRo
ZSBwdWJsaWMgaW50ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9y
Q3JlYXRlKENvbnRhaW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5vZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXgg
ZDU1YzU2ZjEzNjkzMjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYzMGMzMzAwYjlh
NzkwMmZhN2JjYmUyMmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1h
cmtlciwgTm9kZSYgbgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXcoKSB8fCAhbm9k
ZS5kb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlZmFjdG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2UgKGJlY2F1c2Ug
d2Ugb25seSBoYXZlIG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0aCBhYnNvbHV0
ZVRleHRRdWFkcygpLgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwg
bWFya2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAgICAgICByZXR1
cm47CisgICAgYXV0byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgp
LCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkp
OwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAgICAgbWFya2Vy
UmFuZ2UtPmFic29sdXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRydWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDEwOWY3
MjRjNTgzMTYwYTcxOGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQyODRiNzcwMzU1
ZGM0ZTBhNmQxYzI3NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGluZVN0eWxlU2hl
ZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5bGUoZG9jdW1l
bnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNLbm93bk5vbmNl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVl
cmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChkb2N1bWVudCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6
Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CiAKICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1ZSk7CiAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsKICAgICBMT0co
TWVkaWFRdWVyaWVzLCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCBldmFsdWF0
aW5nIHF1ZXJpZXMiKTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmll
cykgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBpZiAoIXNjcmVl
bkV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRl
KG1lZGlhUXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0eWxl
U2NvcGUpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNy
ZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAg
aWYgKGF1dG8qIGNhY2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCkuZ2V0KCpjYWNo
ZUtleSkpIHsKICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNoZWFibGUoKSk7
CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKCpjYWNo
ZWRTaGVldCwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3No
ZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAg
ICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7
CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0gU3R5bGVTaGVl
dENvbnRlbnRzOjpjcmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGVsZW1l
bnQpKTsKIAogICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29udGVu
dHMuZ2V0KCksIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAgbV9zaGVl
dC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAgaWYgKCFlbGVt
ZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQu
dGl0bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5MTQzMTI4Yzll
MmIxMzkyZWE5ZmM5N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZjMzY2YzA3Y2Rl
N2I4MDk4ZmQyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00OSw3ICs0OSw3
IEBAIGNsYXNzIFBvaW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKICAgICAg
ICAgYm9vbCBpc1ByaW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmUHRy
PFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGlu
aXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplcikp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmluZGV4
IGNmOGUzOTNiODYzZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0NjkwNTJiNWNi
MzEwYTlhMjZlZGQ0M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNlckdlc3R1cmVU
eXBlIHsgRXNjYXBlS2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuIDogcHVi
bGljIFJlZkNvdW50ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
IHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGljIFJlZjxVc2Vy
R2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVz
ZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsK
ICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggNTgyYmUwZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4uOThhYmM3MzZk
NzUwNjg0M2YzMjFjMGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFy
dCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9y
ZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5n
ZQogICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUg
c3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVmUHRyPFJhbmdl
PiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkp
OworICAgIFJlZjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+
c3RhcnRQb3NpdGlvbigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0
aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICghc3RhcnRQb3Np
dGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRl
eHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNh
biBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgpKTsKKyAgICBp
bnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7CiAK
ICAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2Qg
bWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAgIGF1dG8gcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYsMTIgKzI2Niwx
MiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNw
ZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1f
ZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0ZWQsIEZyYW1l
U2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVTZWxlY3Rpb246
OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
KyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5yZW1vdmVN
YXJrZXJzKHJhbmdlLmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+
IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3Rl
ZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5n
TWFya2VyKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMucmVtb3Zl
TWFya2VycyhyYW5nZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
PiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0
ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGlu
Z01hcmtlcik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQzLDEwIEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXNDcmVhdGVMaW5r
Q29tbWFuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKLSAgICBp
ZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFy
dCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
LSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdl
LnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFy
a2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7
CiB9CiAKIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0
b2NvcnJlY3Rpb25BCiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGluZ0NoYXJhY3Rl
clBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHByZWNlZGlu
Z0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVj
ZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0cmluZyBzdHJp
bmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
cHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7CisgICAgU3Ry
aW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIoKSk7CiAg
ICAgaWYgKHN0cmluZy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNl
KHN0cmluZ1tzdHJpbmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IE1hcmsgdGhpcyB3aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRlZCBhbiBhdXRv
Y29ycmVjdGlvbiBmb2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNvIGlmIHRoZSB1
c2VyIHR5cGVzIHRoZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBwb3NpdGlvbiwg
d2UKICAgICAvLyB3b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdG
b3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPm1h
cmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCksIERvY3VtZW50
TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
Ojpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0IFRleHRDaGVj
a2luZ1Jlc3VsdCYgcmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAgYm9vbCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBE
b2N1bWVudE1hcmtlciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFya2VyLCBlbmRP
ZldvcmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFpbmVyTm9kZSgp
OwotICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5k
b2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9m
ZnNldCgpKTsKLSAgICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOworICAgIGF1
dG8gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBt
YXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKKyAgICBTdHJp
bmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAgICBpZiAoIWN1
cnJlbnRXb3JkLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9vcmlnaW5h
bFRleHQgPSBjdXJyZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkpIHsKICAgICBj
YXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5h
dGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1v
dmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmcoKTsKICAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGlu
Z1N1Z2dlc3Rpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
UmVwbGFjZW1lbnQ6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7
CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAg
ICAgICAgIG1fZGV0YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAgICBzdGFydEFs
dGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbik7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAg
ICAgICAgIGF1dG8mIG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uRGF0YT4obWFya2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29yZCAhPSBtYXJr
ZXJEYXRhLm9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gbWFy
a2VyRGF0YS5jb250ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0
ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4MTRhZDFkM2Zk
YTZhZjg2OTY4OGJmYzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0MjZmNzRiNjAz
Njk3MWZjOGNlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29wZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFJlZlB0cjxS
YW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25J
bk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHN0YXJ0
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7CisgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmly
c3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGludCBlbmRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogCiAg
ICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJs
ZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFydChlbmRPZlBh
cmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0LDEyIEBAIHZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxl
KQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhT
dGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7
Ci0gICAgZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFu
Z2UpCi0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
ZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRvIHN0YXJ0UmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFy
dEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAg
ICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1cGRhdGVTdGFy
dEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIH0KIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5
U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMDUx
LDkgKzEwNTMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxl
QXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgZWxlbWVu
dHNUb1B1c2hEb3duLmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZSgpOworICAgICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQotICAgICAgICAg
ICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1l
bnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7Cisg
ICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2FzdDxI
VE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLnB0
cigpKTsKIAogICAgICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91Z2ggY2hpbGRy
ZW4gb24gZWFjaCBsZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFnZ3JlZ2F0ZSBp
bmxpbmUgY2hpbGQgZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3cmFwIGVhY2gg
Y2hpbGQgc2VwYXJhdGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUs
IE5vZGUqCiAgICAgICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMgY29udGFpbmlu
ZyB0YXJnZXROb2RlIGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdldE5vZGUKICAg
ICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQgdGhlbiBhbHdh
eXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0YXJnZXROb2Rl
IHx8IHN0eWxlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVz
aERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXBw
bHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAK
ICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBvdXRlciBsb29w
IChjb250YWlucyB0YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFjaGVkIHRhcmdl
dE5vZGUsIHN0b3AgdGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBvZiB0aGUgY3Vy
cmVudCBpbm5lciBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2NGNiNWMxZGIw
ODMuLjMwYjM3MmZiNTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0zODIsOCAr
MzgyLDcgQEAgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojp0YXJnZXRSYW5nZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6
Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9Owor
ICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2Up
IH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3NjcsMTUgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFy
a2VycyhUZXh0JiBub2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1h
cmtlckNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRvIG1hcmtlcnMg
PSBjb3B5TWFya2VycyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNvdW50KSwgRG9j
dW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUs
IG9mZnNldCwgY291bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBuZXdS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9m
ZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIHJl
cGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBtYXJrZXIgOiBt
YXJrZXJzKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1hcmtlci5p
c0RpY3RhdGlvbigpKSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihu
ZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCksIG1hcmtl
ci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAgICAgbWFya2Vy
Q29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtl
ci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgbWFy
a2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1h
cmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIo
bmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKICAg
ICB9CiB9CiAKQEAgLTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBp
ZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3Rh
cnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92
ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAg
ICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBzdGFydElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAgICAgICAgICAg
aWYgKGVuZEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5k
ZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAg
ICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IHRvIGNy
ZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAgUG9zaXRpb24g
c3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBs
aWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNh
dGVkTm9kZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsK
KyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29t
cGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFu
Z2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4g
dGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0ZXIgdGhvdWdo
LCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBzbWFsbC4KICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhpcyB1c2VkIHRv
IHVzZSBhIHRlcm5hcnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25mdXNlZCBzb21l
IHZlcnNpb25zIG9mIEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlICE9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFs
QXBwZWFyYW5jZSgqcmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBD
b252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJl
c2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmlu
ZygpKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlzIG1vdmVkIHdo
ZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8gYW55dGhpbmcg
aWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkgcGFyYWdyYXBo
IGNhbiBoYXZlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2ZDZlNjY1NWVi
MDk3NWE2Li5hNmQxNzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTY5Myw5ICs2OTMsOSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdy
YXBocygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5k
ZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVudCgpLT5zaG91
bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0
KCkpKQorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQo
KS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdlVG9CZVJlcGxh
Y2VkLnB0cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQYXJhZ3JhcGhz
IHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0aGF0IHdvdWxk
IHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwCmluZGV4IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0ZWVlNWMuLjg2
ZDAyMWQxOGE0NzkxM2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQg
aW4KICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29u
dGVudHMobm9kZSk7Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsKKyAgICBDaGFy
YWN0ZXJJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShpbmRleCAtIDEp
OwogICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24oKSA6IGl0LnJh
bmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAwMTM4OWQxYzhh
ZGI0NzM4YS4uYjM4YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcxNCw3IEBAIHZv
aWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBwYXJlbnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVkU3R5bGUobm9k
ZS5wYXJlbnROb2RlKCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBub2RlU3R5
bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAKICAgICBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsKQEAgLTgyOCw4
ICs4MjgsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hvdWxkUmVtb3Zl
U3RyaWtlVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVjb3JhdGlvbkNo
YW5nZTo6UmVtb3ZlOwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwgc2hvdWxkUmVt
b3ZlU3RyaWtlVGhyb3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFs
dWVMaXN0ID0gdGV4dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkgewotICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5
KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRWYWx1ZUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAgYXV0byBleHRy
YWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAK
ICAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUp
OwogICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1ZUxpc3QtPmhh
c1ZhbHVlKHVuZGVybGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBib29sIEVkaXRp
bmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQm
IGVsZW1lbnQsIFJlZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlzdC0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGlmIChuZXdWYWx1ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBuZXdJbmxp
bmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgbmV3VmFsdWVM
aXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEsNyArMTA3MSw3
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24gb25seSBy
ZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rpb24gd2FzIG1v
ZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJvcGVydGllcywg
dGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hpY2ggb25lIG9m
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxsZWQuCi0gICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRv
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZUF0
UG9zaXRpb24gPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHlsZS5nZXQoKTsK
IAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcgKzExNTgsNyBA
QCBzdGF0aWMgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RFZGl0aW5nUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxp
bmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIENTU1By
b3BlcnR5T3ZlcnJpZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJvcGVydGllc1Rv
SW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21SdWxlcyA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5saW5lU3R5bGUo
KSkKQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJv
bVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFRo
ZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3QgcmVmbGVjdCB0
aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6IHN0eWxlPSJo
ZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAgICAvLyBGSVhN
RTogVGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTE5NTEy
Mz4gU2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVmUHRyPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgY29tcHV0
ZWRTdHlsZSgmZWxlbWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBtX211
dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21wdXRlZFN0eWxl
KTsKKyAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoZnJvbUNv
bXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5T
dHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20s
IE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9p
ZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVt
ZW50JiBlbGVtZW50LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRp
ZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMpOwogCiAgICAg
Ly8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92ZXJyaWRkZW4g
YnkgbWF0Y2hlZCBydWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRlZFN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4
dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVkU3R5bGUtPm1f
bXV0YWJsZVN0eWxlKSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKQogICAg
ICAgICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAgLTE4MDIsNyAr
MTgwMiw3IEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0
UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVy
dGllcywgVCYgYmFzZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHJlc3VsdCA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQ
cm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGJhc2VT
dHlsZSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVjZGZjM2M5N2Q4
YjNkMy4uNTlhNGI4MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBFZGl0b3I6OnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246Okxl
ZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5
bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlv
bik7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBFZGl0
QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVjdGlvbiBFZGl0
b3I6OmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdApAQCAtMjAy
Myw4ICsyMDIzLDggQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAgICAgICAgdW5z
aWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3RhcnQsIGV4dGVu
dE9mZnNldCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihzdGQ6Om1heChz
dGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7Ci0gICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJhc2VOb2Rl
LT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwotICAgICAgICAg
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVkUmFuZ2UuZ2V0
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6Tm8pOwor
ICAgICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+
ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAgICAgICAgICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLnB0cigp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
aW5kZXggNTZjYTViZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4uOWZkYWMxZDYx
MTk1MzhhY2UzZDRiZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
RWRpdEFjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSYg
ZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCiB7Ci0g
ICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0
eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdo
ZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAg
ICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGlu
ZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFn
cmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURP
TVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFw
aFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3Jh
cGhTdHlsZShzdHlsZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVKdXN0aWZ5UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZyYW1lLmVkaXRv
cigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rp
b24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rp
b246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3Jl
YXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENT
U1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgp
LCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0bCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAppbmRl
eCA2ZjUzMjA4ZmU2YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2YzdmZGUyMWRi
YjIwMzRiNTljNWI5NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9pZCBGb3JtYXRC
bG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9z
aXRpb24mIGVuZCwKICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFydC5kZXByZWNh
dGVkTm9kZSgpID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA6IHNw
bGl0VHJlZVRvTm9kZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1NwbGl0VG8pOwog
ICAgIFJlZlB0cjxOb2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91dGVyQmxvY2s7
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCogcmVmTm9kZSA9
IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiByb290ID0gZWRp
dGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVsbCBmb3IgZWxl
bWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290IHx8ICFyZWZO
b2RlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHJl
Zk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFydCkKLSAgICAg
ICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdp
dGhpbigqcmVmTm9kZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVu
ZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFuZ2UuZ2V0KCkp
KQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2VuZGFudE9mKCpy
ZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVudCB0aGF0IG9u
bHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChyZWZOb2RlLT5o
YXNUYWdOYW1lKHRhZ05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVG
b3JtYXRDb21tYW5kLmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1NzQwNWY5NDhi
YWNjYWMyLi40ZWMwYjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKQEAgLTgzLDEz
ICs4MywxMyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIEdl
dCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdzIHRoZSBzdHls
ZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3JlIG9wZXJhdGlu
ZyBvbi4KICAgICBOb2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudCgpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUocm9vdCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVyeXRoaW5nIGJ1
dCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYWNj
ZXNzIHN0eWxlKCkuCiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAKLSAgICBhcHBs
eUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCks
IGRlZmF1bHRTdHlsZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRp
dGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlzRWxlbWVudEZv
clJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHAKaW5kZXggNTAyYmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5MS4uMDQxZjlk
MTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODks
OCArODksNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRp
Y1JhbmdlPj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25z
dAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRl
RnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKm1fcmFuZ2VU
b0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNDgw
NGU5MGE4ZTIyOWNiOTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFhNzFmZmMxZjcx
NTE3NmVhMGY1MzY2YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKEluc2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gZG93bmNh
c3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0gICAgICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
aW5saW5lU3R5bGUpOworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoaW5saW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUpIHsKICAgICAg
ICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAg
VmVjdG9yPFF1YWxpZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2LDcgQEAgc3Rh
dGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNlbWVudEZyYWdt
ZW50JiBmcmFnbWVudCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTm9kZSog
d3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0
eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2VydGlvblBvcyA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Qb3MtPnN0eWxl
KCktPmFzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBhcmlzb24gaXMg
YSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyArODA0LDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJbnNlcnRlZE5v
ZGVzJiBpbnNlcnRlZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4pCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUo
KSk7CiAgICAgQ29udGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVTcGFuLT5wYXJl
bnROb2RlKCk7CiAKICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3aXRoIGEgUGFz
dGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5nIGludG8gYSBx
dW90ZWQgcmVnaW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4Zjg1OGRmNGRi
YzM2YWYzNzgzYi4uN2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4MjM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwCkBAIC0xMjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAg
UmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
bV9yYW5nZVRvQmVDb3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07CisgICAgcmV0
dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9CZUNvcnJlY3Rl
ZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFiNzY4M2FiM2U0
NzJmMWE5ZjM1N2FkNzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1MTQwYzUyMGU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtMzM3LDggKzMzNyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgIGlmIChp
blNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+
ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVy
IG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUg
ZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQg
dG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBt
X3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRPZmZzZXQgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1cnJlbnRFbmRP
ZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UucHRyKCkp
OwogICAgICAgICAgICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGN1cnJlbnRTdGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAgLTM5Nyw4ICsz
OTcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9u
KSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xv
Y2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZp
cnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBh
cmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdy
YXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVs
bGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFz
UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJhZ3JhcGhPZmZz
ZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIo
KS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQg
Kz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigp
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxs
aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IHNw
ZWxsaW5nT2Zmc2V0OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQg
PSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChw
YXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
ICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2N2Y4ODVlYWI1
ZWRjYTk4YTIyY2U1YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUxMWZkZjRkOTk4
YTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0yNjUs
OCArMjY1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlw
ZSk7Ci0gICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgKmNtZCwgc2Vs
ZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRvIGNtZCA9IFR5
cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9u
cywgY29tcG9zaXRpb25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1l
LmdldCgpLCBjbWQuZ2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlv
bik7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBk
b2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJvb2wgVHlwaW5n
Q29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFu
ZFR5cGUsIFRleHRHCiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElu
cHV0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmco
KnRoaXMsIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpKTsK
IAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3Jl
YXRlRnJvbVJhbmdlKCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFw
cGx5RWRpdGluZygqdGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1cm4gZnJhbWUo
KS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpjcmVh
dGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdB
ZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFR5cGlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAzOTUwMzYxYmJh
ZDU5MTRkZGRkMzIzNDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0MWZhZWNlNTBk
NzE5Yzk2MmNkZmFjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CkBAIC0xODkzLDEwICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvCiAgICAgYm9v
bCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11c3QgY29tZSBm
aXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1
bWVudCgpLAorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50
KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhlciA6IHZwKSk7
Ci0gICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQo
KSk7CisgICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5w
dHIoKSk7CiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDogZGlzdGFuY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXgg
NWNjZjQ0NjI0MDk2ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2ZmExYWM0YTli
NjljODVmMDk2NmJhMjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQo
KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApp
bmRleCA3NWY1NGExMzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4yYzRiNjBkMDE0
MzMxMTE1Y2I5MTJjNzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCArNjcsOCBAQCB2
b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQqIHJvb3QgPSBh
ZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklYTUU6IEFkZCB0
aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUgcmVzdWx0cyBh
cmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3JzLgotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVw
RXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0VuZCA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICop
cm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgZW5kSW5k
ZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCksIHRydWUpOwog
ICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAKICAgICBpZiAo
c3RhcnRJbmRleCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
aW5kZXggZjM3ZmRlN2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4uMjMwZjVlM2I0
MTczMmIxZTYyODQ1MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgIC8vIElmIHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVudCwgZmxpcCBs
ZWZ0LT5yaWdodCBhbmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwgZG8gbm90aGlu
Zy4KIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0
eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KSk7CisgICAgYXV0byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVj
dGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGlmICghc2Vs
ZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzgsMTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5
bGUoc3R5bGUuZ2V0KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkpOwog
fQogCiB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IG1vZGlmeSBi
eSBhcHBseWluZyB0aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2ZyYW1lLmRvY3Vt
ZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCktPm11dGFibGVD
b3B5KCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVmYXVsdFN0eWxl
ID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRl
eHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9w
ZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3Zl
VW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBsZW1lbnRzIHVu
ZGVybGluZQogCiAgICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3RseWUgPHJkYXI6
Ly9wcm9ibGVtLzkxNTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRjaCBzdHlsZSBz
aG91bGQgc2F5ICJVbmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihk
ZWZhdWx0U3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMpOworICAgIGFw
cGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rpb246OkNoYW5n
ZUF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVs
ZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdlKQpA
QCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAgICBQb3NpdGlv
biBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24oJmltYWdlRWxl
bWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVmUHRyPFJhbmdl
PiBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVm
b3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGllbnQoKS0+Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBwYXN0ZWJvYXJk
SW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKKyAgICBhdXRv
IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBiZWZv
cmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVudCgpLT5nZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBhc3RlYm9hcmRJ
bWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwogCiAgICAgcGFz
dGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3ZTc5YmUxZDY5
MmYyNWYuLjNmZTZmNGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lk
IEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcihtX2ZyYW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNo
b3IpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90
U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
IApAQCAtMTc2LDkgKzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJv
YXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxhaW5UZXh0Owot
ICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJv
bVBhc3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsK
KyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZy
b21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9zZVBsYWluVGV4
dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KCpub2RlLCAq
ZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCBy
YW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAgICBpZiAoc2hv
dWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9ySW5zZXJ0QWN0
aW9uOjpQYXN0ZWQpKQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVh
c2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBm
YWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7CiAgICAgfQog
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFn
ZUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYxYWFiZGExOTgz
NC4uNTc0NzIwZTc0MzNiM2FlNzI5ZDNkNDNjM2MxNWZhNDI0MzYzNmQ1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUmIG5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEhU
TUxFbGVtZW50Pihub2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0byBzdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAgICAgc3R5bGUt
Pm1lcmdlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7CiAgICAgcmV0dXJuIHN0eWxlOwogfQpAQCAt
MTIxMSw4ICsxMjExLDggQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gQmFz
ZWQgb24gdGhlIGRvY3VtZW50YXRpb24gSSBjYW4gZmluZCwgaXQgbG9va3MgbGlrZSB3ZSB3YW50
IHRvIHN0YXJ0IHBhcnNpbmcgdGhlIGZyYWdtZW50IGluIHRoZSBJbkJvZHkgaW5zZXJ0aW9uIG1v
ZGUuCiAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWwgb2YgdGhlIHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBo
ZXJlIGJ5IHBhc3NpbmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUg
ZnJhZ21lbnQuCi0gICAgICAgIFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGZha2VCb2R5ID0gSFRN
TEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNl
SFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LmdldCgpKTsKKyAgICAgICAgYXV0byBmYWtlQm9k
eSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7CisgICAgICAgIGZyYWdtZW50
LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5wdHIoKSk7CiAgICAgfSBlbHNlIGlm
IChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdtZW50LT5wYXJz
ZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAg
ICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmlu
ZGV4IDA0MzQxMjkwMmE0MGZlNDE3MWI3NjUyZDk4YjBhM2UyZTI4ZDUxNTcuLjg5NzE1NWExMjI5
MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtMjE3LDkgKzIxNyw3IEBAIHZvaWQgRmlsZVJlYWRl
ckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykK
IHsKICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMgPiBtX2J5dGVzTG9h
ZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9IG1fcmF3RGF0YS0+
c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7Ci0KLSAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsK
KyAgICAgICAgbV9yYXdEYXRhID0gbV9yYXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsK
ICAgICAgICAgbV90b3RhbEJ5dGVzID0gbV9ieXRlc0xvYWRlZDsKICAgICB9CiAgICAgY2xlYW51
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRl
eCBkN2UyYjc1YTQ1MzEyMGIwMmQ3Yzc0MmQ0NjBmNDZhNGRkNTk5NDhlLi5kNzgxMTBjYzllZGI5
ZGEwMDRkNDE1ODRhYzQ5ZGJhZTAwMjRlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRlRQRGlyZWN0
b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlu
cHV0TGluZSkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAwZGNjODg5MDUwNjNkMmViMjcwOWU2MmUzNGU5NWVhMDczYjI4
OGE0Li4xODEwZTcyNWUxODM0OWFiMzY2NTY4ZWUxODUwY2RiYmJlZjk5ZjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdl
ZChjb25zdCBNZWRpYVBsYXllciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBSZWZQdHI8RXZlbnQ+
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cyk7CiAKICAgICAvLyBEb24ndCBzZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVl
IHdpbGwgc2V0IGl0IGluIEdlbmVyaWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5n
IGl0IGhlcmUKICAgICAvLyB3aWxsIHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBo
YXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLgpAQCAtNjQ0NSw3ICs2NDQ1LDcgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoaGFzTWVkaWFD
b250cm9scygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xzPiBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOwor
ICAgIGF1dG8gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgp
KTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggZmY5NmY0ZjI0MzViMDk4
ZTA2NjYyZjMzY2MyMDVlMDAwYjM3OTE2ZC4uMmE2YTljNjEyMTQ1NGYzMjYxMTM2ZDE1OGU4ZjU5
ZTA5YmUxNGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBA
IC00NzMsOSArNDczLDkgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxl
RWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAK
LVJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENl
bGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVT
aGFyZWRDZWxsU3R5bGUoKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIAogICAgIGF1dG8mIGNzc1ZhbHVl
UG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgc3dpdGNoIChjZWxsQm9yZGVy
cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1ZjI3
Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgyNWUz
YmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5o
CkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsKIAot
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAg
IFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAgSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRp
bHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4zYThk
NTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGls
cy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29uc3QK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBjb25z
dAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRl
eCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUzYjE1
OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAg
UmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9y
RmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1s
I2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJEb2N1
bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRlVGVt
cGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2Fs
TmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZv
cm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0ZUVs
ZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVsZW1l
bnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3RvbUVs
ZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAgICAg
aWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUwYjU4
NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdjMjZj
MWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIuIE5v
dGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVlZHMg
dGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4g
U2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBu
dWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUgcmVu
ZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7Cisg
ICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1
dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5zZXRG
bGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJmOTJj
Y2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJkODll
NWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAt
NTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6Y3Jl
YXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZUVFBh
cnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3VlID0g
V2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRhOjpj
cmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwogICAg
IGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRlbnQo
bV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVudElk
KTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1fY3Vl
bGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2NDNm
ZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMxZTM5
MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUqPiBE
T01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1
cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5nKCk7
CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFnbWVu
dCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBE
b2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVudCA9
IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1bWVu
dC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1cCwg
bm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNlcHRp
b25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3Qg
U3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnROb2Rl
LCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxsIGJh
Y2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRvci5y
ZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVudC5n
ZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRiMjU3
MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNlMGRl
YWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29y
ZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAgICBp
ZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAgIGF1
dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250
ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNrKCkp
IHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJyYXko
c3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZpbmVU
cmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNl
dERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQuZ2xv
YmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMK
ICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpKSB7
CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2UgPSBk
b3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywgd2Vi
R0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0
cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1
dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+
c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNpbCk7
CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNw
ZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rpb24t
PmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRlbShX
VEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gdHJh
Y2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVu
dFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJhY2Up
KSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpT
RXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1h
eENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZvckRh
dGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBjMzg4
N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApA
QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3Bl
bkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUg
PSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNvcmU6
OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1
ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2MGJk
OTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwog
ICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVtKGkp
KTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAgICAg
IGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAuc2V0
VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC02
OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3Rp
dmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVmKCkp
OwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5
TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZp
b3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29w
eVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQobmFt
ZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5z
dXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
bmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0byBu
ZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRvIHJ1
bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+
KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JE
b2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNo
ZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHls
ZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKLSAg
ICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVl
dC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENTU1Bh
cnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0cigp
LCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRTdHls
ZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsKICAg
ICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQuLmNh
ZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3Bw
CkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRl
Q2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNvbnRl
eHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRl
eHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52
YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3RvckNh
bnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRpZmll
clRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgaW5z
cGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRp
ZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAgICAg
aWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29yZGlu
Z09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5mcmFt
ZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAgICAg
ICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09wdGlv
bnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdURk1v
dmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1YzlhMzFk
NGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApA
QCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAgcmV0
dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVsZWFz
ZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBTdHJp
bmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBhdGg6
OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CisgICAg
ICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlw
ZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJpbmcp
OwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAgICAg
ICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBrZXlQ
YXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSkucmVs
ZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBl
KEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldEFy
cmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdkNS4u
YzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJh
bWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBu
b3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRmNmE2
NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1OTcz
NzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0z
ODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBzdHJ1
Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2Ug
ewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJl
YSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFs
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAg
ICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYp
IGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAg
ICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07CiAK
IGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29udGVu
dFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGllbnQ6
OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZkZGFl
Li5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAgICBp
ZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAgICAg
IGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhy
ZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZlcnJl
ck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCkudG9w
KCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0aW9u
c1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1l
SG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLnRy
ZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewpA
QCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3Vt
ZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShp
dGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVm
ZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAgICBh
ZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUx
ZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhjNDdk
ZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlN
b2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVl
SWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBt
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNs
aWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAgIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVk
OwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRl
cm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJHbG9i
YWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4NmRm
NzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VU
b0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUgPSBN
SFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hpdmU6
OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsKLSAg
ICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZNb3Zl
KHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmluZyYg
ZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LCBi
b29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFy
eS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5j
b2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhl
IE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBp
dCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUg
YW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVlOTdi
MmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZiNTQ1
ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgog
Ci0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNl
c3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2UtPmFk
ZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXRE
ZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4LDcg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5k
KCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJlc291
cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAgICAg
ICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAgICAg
ICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2ViNTE1
NjIyN2I2YTk3ZGUyLi42ODk5NGFjY2JkYmRiZGI1NGNhYjUxYmI0MzNjOGZmNjRkNGJhMzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQdHI8
Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUtPnNl
dHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKTsK
IAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxl
TGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAgICAg
aWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIyNDUsNyArMjI0NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUg
bG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCiAg
ICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSBy
ZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQ
dHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3RpdmVGcmFtZSwg
b3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBj
cmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICByZXR1cm4gUmVm
UHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDZkMTQxZWFmZGFmYWNhNzIzNzhhMWUzNGNjOWI4ZWViMjUzMWMxZDMuLjUxYmE4OTFm
ZTE3MzMzOTZiN2U4MGY3OWU4MTAxYjE3MWNlODllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0Ugog
CiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBv
c2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
c3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFy
dCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIo
KSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGFjNDBiODBlMmM5NThhN2Y2ZmE3YmU1NjNiOTgwN2NlMWUyM2Fj
MDkuLjNhNDY4YjZjNDZlMTM4NzQwZjFiNjhmZDA0MzlmYjMyODUzODNkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5
bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZp
bmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0
aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQg
d2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CmluZGV4IGI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQuLmI0MjhlNTIy
MWFmZTFiMmI3NGQwMmYxYWQ0ZjJiMjU5MGFkNjUwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE5MSwx
MSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGlkZW50
aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IFdURk1vdmUo
aWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IFdU
Rk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4ODAwZTczODE2
NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjBkYTY0NzJlMGY4MTYyNDA4MDhhZTJhZTQxZTc5ZjVjMzNi
NGIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgRnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5
bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWRE
b2N1bWVudCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRv
IGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMs
IHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0
aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9N
V2luZG93KCk7CiAgICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOwpAQCAtNjI5LDE2ICs2MjksMTYg
QEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QK
ICAgICAgICAgZm9yIChhdXRvKiBtYXJrZXIgOiBkb2N1bWVudCgpLT5tYXJrZXJzKCkubWFya2Vy
c0Zvcigqbm9kZSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXMpKSB7CiAgICAgICAgICAgICAvLyBGaXJzdCwgYWRkIHRleHQgdGhhdCBwcmVjZWRlIHRoZSBt
YXJrZXIuCiAgICAgICAgICAgICBpZiAocHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24gIT0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHByZWNlZGluZ1RleHRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uLCBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSk7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIHByZWNlZGluZ1RleHQgPSBwbGFpblRleHQocHJlY2VkaW5nVGV4
dFJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHByZWNlZGluZ1RleHRSYW5nZSA9
IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uLCBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSk7
CisgICAgICAgICAgICAgICAgU3RyaW5nIHByZWNlZGluZ1RleHQgPSBwbGFpblRleHQocHJlY2Vk
aW5nVGV4dFJhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByZWNlZGluZ1RleHQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRp
b24gOiBpbnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoaW50
ZXJwcmV0YXRpb24sIHByZWNlZGluZ1RleHQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvck1hcmtlciA9IFJhbmdl
OjpjcmVhdGUoKmRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwg
bWFya2VyLT5lbmRPZmZzZXQoKSkpOwotICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9y
TWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyLmdldCgpKTsKKyAgICAgICAgICAgIGF1
dG8gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwgY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsKKyAgICAgICAg
ICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5nZUZvck1hcmtl
ci5wdHIoKSk7CiAgICAgICAgICAgICBzaXplX3QgaW50ZXJwcmV0YXRpb25zQ291bnRGb3JDdXJy
ZW50TWFya2VyID0gbWFya2VyLT5hbHRlcm5hdGl2ZXMoKS5zaXplKCkgKyAxOwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnRlcnByZXRhdGlvbnNDb3VudDsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRleHQgZm9yIHRoZSBpdGggaW50ZXJwcmV0YXRp
b24uIEl0IHdpbGwgZWl0aGVyIGJlIHRoZSB2aXNpYmxlIHRleHQsIG9yIG9uZSBvZiBpdHMKQEAg
LTY1OCw4ICs2NTgsOCBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVu
dFJvb3QoKSBjb25zdAogICAgIH0KIAogICAgIC8vIEZpbmFsbHksIGFkZCBhbnkgdGV4dCBhZnRl
ciB0aGUgbGFzdCBtYXJrZXIuCi0gICAgUmVmUHRyPFJhbmdlPiBhZnRlckxhc3RNYXJrZXJSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9u
LCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocm9vdCwgcm9vdENoaWxkQ291bnQpKTsKLSAg
ICBTdHJpbmcgdGV4dEFmdGVyTGFzdE1hcmtlciA9IHBsYWluVGV4dChhZnRlckxhc3RNYXJrZXJS
YW5nZS5nZXQoKSk7CisgICAgYXV0byBhZnRlckxhc3RNYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVh
dGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uLCBjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24ocm9vdCwgcm9vdENoaWxkQ291bnQpKTsKKyAgICBTdHJpbmcgdGV4dEFm
dGVyTGFzdE1hcmtlciA9IHBsYWluVGV4dChhZnRlckxhc3RNYXJrZXJSYW5nZS5wdHIoKSk7CiAg
ICAgaWYgKCF0ZXh0QWZ0ZXJMYXN0TWFya2VyLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1
dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQogICAgICAgICAgICAgYXBwZW5k
KGludGVycHJldGF0aW9uLCB0ZXh0QWZ0ZXJMYXN0TWFya2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IGYzNDA5
ZmEyZWY1MGUwZTZkMTYwZWRmOTUzODBhYzkyMWIxNWYwZDAuLmM5NmJlZDEwODY5ZjY3NWRiZjUx
NDVmOWYzZTBmNDEyM2YwMmZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtMTU2LDggKzE1Niw4IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4oKQogICAgIFthbmlt
YXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07CiAgICAgW2FuaW1hdGlvbiBzZXRU
b1ZhbHVlOkAxXTsKIAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBwbGF0Zm9ybUFu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7Ci0gICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5
ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCAqcGxhdGZvcm1Bbmlt
YXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodEluIiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwogfQogCiB2b2lkIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCkBAIC0xNzQsOCArMTc0
LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQo
KQogICAgICAgICByZXRhaW5lZFNlbGYtPmRpZEZpbmlzaEZhZGVPdXRBbmltYXRpb24oKTsKICAg
ICB9XTsKIAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBwbGF0Zm9ybUFuaW1hdGlv
biA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Ci0g
ICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+
YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgKnBsYXRmb3JtQW5pbWF0aW9u
KTsKKyAgICBhdXRvIHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+
KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdo
bGlnaHRPdXQiLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7CiAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5k
ZXggOWYxOWNmZWYzYmJlNTAwOTQ4ZjUyYTUwMDg5ZDM3ODU5YjcxM2UyMy4uNDZmYzgxMWNjMzUz
MzVlOWQzYWZhNmRiYjMzZWY5MTljMmQ2MGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
U2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiAKIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2Yo
Y2hhcikpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsK
ICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlci4gUmVxdWVz
dGVkIHNpemUgd2FzICV6dSB4ICVsdVxuIiwgc2l6ZSgpLCBzaXplb2YoY2hhcikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHAKaW5kZXggZjY1Y2RlM2MxYWZmNDVmNjZkNWYyMjM2MzY3MTkyZjBjYjMw
N2EwNy4uOWU3MWFlOWY3NDdlOThiOTU2YTBjMGM1YjA0ODlkYjNiODlkZWQyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTE3MSw4
ICsxNzEsOCBAQCBib29sIEhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRo
RWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0aQogICAgIC8vIChoYXJkd2FyZSkgc2Ft
cGxlLXJhdGUuCiAgICAgdW5zaWduZWQgc3RhcnRGcmFtZSA9IGluZGV4ICogUmVzcG9uc2VGcmFt
ZVNpemU7CiAgICAgdW5zaWduZWQgc3RvcEZyYW1lID0gc3RhcnRGcmFtZSArIFJlc3BvbnNlRnJh
bWVTaXplOwotICAgIFJlZlB0cjxBdWRpb0J1cz4gcHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3Bv
bnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShidXMsIHN0YXJ0RnJhbWUsIHN0
b3BGcmFtZSk7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiByZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVh
dGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZS5n
ZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUpOworICAgIGF1dG8gcHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShidXMsIHN0YXJ0RnJh
bWUsIHN0b3BGcmFtZSk7CisgICAgYXV0byByZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCeVNh
bXBsZVJhdGVDb252ZXJ0aW5nKHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZS5nZXQoKSwg
ZmFsc2UsIHNhbXBsZVJhdGUpOwogICAgIEF1ZGlvQ2hhbm5lbCogbGVmdEVhckltcHVsc2VSZXNw
b25zZSA9IHJlc3BvbnNlLT5jaGFubmVsKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCk7CiAgICAgQXVk
aW9DaGFubmVsKiByaWdodEVhckltcHVsc2VSZXNwb25zZSA9IHJlc3BvbnNlLT5jaGFubmVsKEF1
ZGlvQnVzOjpDaGFubmVsUmlnaHQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggZTc5ZDZjMThkZWI5YTA3MDQ1YWY1Njll
NzQ1MGRlMTJkNDcwYzg0YS4uODk3N2YzOTg2OWQ2YjY1MDI2NDM1NDRmNDFkMmI2ZGEzODdhZTk3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5j
cHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVTb3VyY2Uo
ZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICAvLyBXcmFwIHRoZSBwcm92aWRlZCBidWZmZXIgYnkgYW4gQXVkaW9C
dXMgZm9yIHVzZSBieSB0aGUgc291cmNlIHByb3ZpZGVyLgotICAgIFJlZlB0cjxBdWRpb0J1cz4g
YnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlNvdXJjZUZyYW1lcywgZmFsc2UpOwor
ICAgIGF1dG8gYnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlNvdXJjZUZyYW1lcywg
ZmFsc2UpOwogCiAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gbWFrZSB0aGUgZm9sbG93aW5n
IGNvbnN0LWNvcnJlY3Q6CiAgICAgYnVzLT5zZXRDaGFubmVsTWVtb3J5KDAsIGJ1ZmZlciwgbnVt
YmVyT2ZTb3VyY2VGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cAppbmRleCBiOTEyMDc3M2RkNTEwMTVjMTYyNzg0Y2QyNzE4MDkwNzY4ZWZiN2Q2Li5jZGUzMGE4
YThiMjBkNTVjYjU0ZDJmODk1M2ZlOWY0YmFhOWE1YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIFJlZlB0cjxBdWRpb0J1cz4g
QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01v
bm8pCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShtX2NoYW5u
ZWxzLCBtX2NoYW5uZWxTaXplLCB0cnVlKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZShtX2NoYW5uZWxzLCBtX2NoYW5uZWxTaXplLCB0cnVlKTsKICAgICBhdWRpb0J1cy0+
c2V0U2FtcGxlUmF0ZShtX3NhbXBsZVJhdGUpOwogCiAgICAgY29weUdzdHJlYW1lckJ1ZmZlcnNU
b0F1ZGlvQ2hhbm5lbChtX2Zyb250TGVmdEJ1ZmZlcnMuZ2V0KCksIGF1ZGlvQnVzLT5jaGFubmVs
KDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0ZpbGVSZWFkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRmlsZVJlYWRlck1hYy5jcHAKaW5kZXggMmFmNTE4Yjk2MjQ4MjViMGI0YzcxNDRlYmU0NDZl
NWMxMjRiMWM2Ny4uZGMxNDQxMTVhYzI5NmU4MmYzM2JlOWMyZGYyMzA0YTJiOGE2MjExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmls
ZVJlYWRlck1hYy5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQog
ICAgIHNpemVfdCBidXNDaGFubmVsQ291bnQgPSBtaXhUb01vbm8gPyAxIDogbnVtYmVyT2ZDaGFu
bmVsczsKIAogICAgIC8vIENyZWF0ZSBBdWRpb0J1cyB3aGVyZSB3ZSdsbCBwdXQgdGhlIFBDTSBh
dWRpbyBkYXRhCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVh
dGUoYnVzQ2hhbm5lbENvdW50LCBudW1iZXJPZkZyYW1lcyk7CisgICAgYXV0byBhdWRpb0J1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUoYnVzQ2hhbm5lbENvdW50LCBudW1iZXJPZkZyYW1lcyk7CiAgICAg
YXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobmFycm93UHJlY2lzaW9uVG9GbG9hdChtX2NsaWVudERh
dGFGb3JtYXQubVNhbXBsZVJhdGUpKTsgLy8gc2F2ZSBmb3IgbGF0ZXIKIAogICAgIC8vIE9ubHkg
YWxsb2NhdGVkIGluIHRoZSBtaXhUb01vbm8gY2FzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oCmluZGV4IDFmZGZlY2RhNzFjNjA0YzA5NTExNWQ1NWQ1NTQzM2ViMGQ2ZjMz
ZTQuLjE2MjgxMTJhMWMwYjdlNTBiNDA0Y2ZkMjYzNGZkNmMyNTRmY2IxMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSWNv
biA6IHB1YmxpYyBSZWZDb3VudGVkPEljb24+IHsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0YXRp
YyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
SWNvbihoSWNvbikpOyB9CisgICAgc3RhdGljIFJlZjxJY29uPiBjcmVhdGUoSElDT04gaEljb24p
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKaW5kZXggMzhiNTE5MWM2MjA4NDJl
ZDBhZmRjN2IwNmRlZTEwOWVkMmRmMjlhOC4uMTNmMTg3ODkzYjQ0MGZmYjU4ZDNiZWIxZjYzZjRi
NGQyMTNiNTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIFRyYWNrUHJpdmF0ZUJhc2UgewogICAgICAg
ICBHZW5lcmljLAogICAgICAgICBXZWJWVFQKICAgICB9OwotICAgIHN0YXRpYyBSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKGZvcm1hdCkpOyB9CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKGZvcm1hdCkpOyB9CiAg
ICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIElu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY2xpZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBiOGNiODUwNmI5OTg3ZmIwNTJh
Y2U5ODE0ZGUzYmZhNmMxMGRkNjk0Li5hOTM1NTAwMzg5YWJkYjNkMTRlNzZlZDg3ZDMzZGE0NzNh
NmY2MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE4OTEsOCArMTg5MSw4IEBAIGJvb2wgQVZG
V3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RSCiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBm
b2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5
VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtl
eVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAx
KTsKLSAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0
YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFWaWV3
ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5p
dERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVp
bnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVlKTsKIAogICAgICAgICBhdXRvIGtleVVSSUFycmF5
ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVS
SS5sZW5ndGgoKSk7CkBAIC0xOTA4LDcgKzE5MDgsNyBAQCBib29sIEFWRldyYXBwZXI6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UgogICAgIH0KICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI+
IHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3du
ZXIsIGF2UmVxdWVzdCk7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOwogICAgIG1fb3duZXItPm1f
cmVzb3VyY2VMb2FkZXJNYXAuYWRkKGF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIpOwogICAgIHJl
c291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCmluZGV4IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjEx
YTkuLjFhNGIxODFhYWNiODk2MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaApAQCAtMzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFs
IDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZB
c3NldFRyYWNrICp0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAg
ICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUo
QVZBc3NldFRyYWNrICp0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggZDA1Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4u
MzEwNzgwYzNhY2FiZDgxNTU1YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVz
dFdpdGhLZXlEYXRhKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgog
CiAgICAgICAgIEFTU0VSVChzdGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KTsKICAgICAgICAgQVNTRVJUKGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0
YS0+c2xpY2Uoc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7
CisgICAgICAgIGF1dG8gcmVxdWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19j
YXN0PGludD4oc3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
OnJlcXVlc3RlZEtleURhdGEtPmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxl
bmd0aCgpXSk7CiAgICAgICAgIFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdl
dCgpXTsKICAgICB9CkBAIC0xODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0
UgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywg
YXZSZXF1ZXN0KTsKLSAgICBtX3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBl
UmVmKWF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIg
PSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAg
IG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCBy
ZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRp
bmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5
ZWIzYzQzNThjY2E0ZjJiZDFhLi4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgx
ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjsKIAogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVNvdXJjZVByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyosIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyosIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyogcGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGUwODRjOTBkNWZkNzdlNjZlYmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2
NWYxMWY3YTUwN2UwODg5MmVkOTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQwogCi1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyogcGFyZW50LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1Jl
ZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDPiBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0
ZUFuZE9wZW4oKm1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZh
dGUgPSBhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGll
bnQpKTsKKyAgICBjbGllbnQtPnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5j
b3B5UmVmKCkpOwogICAgIHJldHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcg
Kzc2LDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIG5ld1NvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5n
ZXQoKSk7CiAjZW5kaWYKLSAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91
dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVy
cy5hcHBlbmQoV1RGTW92ZShuZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
CmluZGV4IDgzMDBkYzNiNmUzOWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIz
NGI5YjVhMGFkZThjMjc1NDdhNDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBA
QCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3Mg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJp
dmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVm
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQyopOwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAg
ICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCmluZGV4IGE5OWZlYjdmNjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2
MzY2MGQ5YWVkY2M4OWU2YjUyMzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyAr
NDMwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayog
dHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFj
aykpOyB9CisgICAgc3RhdGljIFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakModHJhY2spKTsgfQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KCkgeyB9CiAKICAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NvZGVjOyB9CkBAIC00ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29u
c3VtZWRDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QK
ICAgICAgICAgc291cmNlQnVmZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpj
cmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0
KiBhc3NldCkKIAogICAgICAgICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZN
ZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24g
aW5mbzsKLSAgICAgICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQz4gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7
Ci0gICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAg
ICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJh
Y2suY29weVJlZigpOworICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2
aWRlb1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJh
Y2tzLmFwcGVuZChpbmZvKTsKICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1Ry
YWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFj
ayA9IGF1ZGlvVHJhY2s7Ci0gICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1Ry
YWNrKTsKKyAgICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50
cmFjayA9IGF1ZGlvVHJhY2suY29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5h
cHBlbmQoV1RGTW92ZShhdWRpb1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9u
ID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBz
ZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKaW5kZXggZjQ1NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4u
NWRkN2U2MjMwZmU4ZTA1YjRmZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBw
dWJsaWMgVmlkZW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0
VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0
YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFz
c2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAg
ICB9CiAKICAgICBib29sIHNlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5k
ZXggODBjZmM0ZmFjMzQ1YzkyZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIx
MjNhZWIzNDZlYTM5MmFlMDQzODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcy
NCw5IEBAIGludCBUaWxlQ29udHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAg
cmV0dXJuIChtX21hcmdpblNpemUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQo
KS5zY2FsZSgpOwogfQogCi1SZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6
Y3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkK
K1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29u
c3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IGxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxh
eWVyT3JUYWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdU
aWxlTGF5ZXIsICZncmlkLCB0aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3Rp
bGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0
LnNpemUoKSk7CiAKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwog
ICAgIGxheWVyLT5zZXRQb3NpdGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4
IGFlMTliOGM1MTcxZmQ1NzQxYTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5
MDA1MTY1MjBkNWEwNjc1MjBhYzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBA
IGNsYXNzIFRpbGVDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAg
ICB2b2lkIHVwZGF0ZVRpbGVDb3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJl
ZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdy
aWQmKTsKIAogICAgIGNvbnN0IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICpt
X3RpbGVHcmlkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3
OGQxZDczNWNlNDkxYjNhZGE5YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1
NWExZDliNmVlMDgxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEw
Niw3IEBAIGJvb2wgQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFp
bGFibGUoKQogICAgICAgICByZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxD
QUNGTGF5ZXJUcmVlSG9zdD4gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGhvc3QgPSBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhv
c3QpIHsKICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAg
ICBpZiAoIWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmll
d0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpjcmVhdGUoKTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1t
CmluZGV4IDQwNmUwODVmZmYxZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRi
ZTE0Mjk1MzgxYjQzMzI1YzBjYzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwu
bW0KQEAgLTU1LDExICs1NSwxMSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2Ny
aXB0b3Iuc2l6ZSwgW10gKHZvaWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXpl
LCBbXSAodm9pZCogcHRyKSB7CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBwdHIpOwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAg
ICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOwor
ICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7
CiAgICAgLy8gRklYTUU6IERlZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxh
dGZvcm1CdWZmZXJTbWFydFB0ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1E
ZXZpY2UoKQogICAgICAgICBuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRh
dGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA5NDc2OGRjMWE5MmEyZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdm
YTExZjdhNThkZWZmNGE5ODI0MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JF
QVRFX1RSQUNLKHZpZGVvLCBWaWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NU
UkVBTV9UWVBFX1RFWFQgJiYgIXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQotICAgICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFj
a0luZGV4KyssIHN0cmVhbSk7Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlk
LCB0cmFjayk7Ci0gICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7Cisg
ICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFj
a3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXIt
PmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBHU1RfV0FSTklORygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0g
JXMiLCBzdHJlYW1JZC51dGY4KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAg
ICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJh
Y2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFj
aygqdHJhY2spOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29w
eVJlZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwog
ICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsK
QEAgLTk2OCw3ICs5NjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZBdWRpbygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAg
IGF1dG8gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFr
UHRyKCp0aGlzKSwgaSwgcGFkKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5p
ZCgpKTsKICAgICAgICAgbV9hdWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAg
ICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlKGksIHBhZCk7Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRy
YWNrKTsKLSAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBh
dXRvIHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBh
ZCk7CisgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7
CisgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIHB1cmdlSW52YWxpZFRleHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcg
KzEyOTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAg
ICAgICAgaWYgKGdzdF9pc19taXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAg
ICAgICAgICBpZiAoZ3N0X2luc3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAg
ICAgICAgIFJlZlB0cjxNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxs
YmFjaz4gbWlzc2luZ1BsdWdpbkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zQ2FsbGJhY2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldKHVpbnQzMl90IHJlc3VsdCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2smIG1pc3NpbmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1
dG8gbWlzc2luZ1BsdWdpbkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KHVpbnQzMl90IHJlc3VsdCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
Q2FsbGJhY2smIG1pc3NpbmdQbHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1p
c3NpbmcgcGx1Z2luZyBpbnN0YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3
aXRoIHJlc3VsdCAldSIsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzEzLDEwICsxMzEzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVT
RUQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdp
bkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAg
ICBtX21pc3NpbmdQbHVnaW5DYWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5j
b3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAg
ICAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3Bs
dWdpbl9tZXNzYWdlX2dldF9kZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAg
bV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpm
cm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgp
KSwgKm1pc3NpbmdQbHVnaW5DYWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNs
aWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRh
aWwuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1Bs
dWdpbkNhbGxiYWNrLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJM
RShWSURFT19UUkFDSykgJiYgVVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rp
b24oR3N0TXBlZ3RzU2VjdGlvbiogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3Rz
UE1UU3RyZWFtKiBzdHJlYW0gPSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0q
PihnX3B0cl9hcnJheV9pbmRleChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChz
dHJlYW0tPnN0cmVhbV90eXBlID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgw
KSB7CiAgICAgICAgICAgICAgICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0
cmVhbS0+cGlkKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAg
ICAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1By
aXZhdGU6OkRhdGEsIHBpZCk7CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3Vy
Y2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBu
ZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRl
cm5hbFByb3RvY29sKG5ld1VybCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBh
dXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAg
ICAgIGlmIChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAg
ICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRk
OWJkZGYyYjc3ODM4NmNiOWI2MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2Zk
YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAg
ICAgaWYgKG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRp
b25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3Zp
ZGVvU291cmNlT3JpZW50YXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJ
bWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAg
YXV0byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQo
KSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4
MGFkODMxMDguLmQwOTI5MjBjMjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBB
cHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1w
bGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3Ry
ZWFtZXI+IG1lZGlhU2FtcGxlID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0
ZShXVEZNb3ZlKHNhbXBsZSksIG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBh
dXRvIG1lZGlhU2FtcGxlID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShX
VEZNb3ZlKHNhbXBsZSksIG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdT
VF9UUkFDRSgiYXBwZW5kOiB0cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRh
dGlvblNpemU9JS4wZnglLjBmIiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxp
bmU6OmFwcHNpbmtOZXdTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAg
ICBtZWRpYVNhbXBsZS0+YXBwbHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAg
ICB9CiAKLSAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlh
U2FtcGxlKTsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVk
aWFTYW1wbGUuZ2V0KCkpOwogfQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveC5jcHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRh
YmRiNTQ1ZDA3ZS4uNmU0YjY0ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAK
QEAgLTQ0LDkgKzQ0LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNs
aWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXpl
KDE2KTsKQEAgLTYzLDggKzYwLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNI
ZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAg
ICAgIGF1dG8mIGN1cnJlbnRLZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1
cnJlbnRLZXlJRC5yZXNpemUoMTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1
ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNl
ZEtleUlEKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNl
dCArPSAxNjsKICAgICAgICAgICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRL
ZXlJRC0+ZGF0YSgpLCAxNik7CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBk
YXRhU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1
ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWRE
YXRhKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAK
ICAgICBtX2RhdGEucmVzaXplKGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAK
aW5kZXggNTdhNTY5NGQ1ZWFlMTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNj
YzFiNzYxNzVkOTIzODg2MjZmMTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJv
eC5jcHAKQEAgLTY0LDkgKzY0LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNl
KERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBhdXRvIGtleUlEQnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCAr
IDE2KTsKLSAgICBpZiAoIWtleUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICBvZmZzZXQgKz0gMTY7CiAKICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFh
MjdlYzg0MDZiZTA3NDFmLi4wMWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEg
QEAgc3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBh
c3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRl
bnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJl
c3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9w
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVu
dGl0eU9wKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2
MTFiYjI2ZGM0NDJlMjdjOGYuLjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFk
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtNjAsOSArNjAsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0
dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAg
ICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29u
dGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5y
ZXNldChtX3NpemUpOwotICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJl
KS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8
Qml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUo
bV90ZXh0dXJlSUQpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJh
ZGRkYjJkYTE5MjVhMzUzZjczYmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFm
NGU2ZDJlYzdiMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAg
LTg3LDExICs4NywxMSBAQCBUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6
OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxl
bmRlZE9wZXJhdGlvbikKICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJs
ZW5kZWRPcGVyYXRpb24pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFu
c2Zvcm1PcGVyYXRpb24+IGlkZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElk
ZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9n
cmVzcyA+IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0
b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRp
b24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZy
b21PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZN
b3ZlKGlkZW50aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMw
MTUzYy4uMDZjMGExOWYzMGQzOWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBD
b3B5IG91dCBQTkcgZGF0YSB0byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5H
IGRlY29kZXIuCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5H
IGRlY29kZXIgYWJsZSB0byB0YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+
ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5
Lm1faW1hZ2VPZmZzZXQpKTsKLSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5n
RGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2Rh
dGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNb
aW5kZXhdLT5zZXREYXRhKHBuZ0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQog
CiB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6
ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2My
MzI4OTcxODE0Y2ZmMzg1ZmE2ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2
YjhkMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja0JveC5jcHAKQEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25C
b3g6Ok1vY2tJbml0aWFsaXphdGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qg
b2Zmc2V0ID0gMTY7CiAKICAgICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAg
ICAgICBpZiAoTW9ja0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tC
b3g6OnR5cGUoKSkKKyAgICAgICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQp
OworICAgICAgICBpZiAoTW9ja0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2Nr
VHJhY2tCb3g6OnR5cGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFj
a0JveCB0cmFja0JveChzdWJCdWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJh
Y2tCb3goc3ViQnVmZmVyLnB0cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0
aCgpOwogICAgICAgICBtX3RyYWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUw
MDIyMjc3YTgzMzg3ZWMzN2FmZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJj
ZDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCBSZWY8TWVkaWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlz
cGxheWluZ0NvcHkoKSBjb25zdAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6
IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1v
Y2tNZWRpYURlc2NyaXB0aW9uPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRp
YyBSZWY8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJv
eCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQog
ICAgIHZpcnR1YWwgfk1vY2tNZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRv
bWljU3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsg
fQpAQCAtMTE4LDkgKzExOCw5IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDog
cHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAK
LVJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU+IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291
cmNlUHJpdmF0ZSogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUocGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQp
CkBAIC0xNDIsMTcgKzE0MiwxNyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBl
bmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kU3VjY2VlZGVkOwogCiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJl
c3VsdCA9PSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAg
ICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1f
aW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVf
dCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwg
bV9pbnB1dEJ1ZmZlci5zaXplKCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0Jv
eDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcg
dHlwZSA9IE1vY2tCb3g6OnBlZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0
eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUg
PT0gTW9ja0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0
aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQo
KSk7CisgICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0
aWFsaXphdGlvbkJveChidWZmZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChpbml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1v
Y2tTYW1wbGVCb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVC
b3ggPSBNb2NrU2FtcGxlQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxl
Qm94IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAg
IGRpZFJlY2VpdmVTYW1wbGUoc2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRl
Y2U2YWIzM2I1ZTg3YTUyNzI1MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5
ODI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQx
LDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKik7CisgICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4g
Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZSgpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlh
U291cmNlID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2Yjgz
MGZiZTBiNjAzZmQyZGJhZDBjLi5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIy
MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tUcmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tUcmFja3MuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1By
aXZhdGUgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNr
UHJpdmF0ZSA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPE1vY2tUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNr
Qm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gp
KTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBN
b2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJp
dmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZh
dWx0OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGlj
IEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUg
OiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBz
dGF0aWMgUmVmPE1vY2tWaWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0Jv
eCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gp
KTsgfQogICAgIHZpcnR1YWwgfk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAog
ICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBk
ZTUwNzgzYmZiNDc3MjRiZjU5OTE5YWI2NmY5MWQuLmY2NzdkZDUwMDg5MmI5ZDc5YzZlZmFkOTE1
YmVmMzY2YWUzYzM4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9y
bURhdGE+IGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURh
dGE6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0
cmVhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgK
aW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3
YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZl
ci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2ll
U3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3Jh
Z2VPYnNlcnZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9i
c2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENv
b2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAg
Q29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tp
ZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkx
ODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRiNDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTcz
ODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBA
IC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29v
a2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBD
b29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4g
Q29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2ll
U3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZl
cihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFn
ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsKIH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpD
b29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJj
Y2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRf
dCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNl
RXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4o
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9i
SXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkp
KSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9S
WV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0s
IFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgewor
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2
OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0
YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwx
NCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25E
aWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRp
Y3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAgIHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9u
YXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlw
aGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBo
ZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5h
dGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25zdCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0
aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQ
YXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rp
b25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRp
b25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAgICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlw
aGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZl
NmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNo
UG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1lbnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAg
OiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9wdXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQ
b3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdpbjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4g
bV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4gbV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFy
Y2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmluZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdi
MTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNl
YXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBtX3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+
IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNhYzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uMWQy
MWJkNDhlY2VjOWI1ZjExZDFlNGM4ODIzNDBhNjQ4YTM4NjA4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9yZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwg
UmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9pZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0
eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBE
b2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQg
cGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRlclN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXco
KSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpvb21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBh
ZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsNyAr
OTE3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBjb250ZXh0LnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwotICAgIFJlZlB0cjxHcmFkaWVudD4g
c3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsg
RmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdo
dCAtIDEpIH0pOworICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdy
YWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7CiAgICAgc3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigweGVlLCAweGVlLCAweGVlKSk7CiAgICAgc3Ry
b2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBDb2xvcigweGVlLCAweGVlLCAweGVlKSk7
CkBAIC05MzcsNyArOTM3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jh
cihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91
bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1
cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdo
dCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdo
dCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmlu
Z1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAgICAgdXBwZXJHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7CiAgICAg
dXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEpKTsK
ICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxs
KCkpOwpAQCAtOTQ5LDcgKzk0OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jl
c3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAg
IC8vIDIpIERyYXcgdGhlIHByb2dyZXNzIGJhci4KICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0g
Y2xhbXBUbyhyZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpLCAwLjAsIDEuMCk7CiAgICAgICAgIGRv
dWJsZSBiYXJXaWR0aCA9IHBvc2l0aW9uICogcmVjdC53aWR0aCgpOwotICAgICAgICBSZWZQdHI8
R3JhZGllbnQ+IGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFy
RGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAw
LjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJv
Z3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRp
ZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigxOTUsIDIxNywgMjQ3KSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMTE4LCAxNjQs
IDIyOCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDksIENvbG9yKDEx
OCwgMTY0LCAyMjgpKTsKQEAgLTk1OCw3ICs5NTgsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50
SQogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoNTcsIDE0Miwg
MjQ0KSk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRpZW50LnJlbGVh
c2VOb25OdWxsKCkpOwogCi0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyU3Ryb2tlR3JhZGll
bnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwor
ICAgICAgICBhdXRvIGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
cHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCgwLjAsIENvbG9yKDk1LCAxMDcsIDE4MykpOwogICAgICAgICBiYXJTdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKICAg
ICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQs
IDE2NikpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAg
ICAvLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBl
bGVtZW50J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhl
IGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZv
ciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkp
OwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxz
KSk7CiAKQEAgLTE3NDMsNyArMTc0Myw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYKICAgICBp
ZiAoIWluZm8uaWNvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEltYWdlPiBpY29u
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGF1
dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsK
ICAgICBpZiAoIWljb25JbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uYzI0MWUzMGUzOWU2NTA4YTI5Yjc1NGM4Nzg2YTlkOGY4MGUzYWM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUJs
ZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5w
dXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVz
ZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDUxNWQz
MmZmYmNkN2U1M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjc1MTNhY2U1MTc5MGY4NmQ4ZTlj
ZjhlMGM4MTY0NjI5MDcyMzM5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0
ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBlZmZlY3QtPmlu
cHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cAppbmRleCA1N2ZhZjNiNDYzMDAxOTcwM2UzZDg3YjljMzMyNDMyN2M0N2RiYWIyLi41MmJlOTcx
MmJjNWY2MWFiNDdlMjI2ODAwMGYyYjE5NjgwZjY2OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHQKICAgICAgICAgICAgIGFscGhhID0gZG93bmNh
c3Q8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKS50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQog
ICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwog
ICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5N2IxZGNmODdlMmMyNWY5
YTcuLmQzODU1NzQ3N2MxNjg5YjIxOGFiZGM5ZjBhOTE2M2YxNDk1Y2JiMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGUKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigp
LCBrMygpLCBrNCgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmls
dGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKICAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAg
aW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5k
KGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3ZWNjZGQwNzc3NDlkMjcyNTkyM2QyYmZk
MDQuLjA2N2YxMmNiNzAzOTgyYzdlZDE0Mjg0ZjA0YzYwZDM3YzdlMWQ5YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIENvbG9yIGNvbG9y
ID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXIt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNj
YWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0
TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCA0MzVm
YzcwMWRmNjA3Y2YwYjBiZDk2YWQ3NzFkYjVmZmFmZDQ0ZjUzLi4xNGY3N2Y5ZjZmODgxMzE5NjRi
YjQyZWEyOTVkOTEzN2U2OWNkZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3Bs
YWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNl
bGVjdG9yKCksIHNjYWxlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBz
Y2FsZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAg
ICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNjZjFlZDZhNjQ0M2Y5NTFl
Y2Y0YmI4ZWY4YzU5Yi4uZDU0ZTVmMmI2ODVlOTkzNTc5YWY5NTE5Mzc3NjVmYTM0ZWEzYjFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgaWYgKCFpbnB1dDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERl
dmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOworICAgIGF1dG8gZWZmZWN0
ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggOTMzMTg3
ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uMzIwZjkyMWZlMGFmYmVlMjgyZjRk
Zjc4NzczZGViY2M3ODgxMmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0ZERldmlhdGlvblkoKSA8
IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwg
c3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwg
ZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsK
ICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5jcHAKaW5kZXggNTAyYTk5MTkzYzg5YjBmN2U5MWI4MTE5Yjk2YmY1ZGM4NzQzNWI4OS4uZmI5
MmEzNWU4ZDQ0MDM3OGMyMGMwYzYyNTg1YzdiNWVhOTg0ZDAyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxTVkdGRU1lcmdl
RWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBECiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOwogICAgIEZpbHRlckVm
ZmVjdFZlY3RvciYgbWVyZ2VJbnB1dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogCiAgICAg
Zm9yIChhdXRvJiBtZXJnZU5vZGUgOiBjaGlsZHJlbk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1l
bnQ+KCp0aGlzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCmluZGV4IGZjYmM2M2I2MmU2ZTEwNmViYjVkNTYyMDllM2Y1Mjk5ZDhiMGI2ZmMuLmUz
ZTgxYWZlMWFmN2YxMjZlNGQ5YjA3ZTgwMzljMmU4YWI4ZDg2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwg
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRp
dXMsIHlSYWRpdXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmls
dGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCmluZGV4IDI4MjM2OTg0ZjQxYTViYTJm
YTYyMzUxNmJiZjcwNDFhYWRiZDAyMjIuLmM0MDJlNDAzZWIyYjk0NDM5ODhjOGIwZWE5NDliMzdm
ZDAyNGVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwKICAgICBpZiAoIWlucHV0MSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwgZHkoKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwgZHkoKSk7CiAgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDNhMmY0ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjllNGQ3ZmQ0
MjdmY2IxZDBjMWJiY2VhNDM0NWQ1ZWJlOTVkY2U1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVu
ZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxl
KCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CisgICAgYXV0byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9u
ZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUo
bGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEp
OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5jcHAKaW5kZXggM2YzODc5ZDdlNjZhOGMxZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uYWUw
ZDE5MTk4MDU3YjhmMjQyMmYxYmJmYzUxODBmNTNkMGVhNTRlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaQogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7Cisg
ICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgKaW5kZXggODZkOTU4ZjU3NjA1MWI4MDdlMDUx
YzE1YWVhMGJhNjUxYmI0ZmIxYi4uYWUxMThlZjlkZGZiODA0NzVlM2RmNTQwMzA3NGE1YTdjZDg2
NDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgKQEAgLTM1LDkgKzM1
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHQ09ic2VydmF0aW9uIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8R0NPYnNlcnZhdGlvbj4gewogcHVibGljOgotICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWZQdHI8R0NPYnNlcnZhdGlvbj4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8
R0NPYnNlcnZhdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHQ09ic2VydmF0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ09ic2VydmF0aW9uKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgIH0KIAogICAgIGJvb2wgd2FzQ29sbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fb2JzZXJ2ZWRWYWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCmluZGV4IGE5YjE3NTE5NjkyZWRiM2NkYzZhNGVjZjhmNDM1ZmRmMmMzYjg0NWYu
Ljk5MDE3YWJlYjU5OTMzYzMwZWFjMDJlNjgyYzUyNDZiMjAxN2M5NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWY8RG9jdW1lbnQ+IFhT
TFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZwogICAgICAgICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0LmNvcHlSZWYoKSk7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5cGUpOworICAgIGF1dG8gZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CiAgICAgZGVjb2Rl
ci0+c2V0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcuaXNFbXB0eSgpID8gVVRGOEVuY29kaW5nKCkg
OiBUZXh0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNv
ZGluZ0Zyb21YTUxIZWFkZXIpOwogICAgIHJlc3VsdC0+c2V0RGVjb2RlcihXVEZNb3ZlKGRlY29k
ZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAppbmRleCAxZjI4YThlYmE1OWRmMWU2ZTIxZmNjODc1ZTBmNDkwYmFhNjA4ODVmLi5iNDI1
MGEwMmNlYmY5MGUyYWNjM2VkYjM3NDk4YWE0ODgxODFlZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJp
bmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIFJlZlB0cjxYTUxEb2N1bWVudFBhcnNlcj4gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwor
ICAgIGF1dG8gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29u
dGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgIGJvb2wgd2VsbEZvcm1lZCA9
IHBhcnNlci0+YXBwZW5kRnJhZ21lbnRTb3VyY2UoY2h1bmspOwogICAgIC8vIERvIG5vdCBjYWxs
IGZpbmlzaCgpLiBUaGUgZmluaXNoKCkgYW5kIGRvRW5kKCkgaW1wbGVtZW50YXRpb25zIHRvdWNo
IHRoZSBtYWluIGRvY3VtZW50IGFuZCBsb2FkZXIgYW5kIGNhbiBjYXVzZSBjcmFzaGVzIGluIHRo
ZSBmcmFnbWVudCBjYXNlLgogICAgIHBhcnNlci0+ZGV0YWNoKCk7IC8vIEFsbG93cyB+RG9jdW1l
bnRQYXJzZXIgdG8gYXNzZXJ0IGl0IHdhcyBkZXRhY2hlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA2ZDRhMGVmNGQ2ZGJmZDc2NzMwYzA0ZDc4ZDBiYTVjOWI5Y2VkYjdmLi4zNjZi
OTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4ZGY3NDg0NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBJUEM6OkNvbm5lY3Rp
b24qIGN1cnJlbnRDb25uZWN0aW9uOwogCi1SZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyKQorUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMjFhMDgzODY5Mzg2YzRm
YmY1ZjI4ZDA3ZWQyZGQ2NDQxYzI5NWM1Li4zYTBhN2E4OTc5ZTMzMTdkMzc3MjY4ZjhlNjkwMjRl
YTJkNjJjYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzOwogCiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwg
fldlYlByb2Nlc3NDb25uZWN0aW9uKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCmluZGV4IGI5ZmM4OTUw
ZmEzM2NhNTZmOWE2NTA5ZjZhMmUxYThjMGFmOWRhMTcuLmM3NjQ5NmI3MzEyNDY3YzM2NjA2MmZh
ZWVjNDc3MjY5ZTNhZThjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQpAQCAtMTAzLDggKzEwMyw4IEBAIC0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxXS0Nvbm5lY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIAogLSAodm9pZClzZW5k
TWVzc2FnZVdpdGhOYW1lOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIGJvZHk6KGlkKW1lc3NhZ2VC
b2R5CiB7Ci0gICAgUmVmUHRyPFdlYktpdDo6T2JqQ09iamVjdEdyYXBoPiB3a01lc3NhZ2VCb2R5
ID0gV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZShtZXNzYWdlQm9keSk7Ci0gICAgc2Vs
Zi5fY29ubmVjdGlvbi5wb3N0TWVzc2FnZShtZXNzYWdlTmFtZSwgd2tNZXNzYWdlQm9keS5nZXQo
KSk7CisgICAgYXV0byB3a01lc3NhZ2VCb2R5ID0gV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNy
ZWF0ZShtZXNzYWdlQm9keSk7CisgICAgc2VsZi5fY29ubmVjdGlvbi5wb3N0TWVzc2FnZShtZXNz
YWdlTmFtZSwgd2tNZXNzYWdlQm9keS5wdHIoKSk7CiB9CiAKIC0gKFdlYktpdDo6V2ViQ29ubmVj
dGlvbiYpX2Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGI5YmVkMWRlOTRlZjcxNzZjM2ZlYmRhY2MxN2U0ZGM0ZTFkZWFh
N2YuLjEyYmY1Mzk1ZmZiNzdjN2FiZGRhZjI5MGNkY2ZjYTk2YWY5MTQwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEzNCw3ICsx
MTM0LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY2dJbWFnZSA9IGJpdG1hcCA/IGJpdG1hcC0+bWFrZUNHSW1hZ2UoKSA6IG51bGxw
dHI7CiAgICAgICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlID0gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpIHNpemU6TlNNYWtlU2l6ZShz
bmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodCldKTsKICAgICAgICAgaGFuZGxlcihuc0ltYWdlLmdl
dCgpLCBuaWwpOwpAQCAtMjA2Myw3ICsyMDYzLDcgQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmlld1Nu
YXBzaG90PilfdGFrZVZpZXdTbmFwc2hvdAogI2lmIEhBVkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9S
KQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IGNvbXByZXNzZWRGb3JtYXQgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyOwogICAgIGlmIChXZWJDb3JlOjpJT1N1cmZh
Y2U6OmFsbG93Q29udmVyc2lvbkZyb21Gb3JtYXRUb0Zvcm1hdChzbmFwc2hvdEZvcm1hdCwgY29t
cHJlc3NlZEZvcm1hdCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB2
aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxwdHIpOworICAg
ICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVs
bHB0cik7CiAgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1v
dmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25h
cHNob3RdKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZh
Y2UpIHsKICAgICAgICAgICAgIGlmIChjb252ZXJ0ZWRTdXJmYWNlKQogICAgICAgICAgICAgICAg
IHZpZXdTbmFwc2hvdC0+c2V0U3VyZmFjZShXVEZNb3ZlKGNvbnZlcnRlZFN1cmZhY2UpKTsKQEAg
LTU5MDIsNyArNTkwMiw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZp
ZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUs
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1
dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAgICBp
ZiAoIWJpdG1hcCkgewogICAgICAgICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBjYjlh
ODBhMzdhYWNjOTViMjVmOTNjNDIuLjk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVjZmZm
OWNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZv
aWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0
aW1lc3RhbXAsIGRvdWJsZSBsYXRpCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBj
b3JlUG9zaXRpb24geyBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBs
b25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1
ZGU7CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5
OwotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1fZ2Vv
bG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgp
KTsKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUoY29yZVBvc2l0aW9uKSk7CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVy
RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdlb2xv
Y2F0aW9uUHJvdmlkZXI6Om5vdGlmeUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2Fn
ZSAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHAKaW5kZXggN2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1ODYy
NDEzMy4uYmNlODA1OGU1OWU2Mzg3MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKQEAgLTE0NTUsOCArMTQ1NSw4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rs
c19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChHX0lTX1RMU19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoaG9zdCk7CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3
ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZs
YWdzPigwKSkpOwotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6
OmZyb21VVEY4KGhvc3QpKTsKKyAgICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRp
ZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwg
c3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+cHJp
di0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJD
ZXJ0aWZpY2F0ZUluZm8ucHRyKCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAvKioK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2Vi
QXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJhNjhk
MWRmZGNhMDA1NmNjNmNkZGYyN2NmNmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5MDNh
MjU3MTY1OGM1MGY2Yjg0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNh
aXJvLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5t
bQppbmRleCA2N2YxMjIyYTc0NmM2NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIyNDVi
NWYwOWUxZTgyODA0ZTE4OTFmZDU0OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlRGF0YUhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0MmI1
ZGM1MDZiNjI3NjUxMGI3MzQ4NWZjZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2ODZj
YWFjZTRhZTUxMzJmYjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0
ZShjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUgPT0g
dXBkYXRlSW5mby52aWV3U2l6ZSk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUp
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5i
aXRtYXBIYW5kbGUpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBm
NWVlNGRmMTgwNDNkM2I1YTY0YjEwZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFmOTc5
ODVkNmI1NjBhMTY3OTZiYTRiYjRiNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdl
YlBhZ2VQcm94eSYgcGEKIAogc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldp
dGhSZWNvdmVyeUF0dGVtcHRlcihXS1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkmIHdl
YkZyYW1lUHJveHksIE5TRXJyb3IgKm9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
RnJhbWVIYW5kbGU+IGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZy
YW1lUHJveHkuZnJhbWVJRCgpKTsKKyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhh
bmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVjb3Zl
cnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0
ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoKmZy
YW1lSGFuZGxlKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFp
bGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBh
ZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0KCkp
IHVybFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3Ry
aW5nRXJyb3JLZXldXSk7CiAKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRlbXB0
ZXIuZ2V0KCksIF9XS1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5oCmluZGV4IDlkNzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4MzhlYWU5
NjAuLjY0YTM1ZjdlODc5ZGIwM2RjMGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5oCkBAIC0xNzEsNyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9k
ZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbEMK
IAogY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubW0KaW5kZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2ZmZk
YzAyNzA2Ny4uODY3N2EwNDFjNzBkMTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tTZXNz
aW9uTW9kZWxDb250ZXh0OjpwaWN0dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFjdGl2
ZSkKIAogI3ByYWdtYSBtYXJrIC0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJlZlB0
cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KHBhZ2UpKTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaAppbmRleCBhOTI5OWYxYjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjkyLi4y
OTdmOTY4YjM1MjllMGMzNTVjZDRkYjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dCBmaW5hbAogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSYpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBj
cmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAg
dmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFs
aWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcyODVh
ZWY1MjEyZmYzNTYxMjY0MjU2ZDE2Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5MmY4
ZjVhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkK
IAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0cjxW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBw
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkpKTsKIH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KaW5kZXggMTcxMGRmMTljNDI2NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRhZDcw
NGVjOTk2YjFlZjlkNGMxYTk5YjE3MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAg
LTE1OSw4ICsxNTksOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEo
KSksIHNpemUpOwotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUp
OworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAgIG5l
d0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZm
ZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4ZWUw
NzA1OWEzMTNiMi4uZTQ2M2FjOTk0YmI5ZjhhYWM0NGZlODI5MzhiZTEzNjE2YmIwNTkyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQzNzQs
NyArNDM3NCw3IEBAIFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1Nu
YXBzaG90KCkKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShX
VEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVh
dGUoV1RGTW92ZShzdXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwog
CiAgICAgcmV0dXJuIHNuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDc1MDlkZGVkYjRjMDhlNmJl
ODU0YmI3Y2VmNzI1YTk3OWQ4MGRjZWUuLjg2ZGMwOWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFmMTcy
NzFmNjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBEb3dubG9hZFByb3h5
TWFwOjp+RG93bmxvYWRQcm94eU1hcCgpCiAKIERvd25sb2FkUHJveHkqIERvd25sb2FkUHJveHlN
YXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBSZWZQ
dHI8RG93bmxvYWRQcm94eT4gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgq
dGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7Ci0gICAgbV9kb3dubG9hZHMuc2V0
KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eSk7CisgICAgYXV0byBk
b3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93
bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCAqZG93bmxv
YWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRv
d25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxv
YWRJRCgpLmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5nZXQoKSk7CiAKLSAgICByZXR1cm4g
ZG93bmxvYWRQcm94eS5nZXQoKTsKKyAgICByZXR1cm4gZG93bmxvYWRQcm94eS5wdHIoKTsKIH0K
IAogdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
aW5kZXggNzk2NTg2OGJlMDQzMzllNzg0OWY0ZGQzNDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYzZmNh
ODg4NzE5YmU3ZjYyNzJkMjA1NzIwYmI4OTAxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTEgKzk2LDExIEBAIEhhc2hNYXA8U3RyaW5nLCBi
b29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCkKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBT
dHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAgdWludDY0X3QgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgUmVm
UHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVh
dGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGds
b2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNh
dGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2lu
U3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1
aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFn
ZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
c2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1fbm90
aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxO
b3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKSk7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2Vi
UGFnZSwgKm5vdGlmaWNhdGlvbik7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CisgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNl
bChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyNWM5YzZjZjU2Y2Yy
NTQzNDg3NmZkYmQxNjZmMTRjMDhmODE1MzQuLjQ3MDg4MTAwZWUzMWQwN2E2NmQ3ZTkxNThlNDk5
NThiOGRmODU5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMzY0OSwxMCArMzY0OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJh
bWUodWludDY0X3QgZnJhbWVJRCkKIAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5D
cmVhdGVGcmFtZShmcmFtZUlEKSk7CiAgICAgCi0gICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IHN1
YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKKyAgICBhdXRv
IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKIAogICAg
IC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNz
LT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgKnN1YkZyYW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZyYW1l
Q3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmll
ciYmIHdpbmRvd0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggZmE0M2EzZDFlNzgzMDkyYmI3YzAyMTgxNDdmZDE2NGY4MjdiMDNjMC4u
OWUzZjQwNGJkNmU2YWJiM2FiMjQzOWFiYTcyN2M2YjVjMzliZWY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywg
RnVuY3Rpb248dm9pZCAoQVBJOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxTdGF0aXN0aWNzUmVxdWVzdD4gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUo
RGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwor
ICAgIGF1dG8gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwogCiAgICAgaWYgKHN0
YXRpc3RpY3NNYXNrICYgU3RhdGlzdGljc1JlcXVlc3RUeXBlV2ViQ29udGVudCkKICAgICAgICAg
cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwyMCAr
MTcyMiwyMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0
YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAgICAgICByZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0
aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcykg
PHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBt
dWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykgewogICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3MgYnV0
IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdS
ZXF1ZXN0KCk7Ci0gICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVz
dCk7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC5hZGRPdXRzdGFuZGluZ1JlcXVl
c3QoKTsKKyAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCAmcmVxdWVzdCk7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okdl
dE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMDYzNDMyNDliYWE3MjVhZmI2Y2I0
NDRjNTUyMzI1M2QxN2UwODBiYy4uZTZiNDQ0ZTkxNDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2NkZDdi
NTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00ODcs
OCArNDg3LDggQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG8KICAgICBXZWJQcm9jZXNzUHJveHkm
IGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6
SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAgICAgdm9p
ZCBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0
b3JlJik7CiAKLSAgICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNz
UmVxdWVzdCopOwotICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3Rp
Y3NSZXF1ZXN0Kik7CisgICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlz
dGljc1JlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0
aXN0aWNzUmVxdWVzdCYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFt
ZXIuY3BwCmluZGV4IDVlM2ZiNjVjMjMwZGJkODRkYWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQuLmUz
YWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVjMzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFt
ZXIuY3BwCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYg
ZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQdHI8SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IEluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWls
cywgZGVzY3JpcHRpb24pOwotICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAg
YXV0byByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7CisgICAgaWYgKHBhZ2VDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5k
ZW55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVhMDA0
MWRiZTEwMTQ0MjdmODYzLi45MmVhZDA0NWU4YjhmYzJlNGI5OTM0NDI2YmQxMGE0YThlNTlmOWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBXZWJQYWdlUHJveHkq
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdp
bmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZl
cmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAg
IHByZWZlcmVuY2VzLT5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0
cnVlKTsKICNlbmRpZgotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBh
Z2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxw
dHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKIAogICAgIGF1dG8gcGFnZUNv
bmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3Bl
Y3RvckxldmVsRm9yUGFnZShudWxscHRyKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQ
cmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQ
cmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1fd2ViVmlldyA9IEdUS19XSURHRVQo
d2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2ViVmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNL
KGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19w
b2ludGVyKEdfT0JKRUNUKG1fd2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV93
ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAppbmRleCBiNjRlMzM1OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2YTcx
OWZkMzRjLi5jYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7
CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVu
Y2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJL
aXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUo
REVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBX
ZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgog
ICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTQ2
LDEyICsxNDYsMTIgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3Jp
cHRSdW50aW1lRmxhZ3MoewogICAgIH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VH
cm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJG
b3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdy
b3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVk
UGFnZSgpKSk7CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29s
KCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1faW5zcGVj
dG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1
cmF0aW9uLnB0cigpKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVCht
X2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmll
dykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9pbnNwZWN0b3JWaWV3LCAiZGVzdHJveSIsIEdf
Q0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5k
ZXggYzFjZjU4NzU4ZWNiYTk4NTdhMGE2MWFkNDhkNmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5ZjY5
M2NkMmIzYjU1Y2VjMjBlMTczYzJmYjRiMTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xODYsNyAr
MTg2LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAg
IGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVy
OildKSB7CiAgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZy
YW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5m
byA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwg
KnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVy
OikpOworICAgICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVl
c3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikp
OwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcu
Z2V0KCk7CiAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVlc3Qg
cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJh
bWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRo
b3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCmluZGV4IDExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3ZjhlZDJj
Y2JhMzEuLjlmZWZmZGRmNDEwNDEyZTc2ZDJjMGMzZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTM4
NCw5ICszODQsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBhcmNoaXZlQnVmZmVyKQogewotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAg
ICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9pbXBs
LT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2Fy
ZE5hbWUpOworICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRyKCks
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZm
ZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBjYmZlMzBlOWUwYmU4MzIxNTE4MTk2
MzU1Zjc3OTgwOGI4MjRmMmY2Li4zNzk4YmZiYjVhOWM0MTRmNjBmZGMzY2JlYTljN2MwZGIzZTAy
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9y
UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJUKGlu
c3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIu
Iik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkK
ICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4g
ZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMt
PnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBX
ZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsg
fSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgp
KSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQ
YWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRvIHBh
Z2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChp
bnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNl
cyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91
cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNl
cyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91
cChwYWdlR3JvdXAucHRyKCkpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIG5hdmln
YXRpb25DbGllbnQgPSB7CiAgICAgICAgIHsgMCwgdGhpcyB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFu
Z2UubW0KaW5kZXggODI1MDkwMTc5MDBmNDc4OTQ0OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4uOTMx
MzQzZWIxYmI4NzMyZWE1ZDNiNTQyNGM1MzA2Yzg0NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TVJhbmdlLm1tCkBAIC01MCw4ICs1MCw4IEBAIC0gKGlkKV9pbml0V2l0aEltcGw6KFdlYkNvcmU6
OlJhbmdlKilpbXBsCiAKIC0gKGlkKWluaXRXaXRoRG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQgKilk
b2N1bWVudAogewotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3JlOjpS
YW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7Ci0gICAg
c2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UuZ2V0KCldOworICAgIGF1dG8gcmFuZ2Ug
PSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3Vt
ZW50KSk7CisgICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UucHRyKCldOwogICAg
IGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFkYWNm
ZGIzZmFmNDUwZTdjYWU2Zi4uOGMyOTViYWViZmJhMmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlmZWQ5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJh
Y2tpbmdTdG9yZVNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUu
c2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2lu
Z1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxYTMxMjMzZTZmYzllMjgxOGEyZmNmYTMwMTkx
YTVmYTE1Nzg4YjUuLjk1MTIzMDJiMjgyZTQxZWQxYjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0x
NjgsOCArMTY4LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgUmEKICAgICAgICAgICAgIHBhc3Rl
Ym9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBp
dGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0
ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhc3RlYm9h
cmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggZWMwOTg2N2JmMDM4
ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2NjNiOGQ4ZS4uNmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3YTQy
YjhmODk4Y2E5YjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
Y3BwCkBAIC03OCwxMCArNzgsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBpZiAo
IW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOworICAg
IGF1dG8gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRl
KGNvcmVIaXRUZXN0UmVzdWx0KTsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7
Ci0gICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJ
KGhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3Ms
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQSSht
b2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQw
MDViYjcxYTAuLjg4YzBhMmQ5YzYzMTJkMmMwZWEwNmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0
b3JlU2l6ZSA9IG1fcGx1Z2luU2l6ZTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRl
bnRzU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBh
cHBseURldmljZVNjYWxlRmFjdG9yIGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAg
Y2FsbGluZyBpbnRvIFdLU0kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMyY2JhMDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUzNTVj
ZDZmYzMyNjQuLjAxOTliODRmOGY0ZTI4Zjc2OWE3NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpA
QCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQog
ICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAg
SFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVh
ZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25z
ZS5nZXQoKSk7CiAKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1f
c291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVz
aXplZFJlc3BvbnNlKTsKKyAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBs
aWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwog
ICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hp
dmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3ICsx
MjU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAg
ICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNp
emUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3Rv
cmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKGNvbnRlbnRzU2NhbGVGYWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0xODUz
LDExICsxODUzLDcgQEAgdm9pZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNT
dHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIFJldGFp
blB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAg
ICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShw
YXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0No
YW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLQotICAgICAg
ICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IDMxNDc5YWZjMjlhZGY0YWM4NTJiYjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1OGVj
ZDlkMjM3ODkwNGIzNDdkMGQzYTZmNDY3ZTk0NGQyZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtODQsOCArODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdAogICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0
aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0
aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7Ci0gICAg
bV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KTsKKyAgICBhdXRvIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBtX3BsdWdpblBy
b2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJlZigp
KTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0
aW9uc011dGV4KTsKQEAgLTk0LDcgKzk0LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAg
ICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5zZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJuIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLnB0cigpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAzYmI5
NGYzYWJiNmJjOTFkMTYuLmQ2NTA1MzU4ZGI2ZjM1YzgxMjMwY2FmMTlkOTlmNGM0YzAxYjRmNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94
eTo6c25hcHNob3QoKQogICAgIGlmIChzbmFwc2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBz
aG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7
CisgICAgYXV0byBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBz
aG90U3RvcmVIYW5kbGUpOwogICAgIHJldHVybiBzbmFwc2hvdEJ1ZmZlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NDk1
Yzk5MTEyMmQwODQzZGFiMGM4NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4ZWVl
ODUyNzAwNmNlZWJjOWMzNzFlODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAogICAg
IC8vIFRoaXMgcmVxdWVzdCBpcyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0uCi0g
ICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhp
cywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRkU3Ry
ZWFtKHN0cmVhbS5nZXQoKSk7CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06
OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsK
KyAgICBhZGRTdHJlYW0oc3RyZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUxNjIy
N2ZhZjc4NjI1NS4uNzhlNjczNTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZQogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRh
KTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0
YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9wYWdl
LmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2Us
IHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUo
KSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdl
KCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIGRh
dGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdl
KCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3Mzcs
OCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90
KQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7
Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0gICAg
aWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0ZXNO
ZWVkZWQpKQorICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgm
bV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgpLT5h
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZDA1ZmM5OTZjMWQ0ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4Y2Zj
NGEwNTlmOWVmNzgxZTE0NjExMDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC03NjcsMTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQog
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7Cisg
ICAgYXV0byBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZSht
X2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1l
TmFtZSwgdXNlckRhdGEpOworICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZyYW1l
TmFtZSwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uVXNlKSB7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2VlZjlj
ZjBiZmFmMzRmNjRkYThiMzE2MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3YzM2
Mjk5NDIzYjdjYjhmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNG
b3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBs
eShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NF
UlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
ZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
W2ldKSkpCiAgICAgICAgICAgICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFkY2Y5
YWMyM2Q4ZDEzZWJkZjkzYzY3ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4ZDA2
NWVmZmYyNDRmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFj
ZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3Jh
cGhpY3NDb250ZXh0LT5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KaW5kZXggZmZlZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAyZS4u
Zjg3ZDkzNDQzZjdjNThhODJjNDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVs
ZW1lCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoZWxlbWVudCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGlt
YWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBh
MzhjZDJiZjYzNzk0YzhlOWYxZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYzNmNi
NzUyZWY4MTFhMTI0NWViNTVkZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcg
QEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNpdGlv
biA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3Nm
YWRlKQogICAgICAgICBpbmRpY2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNs
dWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxUZXh0
SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KHJhbmdlLCBpbmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBh
dXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2Us
IGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICghdGV4
dEluZGljYXRvcikgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVw
SW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAK
aW5kZXggNzgyNGU1Y2Y3MWI0N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIwMDJi
ODZmNDJhMDFjZjQ4ZTVkZjY5MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyArNDE3
LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoYml0bWFwU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYz
MDkyOWQxZjMuLjYzY2MyODM5MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKCkK
IAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0
ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7Ci0g
ICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0
ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25J
bmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dElu
ZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxk
QW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFpbmRp
Y2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMxNWRm
MTc2ZDYyMGI0NTg5ZGMzNjU5OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZmZDgy
ZWVhNTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hl
ciA9IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBh
Z2UucGFnZUlEKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdT
dG9yZUZsdXNoZXIsIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUs
IFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFn
ZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAg
TW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWExODhi
MjRiNjQ0NmQwNTI3ZGY4NjUwZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0YjVh
YjcxOWI3OTgyYzAyYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRM
b2FkZXJEZXRhY2hlZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0
ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1l
KCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAt
PiBib29sIHsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBm
cmFtZSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBiZTZiZWZiODE0Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3ZDdh
N2NjODQ1ZTU1MzJjM2IyMDZlN2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2b2lk
IFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmlu
ZyYgdXJsLCBJbnRQb2ludCBkbwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAgICAg
Ly8gRklYTUU6IFNldCBtb2RpZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBw
cm9iYWJseSBzZXQgSXNTaW11bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4gbW91
c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0Nv
bXBvc2VkOjpZZXMsCisgICAgYXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0Nh
bmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3Rvbmlj
VGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1lbnRQ
b2ludCwgeyB9LCB7IH0sIDAsIDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxscHRy
KTsKIAotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1l
bnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJl
cjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFt
ZURvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LnB0
cigpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5k
UmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQpAQCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25z
dCBXZWIKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXlbaV0pKSkKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVV
cGxvYWQuYXBwZW5kKGV4dGVuc2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmlu
ZGV4IDBjODRmNjRjOGM2M2VkMWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2YTRj
OWZhZDAxNzFjMTg4M2YwMGNlYmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk0
LDcgKzk0LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFt
ZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dpbmdG
aW5kSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+
IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFt
ZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFy
Z2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgZmlu
ZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
bjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNhbE1h
cmdpbikpOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDlkZjYxOGE0ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjVkNTY1
MjJiNTkwM2RhNzU3YWM1NWNhODQ4NTRmNjA5MDZjOWZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDcgKzE4
MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBv
bGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRp
b24ucHJldmlvdXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBvc2l0
aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKTsKIAogICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0
KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNDEsNyArMjE0MSw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRzID0gNDsK
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0
SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRl
eHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25S
ZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBU
ZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29t
cGxleFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0SW5kaWNh
dG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRp
Y2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0
VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5k
aWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJh
bmdlcyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBkZXZp
Y2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCkBAIC0yMTU2LDcg
KzIxNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mby5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVj
dG9ySWRlbnRpZmllcigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRh
dGFEZXRlY3RvclJlc3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRl
Y3Rpb25SZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVjdGlv
bjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1l
bnQtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1Jh
bmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0
V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0
ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m
by50ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRl
ZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3Np
dGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3
YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIxODEs
NyArMjE4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBp
bWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJh
dGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3Vy
YXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+
bWFpbkZyYW1lKCkudmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0
aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hh
cmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRt
YXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwg
Yml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkMjU1NWMxOTkwOGFi
YTY2YTI0YzFjMWJkZDE1NmYyZDNkMjkwNDgzLi40N2ZjM2MyOTBmNjUwZTM2N2RiOThkNGMzNzEz
NWY5M2Y2NGU0MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFuc2Zv
cm0uc2NhbGUoc2NhbGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRl
clZpZXdBbmltYXRpb25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgi
dHJhbnNmb3JtIik7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdB
bmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5p
bWF0aW9uQ0EuZ2V0KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAg
ICAgcmVuZGVyVmlld0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAgUmV0
YWluUHRyPENBTGF5ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUg
c2NhbGUsIEZsb2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVu
dFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFk
ZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5pbWF0
aW9uKTsKKyAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNv
bW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5
ZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRz
Rm9yRnJhbWUoZnJhbWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXgg
ODA1ZmU5ZTRjYmI1ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uODgzMDE3MjY1YmJhOTU2
ZGM5ZDIyZjZiNjA0NDRiMTgwNjBlZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAt
NDAsMjQgKzQwLDI0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVs
bHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5h
bWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1
b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0K
IAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7
CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3Rh
SW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3Rh
SW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2lu
LCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZl
bE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9y
YWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxP
cmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFw
JiBtYXApCiAgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitS
ZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3JhZ2VU
eXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVwaGVt
ZXJhbExvY2FsU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUsMTYg
QEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZpbmFs
IDogcHVibGljIFN0b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdl
TWFwOwogfTsKIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBo
ZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFs
TG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KQogewogICAgIGF1dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFkZChz
ZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkK
ICAgICAgICAgc2xvdCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJl
YTo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1cm4g
c2xvdC5nZXQoKTsKKyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQogCi1S
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSog
bmV3UGFnZSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29w
eShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAK
QEAgLTIwMiw3ICsyMDIsNyBAQCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlE
KCksIG1fcXVvdGFJbkJ5dGVzKTsKIAogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3Jh
Z2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9y
YWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1f
cXVvdGFJbkJ5dGVzKSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3Bh
Y2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1f
c3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRl
cykpOwogCiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVh
cykKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLnNl
dChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4
IGYxM2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgxM2JhZjVj
YjVhNDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzks
MTAgKzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
IDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3Rh
dGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2aXJ0dWFs
IH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgU3Rv
cmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2Vi
Q29yZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVh
PiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9y
YWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIGNvbnN0
IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0X3Qg
bV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cAppbmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44MjU1N2I3
MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDx1aW50
NjRfdCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2
NF90IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlm
IChzbG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90OwogCi0g
ICAgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlm
aWVyKSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAgICBh
dXRvIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
IH0KQEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBh
Z2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBx
dW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdl
LCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2Uo
JnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BM
ZXZlbE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApp
bmRleCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2ZGI5ZjA2
OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7
CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdl
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWdu
ZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAg
ICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92
ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3MS4uZmM2
NTk4NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
QEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRh
dGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1v
ZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJl
ZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0gICAg
bW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNlID0g
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQp
OworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNiMDIyMWYx
NmUuLjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmludmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1
cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2Ug
PSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJ
ZCk7CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpj
cmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+
c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7
CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMuLjg2ZGIy
ZDg3MThhNTRiMmY2YzI2NTNmOTNjMGFhZTliMmI5ZmQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtOTMsMzEg
KzkzLDMxIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQog
ICAgICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBo
ZW1lcmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1l
c3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwg
bV9wYXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOwog
ICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVz
cGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7
CiAKICAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogCiAgICAgUmVmUHRyPFN0
b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWE7CiAgICAgaWYgKChzdG9yYWdlQXJlYSA9IG1fc3Rv
cmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpKQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7Cisg
ICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCiAgICAgc3RvcmFn
ZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4sIG1f
c3luY01hbmFnZXIuZ2V0KCksIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9y
aWdpbiwgc3RvcmFnZUFyZWEuZ2V0KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICBy
ZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgwYmZk
NjVhOTY2NjE2MTM3Li5jODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaApAQCAtNTcsOCArNTcsOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWdu
ZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJl
YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlk
ZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVh
SW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0NWE0
NmQ2NzdjODg0YWJkOWUuLjgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTExZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNoU2V0
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJz
KCkKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQpAQCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
CiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQogCi1S
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50YXRp
b24gd291bGQgY3JlYXRlIGEgc3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1c3Qg
cGlnZ3ktYmFja2luZyBvZmYKICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCmluZGV4IDBkMjA3ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0ZWMw
NzdhYmIuLmU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIHZp
cnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgc3RhdGljIHZvaWQg
Y2xvc2VMb2NhbFN0b3JhZ2UoKTsKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwCmluZGV4IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVlMDY2
N2QxYTYyMTNiOWQuLjYzY2FlMmQwYWQ1MmNkNTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91
cC5jcHAKQEAgLTQyLDE4ICs0MiwyMiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
ZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3VwcygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91cHM7
CiB9CiAKLVJlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkK
K1JlZjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dy
b3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpKTsKIAogICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5hZGQo
bmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghd2ViVmlld0dyb3VwKQot
ICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwotICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAtPm1f
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0
eSgpKQorICAgIGlmICghd2ViVmlld0dyb3VwKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7
CisgICAgICAgIHdlYlZpZXdHcm91cCA9IHJlc3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgu
aXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoOwogCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4gKndl
YlZpZXdHcm91cDsKIH0KIAogV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBT
dHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWV3R3JvdXAuaAppbmRleCBmZTA1Y2Q1NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkzMjcy
YjVmLi40ZDQxMzdjZTJhYWFjM2ExNDBkNTljNjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAgLTM4
LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJWaWV3
R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0YXRp
YyBXZWJWaWV3R3JvdXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5jcHAKaW5kZXggZDA4NDkzYjBmNDJjY2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVkMC4u
ODA0OWIxY2NjMjcyYzM0NzI1OTllNDk0MmU1MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVJT1MuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhjbGll
bnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSkp
CiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogewot
ICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQog
CiB2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDcxNmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4ZWY1
OTg3OWFmNGYuLjBlZjQ0YjQyYTY2MGFlMzUyYzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVu
dUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5hYmxl
ZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1fcG9w
dXA7CisgICAgUmVmPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBTZWFy
Y2hQb3B1cE1lbnVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkwMGY0
ZjBlNmI5YTVlNjg5ZmMxOWM4NzM3NDQyYjViMjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBjZmFm
MmYzMmExMzYxZjY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0MzMs
OCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVy
bmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBtYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAg
WyhOU011dGFibGVBcnJheSAqKSphbHRlcm5hdGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKSht
YXJrZXJBbHRlcm5hdGl2ZXNbal0pXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAg
cmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJr
ZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01SYW5n
ZSAqKWVuY2xvc2luZ1JhbmdlV2l0aENvcnJlY3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgRG9jdW1l
bnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwg
bm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsK
LSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJh
bmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5kZXgg
OTZhNjQ5NmMyYzQ0NjA5OTJjNWMxMmMwZGNmZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVlMTQ5
OGQ5ZjM0YjljMDk2MjkzZGMzNmNhNWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwxMyAr
NDY1LDEzIEBAIC0gKHZvaWQpc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVSTAog
ICAgIGlmICghVVJMKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50
ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6
OlllcywKKyAgICBhdXRvIGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCks
IG51bGxwdHIsIDEsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwgbnVs
bHB0ciwgTW91c2VFdmVudDo6SXNTaW11bGF0ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRvIHRo
ZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3Mg
YXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJhbWVd
KTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3Vt
ZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7IH0s
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVy
cmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywg
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCksIG51
bGxwdHIpOworICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCksIGV2ZW50LnB0cigpLCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4NjM1
ZTNhYThmNGFkNC4uMWI2YzgyMjg1NGEwN2YzZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9pZCln
ZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNB
cnJheSAqKilyZWN0cwogICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMobm9k
ZSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXJnaW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBhZ2Uo
KS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRp
Y2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0
b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGln
aHRseUZpdENvbnRlbnQgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRD
b2xvciB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwKICAg
ICAgICAgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVu
dEZvckNvbXBsZXhSYW5nZXMgfApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0K
aW5kZXggMWYzMmRjOTQ5OGJhNDIyMWQxMjkzOTFiODQ3OWFiYTMwYTk3OTg5NC4uNzc0ZDIxYTlm
Zjg0ZjAxYTNjMTY5YmE2Nzk5MjU3YTQ3Yzk5ZWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVn
aW4KICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFX
aXRoUHJvcGVydHlMaXN0OnByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0Qmlu
YXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChkYXRh
KTsKICAgICAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0YW5j
ZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2lu
VmlldywgZnVsbEZyYW1lKTsKKyAgICBhdXRvIGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwogICAg
IHVpbnQzMl90IHJlcXVlc3RJRCA9IGluc3RhbmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAga2Vy
bl9yZXR1cm5fdCBrciA9IF9XS1BISW5zdGFudGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0KCks
IHJlcXVlc3RJRCwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRh
IGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCBpbnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAgaWYg
KGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCA4ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFlNzA2
OGI3YzMyLi5hYmNhNmJiZTMzMDUzNWE5ODJlNjQyZDRjMmExODhhN2I4YThiN2Q1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03MTksOCArNzE5LDggQEAg
dm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVn
aW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3Ry
ZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8g
ZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0Rh
dGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAg
ICAgICAgCi0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFt
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0
LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICAgICAgbV9zdHJl
YW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3RyZWFt
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0
LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICAgICAgbV9zdHJl
YW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAK
ICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTc5OSwxMCArNzk5LDEwIEBAIE5QRXJyb3IgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIGNvbnN0IGNoCiAgICAgICAgIG1fcGx1Z2luUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocGx1
Z2luUmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+
IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVz
dElELCByZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAKICAgICAgICAgQVNT
RVJUKCFtX3N0cmVhbXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5h
ZGQocmVxdWVzdElELCBzdHJlYW0pOworICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwg
c3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDlhNzQ1ZDkzODNmNzQ0N2Y1NDJkZjUwNDVlMjQ0NWIzODUz
ZTA4ODAuLjFkMWU4YWVmNjc1MjM2MWYzZWNjMDQ2NTA1ZDQ2NTdjMjU0NmI0YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlw
dFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAg
ICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBp
ZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEg
ZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0
ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVx
dWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7Cisg
ICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBz
ZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAgICAg
IAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgLSAoTlBFcnJv
cilsb2FkUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5UYXJnZXQ6KGNv
bnN0IGNoYXIgKiljVGEKICAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihs
b2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5OjBd
OwogICAgICAgICBbcGx1Z2luUmVxdWVzdCByZWxlYXNlXTsKICAgICB9IGVsc2UgewotICAgICAg
ICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3Rp
ZnlEYXRhKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6
Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CiAK
LSAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFtcy5hZGQo
c3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk2ZWY5MjFmZDYwNmVjZjA4MGVlZDEz
MWQ0YjhkOTEyZDUxZjNmZmIuLjIzNDc4MWIwYmU4NmE0YmRhNTBjMGNlNTY0ODQyMjM4OGI0MmJl
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0yMDcsOCArMjA3LDggQEAgUmV0
YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFy
aW5nU2VydmljZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFZpc2libGVT
ZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUt
PmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5j
aG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOwot
ICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwg
UG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlv
bjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVT
ZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+
IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFt
ZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGVjOGU1OGNmMjA3YmJjYjA0ODIyZWQyYjE1
ZGVhZDA2NzYyYTU2N2QuLjg0NjBiMDNmNTBjN2MyYjEzYTE3ZWZlNGM4MzhmYjdiOTIxOTBlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkK
ICAgICBpZiAoaXNNYWluRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNvcmVG
cmFtZS0+dmlldygpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUtPnNl
dFZpZXcobnVsbHB0cik7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gY29yZVZpZXcgPSBGcmFtZVZp
ZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKKyAgICBhdXRvIGNvcmVWaWV3ID0gRnJhbWVWaWV3Ojpj
cmVhdGUoKmNvcmVGcmFtZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KGNvcmVWaWV3LmNvcHlS
ZWYoKSk7CiAKICAgICBbbV93ZWJGcmFtZS5nZXQoKSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0
ZXNXaGlsZU9mZnNjcmVlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQppbmRleCA3YjliYjg5OTA4YWU1YzFhNjUyZTM2Y2M4ODliZTA0ZTU2NTRjOTQ2Li4w
NGJhYzQ1Yjk3ZjUzYWFmZTc0YjhhOGMxODNkNmIxZTM0NzViMGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE3NDYsNyArMTc0Niw3IEBAIC0g
KHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRN
ZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRP
ZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CiAgICAgICAgICAgICBET01SYW5nZSAqZG9t
UmFuZ2UgPSBraXQocmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bWV0YWRhdGEgIT0gcHJldmlvdXNNZXRhZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOWMzYzJiYjk5Y2MwYzZjZDMwNTM3OThk
ZGI2NjQ0YzllN2RiODE0Mi4uNGE4NmM3OTQ1NWZiMzZkMGM1YmViZmIzOTBjZTg0NjNmZWIyNDI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAtICh2b2lkKV93cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJv
YXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdAogewogICAgIC8v
IFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmpl
Y3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CisgICAgICAgIGlmIChhdXRvIGNvcmVBcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9mcmFt
ZV0pKSkgewogICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBjb3Jl
QXJjaGl2ZSA/IGNvcmVBcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSA6IDApCiAgICAg
ICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopZGF0YS5n
ZXQoKSBmb3JUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVlYjk1NzUyODJjMWI2NTNk
Y2JjOWFhNmE0N2VkNzBjMDVlN2Q1ZWYuLjRmOTBmNjM5Mzk3NDEyNjk3NjhkNjMwMzZjYjBkM2Iw
ZDMwYzkxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTQ3MjksOCArNDcyOSw2IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0
cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShn
cm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc1NCw4ICs0NzUyLDYg
QEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFt
ZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB2
aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgU3RyaW5nKCkp
OwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXdvcmxk
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDVjMDc3MTIxMWVhZWQ2NDkwNzNlMTAzZTkwNGE1
ZWM5MDQ5YjQ2M2YuLmJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgpCiAg
ICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBh
Y2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBhdXRvIHBhY2thZ2UgPSBQbHVnaW5Q
YWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYgKHBh
Y2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAgICAgICBwbHVn
aW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBmODU1ZGQyNjNmNzljZGZkNDFiNjQ2NTk1MDIy
YThjNDRjY2EyZjQ1Li5kM2UzMzlmNzU5NDhhM2UzZTFkOTI5ZGVlNzZkOGMyZWQ0NmRkZjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTQxMCw3ICs0MTAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJl
cXVlc3QqIHJlcXVlc3QpCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVx
dWVzdCwgY3JlYXRlIGEgc3RyZWFtIGZvciBpdC4gb3RoZXJ3aXNlLAogICAgICAgICAvLyBqdXN0
IHBhc3MgaXQgb2ZmIHRvIHRoZSBsb2FkZXIKICAgICAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAgICAgICAgYXV0byBzdHJlYW0g
PSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0
LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3Rp
ZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3Mo
KSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKICAgICAgICAgICAgIG1fc3RyZWFt
cy5hZGQoc3RyZWFtKTsKICAgICAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICAgICAgfSBl
bHNlIHsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0
KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgY3N0ciA9IHJlc3VsdFN0
cmluZy51dGY4KCk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBz
dHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCBy
ZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNl
bmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2lu
RnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAgICAgYXV0byBz
dHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCBy
ZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNl
bmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2lu
RnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKICAgICAgICAgbV9zdHJl
YW1zLmFkZChzdHJlYW0pOwogICAgICAgICBzdHJlYW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJl
cXVlc3RVUkwsIGNzdHIpOwogICAgIH0KQEAgLTY5MCw3ICs2OTAsNyBAQCBSZWZQdHI8SlNDOjpC
aW5kaW5nczo6SW5zdGFuY2U+IFBsdWdpblZpZXc6OmJpbmRpbmdJbnN0YW5jZSgpCiAgICAgfQog
CiAgICAgYXV0byByb290ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuY3JlYXRlUm9vdE9iamVj
dCh0aGlzKTsKLSAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlID0g
SlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCBXVEZNb3ZlKHJvb3QpKTsK
KyAgICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2Jq
ZWN0LCBXVEZNb3ZlKHJvb3QpKTsKIAogICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTkzZTAyYjA1MDE4ZWY1OGZlNDE2
ZmNiZmI2NzVlZGUzZmM1ODk2Yy4uMDM1OWQ5MDFhY2NjZDkxMjQ2OTExY2U5MWZjMjNjZTFiMGJh
MjRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1OCw3ICsxMTU4LDcg
QEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7Ci0gICAgUmVmUHRyPFBs
dWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNp
emUsICZlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9h
ZE1hbnVhbGx5KTsKKyAgICBhdXRvIHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoZnJh
bWUsIHBsdWdpblNpemUsICZlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBt
aW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIAogICAgIGlmIChwbHVnaW5WaWV3LT5zdGF0dXMoKSA9
PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCiAgICAgICAgIHJldHVybiBwbHVnaW5W
aWV3OwpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0JiBwbHVnaW5XaWRnZXQpCiBSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiAvKmJh
c2VVUkwqLywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShj
b3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKKyAgICBh
dXRvIHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1
Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxp
Y2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgcGx1
Z2luIGNhbiBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdp
bigpICYmIHBsdWdpblZpZXctPnBsdWdpbigpLT5sb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggYzAzMjQyYzdkNmI2MmQ4ZmM2MzVkOWEwZDdiZDZlNWQ3YzI1OWZl
ZC4uNDVlNGE1N2I1YThiYWMyZGE3YjQ0ZTRkZmJmODIxY2FlZjBhYjhiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJl
dHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFt
ZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAg
U3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNjEwLDcgKzYxMCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0lu
XyBCU1RSCiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RS
IHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwor
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFp
blRleHQpKTsKICAgICBCU3RyaW5nIHBsYWluVGV4dE1pbWVUeXBlKFRFWFQoInRleHQvcGxhaW4i
KSwgMTApOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAg
ICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRm
MTZFbmNvZGluZywgdXJsLCBudWxscHRyKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNU
UiB1cmwpCiAKIHZvaWQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3Ry
aW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lz
U3RyaW5nTGVuKGh0bWxTdHJpbmcpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2Yo
VUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJpbmcpKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5j
b2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVm
ZmVyKSwgMCwgdXRmMTZFbmNvZGluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggMWJhZGQwMWMzYTc2NDBjY2YxMTMwNGE0MzVh
N2IxZTI0NTExNWZkZS4uNTAyY2E4OWRmNmI5MGQwYTI3N2Q3OWIxYmI1OTg3MWI1ZDExNDI2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3Mg
REVDTFNQRUNfVVVJRCgie0EzNjc2Mzk4LTQ0ODUtNGE5ZC04N0RDLUNCNUE0MEU2MzUxRH0iKSBX
ZWJGcmFtZSBmaW5hbCA6IHAKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmco
X0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJs
ZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
Y29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmludGluZyhib29s
IHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRp
bywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290
ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAppbmRleCA5
NDA3NzkxMmE5OTE2NDExN2QwYzY4MWNjY2MwNjY4NmUwNGM0ZGUwLi5mOWFiODNiNTFjYTMyM2Vi
ZTcxZjU1MDI2NzkyZGJmNjM1MzQzMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCkBAIC0x
ODcsOSArMTg3LDkgQEAgQ0FWaWV3Ojp+Q0FWaWV3KCkKICAgICBtZXNzYWdlV2luZG93ID0gbnVs
bHB0cjsKIH0KIAotUmVmUHRyPENBVmlldz4gQ0FWaWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uKQorUmVmPENBVmlldz4gQ0FWaWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0FWaWV3KGRl
c3RpbmF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0FWaWV3KGRlc3RpbmF0aW9u
KSk7CiB9CiAKIHZvaWQgQ0FWaWV3OjpzZXRDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2soQ29udGV4
dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
Vmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQVZpZXcuaAppbmRleCA0NWI2NGVjMDE1MmU1MWQ0MjRmNDJlMzM5YzVlMDZmYjU0NDgwNDZj
Li43Mjk2M2JlM2RiYmM0MzI4ZjU1NzlhNmRhNTcwYzYyYzVmNDg5MDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q0FWaWV3LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ0FWaWV3IDogcHVibGljIFJlZkNvdW50
ZWQ8Q0FWaWV3PiwgcHJpdmF0ZSBDVkRpc3BsYXlMaW5rQ2xpZW50IHsKIAogICAgIGNsYXNzIEhh
bmRsZTsKIAotICAgIHN0YXRpYyBSZWZQdHI8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0
aW9uKTsKKyAgICBzdGF0aWMgUmVmPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7
CiAgICAgfkNBVmlldygpOwogCiAgICAgdHlwZWRlZiB2b2lkICgqQ29udGV4dERpZENoYW5nZUNh
bGxiYWNrRnVuY3Rpb24pKENBVmlldyosIHZvaWQqIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5r
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q1ZEaXNwbGF5TGluay5jcHAKaW5kZXggYjE1NDgyNGNlNDQ4M2M3ZGQ5ZTYzMWJhZDFiMTM5ODQ1
N2Y0OWZjNS4uYWFiZDE5OGIxMTE1ZWQ3ZTY1YWQ4MzA4NTQxNjE5Y2Q0MTU4NDBlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9D
VkRpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCkBAIC00NCw5ICs0NCw5IEBAIENWRGlz
cGxheUxpbms6On5DVkRpc3BsYXlMaW5rKCkKICAgICA6OkNsb3NlSGFuZGxlKG1fd2FrZXVwRXZl
bnQpOwogfQogCi1SZWZQdHI8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENW
RGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkKK1JlZjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlM
aW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOwogfQogCiB2b2lkIENWRGlzcGxheUxpbms6OnN0
YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKaW5kZXggMGFlMDJmMTY5ZWM4
Mjg5MTI2NjFlZmE3MzhjODRmYjdjNDQ0MjI4My4uY2EwMjZhZmVhYzQxNWQ3MTg3NDc4ZTg3Mzc1
YTI3MTA5OWY0MGNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKQEAgLTM2
LDcgKzM2LDcgQEAgY2xhc3MgQ1ZEaXNwbGF5TGlua0NsaWVudDsKIC8vIEZJWE1FIDg3NjkxODE6
IFJlcGxhY2UgdGhpcyB3aXRoIENWRGlzcGxheUxpbmtSZWYKIGNsYXNzIENWRGlzcGxheUxpbmsg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q1ZEaXNwbGF5TGluaz4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGll
bnQqKTsKKyAgICBzdGF0aWMgUmVmPENWRGlzcGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5r
Q2xpZW50Kik7CiAgICAgfkNWRGlzcGxheUxpbmsoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvSW1hZ2VDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcAppbmRleCBkYzY2NzBkNDMzZmYw
OWUwZDExNjY1ZGMwNTUzYjIxNmRmYjI2MDBjLi5jZjkyMTg1YTEwZGI5NDZkMDZiYjRiZDQ4MGM2
OWZkZWMzNDYwNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBIUkVTVUxUIGdldEltYWdlQ29weShJRGlyZWN0M0RT
dXJmYWNlOSogc3lzdGVtTWVtb3J5U3VyZmFjZSwgUmVmUHRyPEltYWdlCiAKICAgICBDU2l6ZSBz
dXJmYWNlU2l6ZShkZXNjLldpZHRoLCBkZXNjLkhlaWdodCk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gSW1hZ2U6OmNyZWF0ZShzdXJmYWNlU2l6ZSk7CisgICAgYXV0byBpbWFnZSA9IElt
YWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZThiZGRlYmYy
NjI2ZjVjY2FkOGQ0YWNlZDU3MzNlNzI3MjJhZWViNy4uZmJjMDRkZTY1OTc4OThiMDVkMjJhNGU1
NzNhMjRlZDU2MTk3OTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTY5
MTIsOCArNjkxMiw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0lu
XyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUo
Z3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAt
Njk0MSw4ICs2OTM5LDYgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZShncm91cCwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4g
RV9GQUlMOwogCiAgICAgaWYgKCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357552</attachid>
            <date>2018-12-18 01:14:18 -0800</date>
            <delta_ts>2018-12-18 01:31:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218181416.patch</filename>
            <type>text/plain</type>
            <size>386816</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uM2JjYjZkZWU0YTZlYzAyYzQzMWI0MDUxZDI1YWUwYmMzNWIyMDM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
OjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Ondh
dGNoUG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2Vz
OjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpn
ZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Ojpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
QWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBh
c3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNl
OjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpj
cmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVy
ZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlVmll
dzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsu
Y3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgpOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6Cisg
ICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2hlZXQ6OnJ1bGVzKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2U6OnVuaWNvZGVSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyk6CisgICAgICAgICogY3NzL1NWR0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvciBjb25zdCk6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBw
ZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBkb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11
dGF0aW9uU2NvcGUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXIpOgorICAg
ICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCk6CisgICAgICAgICogZG9tL1BvaW50
ZXJFdmVudC5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGll
ZFNwZWxsQ29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRl
ZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKToKKyAgICAgICAg
KiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5
U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKToKKyAgICAgICAgKiBl
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92
ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxl
c0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFBy
b3BlcnRpZXNOb3RJbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRU
b1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25SaWdodFRvTGVmdCk6CisgICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZSk6
CisgICAgICAgICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcv
UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNl
cnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRs
ZVN0eWxlU3BhbnMpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJn
ZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3Bl
bGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAg
ICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXN0
YW5jZUJldHdlZW5Qb3NpdGlvbnMpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KToKKyAgICAgICAg
KiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQpOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVy
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
UGFyc2VyOjpjcmVhdGVOZXdDdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFz
Q1NTUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0
aFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5UGF0aCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjphcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICogbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJz
ZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbik6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpnZXRNYXRjaGVkQ1NTUnVsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCBj
b25zdCk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6
ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxSZXF1ZXN0V2l0aEtl
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZW
aWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5v
dGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBl
bmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5RmlsdGVyQW5pbWF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6
OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6
YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Q09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrVmlkZW9UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdl
Qm9keSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Ojpj
cmVhdGVOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6cG9wdXBNZW51KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlDb21tb25CdXR0
b25QYWRkaW5nVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YWRqdXN0
QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6U3RvcmFnZSk6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjphcmVhIGNvbnN0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVN
ZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHRlc3RpbmcvR0NPYnNl
cnZhdGlvbi5oOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToKKwogMjAxOC0xMi0xNyAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2lu
XVtDbGFuZ10gRml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOTZhZTg1NWFjNzU3NzcxYTEzZjJlOGRkYzk0ZDBh
MDNlNDY1YzkuLjc3Njg0ZThiY2FkYjQ4NGUyN2FjOTk4NGFkNGI3NzY1NjFiOWIyYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtl
c3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9z
c2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29ubmVjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb25uZWN0aW9uIHNlbmRNZXNzYWdlV2l0aE5h
bWU6Ym9keTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3Rd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZXaWR0aDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQ
TkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jw
b3JhdGVVcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZm
ZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3cpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlz
dGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVu
dFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAg
ICAgICAoLVtXS0RPTVJhbmdlIGluaXRXaXRoRG9jdW1lbnQ6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRl
SXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybVVSTFJl
cXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFi
YXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydENhaXJvU3VyZmFjZVRv
U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25h
cnlQb3B1cEluZm9Gb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxh
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNv
cHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorCiAyMDE4LTEyLTE3ICBKaWV3ZW4gVGFuICA8
amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gTGF5b3V0IFRlc3QgaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRw
cy5odG1sIGFuZCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYXJlIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGFk
NmZhODA1ZTZjNzE3MjVkMTI0Yzk3NzVmMThjYTRiODc2YjM5YzkuLjMxMmRjMDMyNGM1MTFhMmE2
NTAzYmE2MTNiNDA4OWM2ZWI4OWI1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAg
KiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3Jv
dXAuY3BwOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmg6CisKIDIwMTgtMTItMTEgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bV2ViS2l0TGVn
YWN5XVtDbGFuZ10gV2ViS2l0Lmggd2FybmluZzogJ0lXZWJFZGl0aW5nRGVsZWdhdGUyOjpzaG91
bGRJbnNlcnROb2RlJyBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVuY3Rpb24gWy1Xb3Zlcmxv
YWRlZC12aXJ0dWFsXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGU4NDRmOTA1MTNj
MzM2YzI0ZTYzOWZlZjY5OGJkODM4MWI2NDRhYzIuLmQyYzYxYzhlNTMzYTJmMWFiZDc1ZTRlNWE0
NWJhMTdmYmFiOThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJj
aFBvcHVwTWVudUlPUyk6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJW
aXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRp
dmVzOl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRo
Q29ycmVjdGlvbkluZGljYXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlj
a09uTGlua1RvVVJMOl0pOgorCiAyMDE4LTEyLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggZTI0Mzg5YzMxZTdjNzA2N2ZmZTQ1YmM2NDEwYmI0YTVmZTQxOWFkYS4u
ODk4N2E2MmMxOWQxZGQyYmMwMDc2YjhjOWM1NDQ0ZGMwYzA2NDhhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtp
ICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11
Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNo
b3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFBs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBs
dWdpblZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0OndpdGhOb3RpZnlEYXRh
OnNlbmROb3RpZmljYXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6
YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF93cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkVHlwZXM6dG9Q
YXN0ZWJvYXJkOmNhY2hlZEF0dHJpYnV0ZWRTdHJpbmc6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3Js
ZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZy
YW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOndv
cmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZyYW1lczpdKToKKwog
MjAxOC0xMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBv
ZmZzZXRMZWZ0IGFuZCBvZmZzZXRQYXJlbnQgc2hvdWxkIGFkanVzdCBhY3Jvc3Mgc2hhZG93IGJv
dW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0MGFjMDUzODFmYjdkMDY5
NDZkYmI0NGEwZTFlNDYxOTE4YjJjMDNmLi5kNjEwZWRhZTlhY2ExMDdhNDY4MzVhN2U4MmQxN2Fj
OWJhZmU5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4K
KworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKToKKyAgICAg
ICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6YmluZGlu
Z0luc3RhbmNlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAg
ICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAg
ICAgICAoV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoK
KyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgor
ICAgICAgICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6Omdl
dEltYWdlQ29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojph
ZGRVc2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVl
dFRvR3JvdXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6
IGV4cGVjdGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFy
aWFudCBhbmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBl
ZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4
Li40YTk1ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVs
ZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxl
bmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAg
ICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0
b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZh
MGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2lu
dEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNo
cG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRk
KHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBv
aW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwog
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxs
IGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZi
MGYzMTkzODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJh
NDZhOWViOGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNh
bGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAg
ICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVk
ZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxT
d2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3
IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5l
dyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1l
cihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVy
cmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VS
ZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNr
KiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVh
cDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dl
ZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5h
YmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRh
MzZhNTg4MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5
N2MzYmVmOWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02Mjks
OCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxT
d2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0
b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBl
cjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7
CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0
YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTli
YjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNS
YXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewog
ICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigp
PiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJr
ZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
bwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21z
UGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4
NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3
ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcg
KzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJ
c29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29u
c3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2Vk
QmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBU
aGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNw
YWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhC
aXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3
U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNv
bnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVs
KGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBm
b3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5k
ZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVh
OGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2Vs
bFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElz
b0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQor
UmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAg
LTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAg
UmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAg
ICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3Zjlh
ZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThh
NDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5k
RW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hh
cmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNv
dXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJh
bGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRU
YXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAg
QEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxs
ZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RF
bXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5k
bGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsK
ICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5Kiwg
TWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1
ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0Nzcz
ZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3
ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgog
ICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRy
PFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
OworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3Rv
cnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQg
Zm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3Mg
U3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNo
Tm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVs
Tm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2Vk
QmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBA
IGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMm
KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFj
aE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4
MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZj
Zjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2Vk
Q2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVm
UHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJr
ZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJz
cGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsK
ICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxs
b2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlz
LCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4
YWMzOWYzZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNz
YWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2Fn
ZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAg
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmlu
Z01vZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVy
ZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRi
NDYyZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEz
NTM5M2EzYzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNs
YW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4
LCAwLCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVy
PiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewog
ICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7
CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdp
bikgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdp
bikgY29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRl
TGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUlt
cGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxB
cnJheUJ1ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdN
b2RlKHNoYXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJi
ZDdjZmJjNWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAx
YmYyNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEyOCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3Rp
bWF0ZUluQnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUg
YmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJh
eUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9p
ZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNs
YXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVy
PiB7CiAgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZm
ZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7
CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsK
KyAgICBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQg
ZW5kKSBjb25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgp
IGNvbnN0OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwg
dW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmNwcAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42
NGZmZjRhODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAg
ICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQp
KSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkK
IHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgp
LCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgp
LCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYx
MWUwNTJiZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFz
cyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAK
LSAgICBXYXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdh
dGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9p
ZCBmaXJlQWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0
OworICAgIFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRh
ZjJlMDdlLi43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
IGVsc2UKICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAg
ICAgCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBs
KCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwor
ICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGlj
ZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+
Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5n
TW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1
YmNhNjE0MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9O
YXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1
ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUg
aW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1l
bnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRv
IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAg
ICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24p
LCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5k
ZXggMDdhNGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uOTkyMjY2YWNjYTk4
OTAyM2M4ODk1NzAyMWE3ZTVmMjlhYWQ1ZTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zCiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNC
bG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0
ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJv
ZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKaW5kZXggOWQyNTA2NzVmZGU3YzJlYzFmYjYzMWE5MWZlZWE3Y2M0MzhjNWE5Yi4u
NThhNzJiMTIxY2UxZjkzNTM5NjdhYjJhM2Q0YmI3ZDc3OWRmOGQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTMwNCwx
MCArMzA0LDEwIEBAIHZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihSZWY8UG9z
aXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlCiAgICAgaWYgKCFmcmFtZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2Vv
Tm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90
aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0
aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdU
Rk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKLSAg
ICBtX29uZVNob3RzLmFkZChub3RpZmllcik7CisgICAgbV9vbmVTaG90cy5hZGQoV1RGTW92ZShu
b3RpZmllcikpOwogfQogCiBpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0
aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxi
YWNrPiYmIGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyYmIG9wdGlvbnMpCkBAIC0zMTUs
MTQgKzMxNSwxNCBAQCBpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9u
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8UAogICAgIGlmICghZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0g
R2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qo
bm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRl
KCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayks
IFdURk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAK
ICAgICBpbnQgd2F0Y2hJRDsKICAgICAvLyBLZWVwIGFza2luZyBmb3IgdGhlIG5leHQgaWQgdW50
aWwgd2UncmUgZ2l2ZW4gb25lIHRoYXQgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlLgogICAgIGRvIHsK
ICAgICAgICAgd2F0Y2hJRCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y2lyY3VsYXJTZXF1
ZW50aWFsSUQoKTsKLSAgICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgV1RGTW92
ZShub3RpZmllcikpKTsKKyAgICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgbm90
aWZpZXIuY29weVJlZigpKSk7CiAgICAgcmV0dXJuIHdhdGNoSUQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyNThkODlh
NWFkYWJjYTU4OGExOWE0OGQ5NzhmNmVlMjIxZjhkZTdlLi5kMDlhMDUxOTY0ZTY5MTVhYzExZGZh
NzE2NjczYjA4MTMwMDFmZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwog
ICAgIGZvciAoYXV0byYgbmFtZSA6IG1faW5mby5vYmplY3RTdG9yZU5hbWVzKCkpCiAgICAgICAg
IG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChuYW1lKTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5z
b3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5
NC4uZjk4NDczNzU5NjgxYjc3Yjc5MzE3MDBiNzY0ZmJlYTJiM2EwZmYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
MTI2LDcgKzEyNiw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5k
ZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIW1fZGVs
ZXRlZCkgewogICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8uaW5kZXhOYW1lcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2RjMTIuLjE3NWJk
ZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM3MiwxMyAr
MzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwogfQogCi12b2lk
IElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hl
ZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVy
YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5z
KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBpZGVudGlmaWVy
ID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVy
YXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9w
ZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwogCiAg
ICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMxNDZlNWQ2OTJl
ZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFiYTQ5OGZhOTcw
ZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2
ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJv
Z3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3Bl
cmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICB2
b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBj
b21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZlYy4uOGRkYjU2
ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAgfQogfTsKIAot
aW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVy
YXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAo
SURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZv
aWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mKSkKIHsK
LSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFu
c2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRp
b24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDw+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAg
IHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwK
ICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJhdGlv
biA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24p
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAy
PgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlv
bigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFu
c2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBNUDIpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewotICAg
IGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4o
dHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAg
IHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwK
ICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8VHJhbnNhY3Rp
b25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAyJiBw
YXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3BlcmF0
aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2Fj
dGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRl
cjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2FjdGlv
biwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRlcjMp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxUcmFu
c2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQg
KElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHRE
YXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBv
cGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24s
IHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0s
IHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoq
Y29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0yNDcsMTIg
KzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9u
T3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBw
YXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBN
UDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwg
cGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgotUmVm
UHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1Jl
ZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAg
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElE
QlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAyJiBwYXJhbWV0
ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0g
bmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2FjdGlvbiwg
cmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFt
ZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2Fj
dGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5kZXgg
MTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNhOTlhZTA5ODFj
OGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzExMCw3IEBAIHZv
aWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3RyYWludHMmIGNv
bnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5zZXREZWZhdWx0
VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVz
dDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OlVzZXJNZWRp
YSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRzKSB9
LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdC0+
c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwogfQpAQCAtMTIz
LDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0RGlzcGxheU1l
ZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLnZp
ZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVx
dWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuIHsgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2MTI2YWYyYjM2
ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1
ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJNZWRpYVJlcXVl
c3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3Ry
ZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihuZXcg
VXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShwcm9t
aXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFSZXF1ZXN0
KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgcmVz
dWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApp
bmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42ZGU3ZTVjOGQ3
YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNDgsNyArNDgs
NyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShE
b2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFSZXF1ZXN0
PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVy
cmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwgflVzZXJNZWRp
YVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdmZGRiYzAwODBi
YzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRkZjI3ODRkOWJi
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlRmluYWxWYWx1
ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAKICAgICAvLyBO
b3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhlciAodW5pdHkt
Z2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVjdGlvbnMgd291
bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYgbmVjZXNzYXJ5
LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwg
bnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6
Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1cy0+c2V0Q2hh
bm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoYXV0byYg
b3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA4OGFlMDRh
YmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFmYzc2MTFiMzcw
MzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3LDggQEAgdm9p
ZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVhdGUgZG91Ymxl
IGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAgICAvLyBUaGVz
ZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJl
YWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7
Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5w
dXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMs
IGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8QXVkaW9CdWZm
ZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVy
OjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJh
dGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVmZmVy
U2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVmZmVyID0gbV9u
dW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAgICAgICAgIG1f
aW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0cHV0QnVmZmVy
cy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5YmRjNjgzOWQw
YmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQwNGY3YWIwNjM1
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1
dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFNRTFJlc3Vs
dFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlc3Vs
dFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNvIHdlIGNhbiBm
ZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CkBA
IC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRi
KQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJlc3VsdFNldC0+
c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAgbV9yZXN1bHRT
ZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3VsdFNldCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUu
Y3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5MDcuLjBkYzQx
MWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdlYkdQVT4gV2Vi
R1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVUFk
YXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmIGRlZmVy
cmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShk
ZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVkLnJlamVjdCgp
OwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJyZWQucmVzb2x2
ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRleCBlZWVjNGRm
NjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMxNjE5ZTAwZGI5
MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShjb25z
dCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVBZGFwdGVy
PiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvci4KLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwogfQogCiBXZWJH
UFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRl
ci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNmZWMuLjhkMDRl
NTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7Cisg
ICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRl
c2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURldmljZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAppbmRl
eCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlhNWM3NjQyZjI0
YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShS
ZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6
Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQnVmZmVyOjpX
ZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVkNjgyZmJlMjQy
OGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFkYWNkN2NiY2Iy
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVQnVmZmVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwogCiAgICAgY29u
c3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMwMzM4NDI5NDIu
LmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCkBA
IC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUNv
bW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1
ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJlZlB0cjxXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5SZW5kZXJQYXNz
KFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNo
bWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsgY29s
b3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2htZW50LmNsZWFy
Q29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFzc0Rl
c2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAg
IGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29tbWFu
ZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpKQorICAgICAg
ICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMyNTI2MzkyNDM3
YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwogCiBj
bGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29tbWFu
ZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CiAKICAgICBj
b25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9j
b21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDc3YmE0Y2JjMDhmOTZiMWUzMjJjNjlkNDg3ZjcwNTk0
MTI4NmM0MzguLmU0MGVhOTgyNzc5YTc5MzVkODM2MDgyNzA4OWEwZjAxNzUzNDE5MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtNDYs
OCArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVEZXZpY2U+IFdl
YkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCiB7Ci0gICAg
YXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFrZSBhZGFwdGVy
IGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVybiBkZXZpY2Ug
PyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxl
YXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURldmlj
ZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4gY3Jl
YXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNl
KFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFw
dGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjAsMTUgKzYxLDE3
IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0
ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9yIG5lZWRlZD8K
LSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3Jp
cHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSB9KTsKLSAgICByZXR1cm4g
YnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDog
bnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQ
VUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSkp
CisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1
bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXaGF0IGNhbiBi
ZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFk
ZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KTsK
LSAgICByZXR1cm4gbW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJl
bGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUgPSBtX2Rldmlj
ZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlw
dG9yLmNvZGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSht
b2R1bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxpZGF0ZUFuZENv
bnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQpAQCAtODksMTQgKzkyLDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxpbmUgPSBtX2Rl
dmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsg
V1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwgZGVzY3JpcHRv
ci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwotICAgIHJldHVy
biBwaXBlbGluZSA/IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFz
ZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2Ut
PmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1v
dmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJp
bWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAgICAgcmV0dXJu
IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gY29t
bWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgcmV0dXJu
IGNvbW1hbmRCdWZmZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tbWFuZEJ1ZmZl
ciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJldHVybiBXZWJH
UFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZp
Y2U6OmdldFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5NzUwY2I3NGE2
ZGI3NjU3YjJjZTgxZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1MzFjMGZmOTg2
NDdiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRC
dWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
IGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKaW5kZXggMzEyOTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3Zi4uODdhN2Vh
ZjE5ZjA5OTA3MWRiN2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CiAKICAg
ICAvLyBGSVhNRTogTGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2lnbmVkIGxvbmc+
LiBXaHkgaXMgdGhlIGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5nIHRoZSBJREwg
d2FudHMgYSBzZXF1ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVy
cyh1bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYsIFZlY3Rvcjx1
bnNpZ25lZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4Zjk3Mzg2MmE0
ODhlYzBjMzFlYTlmYS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEzOTI4NjQ1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0
ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmIHBpcGVsaW5lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBp
cGVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzczY2FjZDkyMGY5
N2QyMi4uMzkxN2ZhZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5o
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShS
ZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAgUmVmPEdQVVJl
bmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUu
Y29weVJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5MjMwNDFjZjhl
NTk2Yjg2MWI5OGUuLjk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmExYzdmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVT
aGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hh
ZGVyTW9kdWxlOjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9k
dWxlKSkpOwogfQogCiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1vZHVsZShSZWY8
R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2VjMjRhMWZlMDlh
NmViNGM2Zjc0NTdhMGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2Y2FkNDViMzMz
NzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1
bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3Jl
YXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBjb25zdCBHUFVT
aGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0cigpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKaW5k
ZXggYzY3ODBlZjYxYjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5ZDdmOTYzYmQy
ZTkxNTdkODVjZGQzN2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAgV2ViR1BVVGV4
dHVyZTo6V2ViR1BVVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQogCiBSZWZQdHI8
V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmll
dygpCiB7Ci0gICAgYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcoKTsKLSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1cmVWaWV3Ojpj
cmVhdGUoZ3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkpCisg
ICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmVWaWV3LmNwcAppbmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0YjEyMzQ2NTFj
Li43MjY1OTQ1YTIzZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCkBAIC0z
MCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVRleHR1
cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcp
CitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVRleHR1
cmVWaWV3KFdURk1vdmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVU
ZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVWaWV3OjpXZWJH
UFVUZXh0dXJlVmlldyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBmZDgxNDkyYjA4
MWRmY2RjOTFiZWY1MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2UwZGYzOTUwM2Y4
NzkxYmVjYTA5MmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0
dXJlVmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+
IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJl
Vmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVUZXh0dXJlPiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGYxMTRi
YTk0OWIwYjMyZDBmNmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3N2M4MTQ0YmI2
YmY2NTdiN2ZkMGFjMmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQdHI8UmFuZ2U+
IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRyPFJhbmdlPiBv
cmlnaW5hbFJhbgogICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgZW5kUG9z
aXRpb24gPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdlLT5lbmRDb250
YWluZXIoKSk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9IFJhbmdlOjpj
cmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwotICAgIGlmICgh
c2VhcmNoUmFuZ2UgfHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1dG8gc2VhcmNo
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0
aW9uKTsKKyAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSht
X2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9uKCkp
OwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2Vh
cmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOworICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFs
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZp
bmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFy
Z2V0T2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJSKE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0
Q2FjaGVBdGsuY3BwCmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5MzM2NzZjZDA5
ZjAuLmY3Y2QzYWE4YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3Bw
CkBAIC0zMzcsOCArMzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAgICAgICAgLy8g
Q29uc2lkZXIgcHJldmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJlc2VudCBmb3IK
ICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gZW5zdXJlIHdl
IGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxpbmUgdGV4dCBh
cmVhcykuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBvZmZzZXRUb0Vt
aXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5v
ZGUoKSwgMCwgbm9kZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0VtaXQsIHRleHRU
b0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5r
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwCmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMyMzRmNjA4ZGE2
MDcuLmJjMTZlNGIyOTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdpbnQgd2Via2l0
QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAg
IGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2Rl
KSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdl
LmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNz
aWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAgLTI4Niw4ICsy
ODYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgo
QXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9i
amVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpj
cmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVu
dE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0
UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRrSHlwZXJsaW5r
KiBsaW5rKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDE4YzllOWI1
Nzk3Yzk5MTZkMjYyNWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2ZjNDE1YjBlZWQ1
N2I0NGZmMmQ3OWFiY2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
QEAgLTQwNiwxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JP
YmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAKICAgICAvLyBD
YWxjdWxhdGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0aGUgb2JqZWN0
LgogICAgIFBvc2l0aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUobm9kZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50ID0gUmFuZ2U6
OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VT
dGFydCk7CisgICAgYXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAKICAgICAvLyBT
ZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBs
ZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNv
dmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtP
ZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50
LmdldCgpLCB0cnVlKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAg
IGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLmdl
dCgpLCB0cnVlKTsKKyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0a09mZnNldChj
b3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJlbnQucHRyKCks
IHRydWUpKTsKKyAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJhbmdlTGVuZ3Ro
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOwogCiAg
ICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gd29ya2luZyB3
aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgpID09IFVQ
U1RSRUFNKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDhj
N2IxY2YzOGI5Y2I4OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhlOWQwYTdkM2Vj
YWU3MDJhNDM5NTYyZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCkBAIC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05T
UmFuZ2U6KFJhbmdlICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWluZXIoKSAhPSBz
Y29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNjb3BlKSkKICAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAgUmVmUHRyPFJh
bmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwg
MCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAg
YXV0byB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwg
MCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CiAgICAg
QVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBz
dGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkp
OworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0
UmFuZ2UucHRyKCkpOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIo
KSwgcmFuZ2UtPmVuZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250
YWluZXIoKSA9PSBzY29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1cm4gTlNNYWtl
UmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RU
YXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAKaW5kZXggOWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBkODcxNS4uMzU0
NWQ1ZDUxMWZmODY4MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC03OCw4
ICs3OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0VGFzazo6SlNH
bG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNy
b3Rhc2s+JiYgdGFzaykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyB9KQog
ewotICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTR2xvYmFs
T2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAg
IG1fdGFzayA9IFtjYWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgYXV0
byBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3Qs
IFdURk1vdmUodGFzaykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwo
KTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKaW5kZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkxYTI4N2FhYi4u
ZTdkOTM3ZWVhNzRjMTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDksOCArMjA5LDgg
QEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCi0gICAgUmVm
UHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6
Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFtjYWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rh
c2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8g
bWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4o
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXgg
MzgwYWQ1YmQxNTIwMTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYwNGNiYWViODdm
MDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMzLDkgKzEzMyw5
IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSY+KG9i
amVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAg
YXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7
Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNr
TWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFja10o
KSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxi
YWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5NmM4OWQxMzhj
MzU2NmEzMWMwY2MyNDkuLmU2NmU5NTdmYmYxYzk1MmQ5OWFlZTA4MTkzNjZlMDMyMjllYTBjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQpAQCAtODUsNyArODUsNyBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBO
UE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0lu
c3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBh
dXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3Qs
IFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVj
dGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1MjhiYThjZWI5
ODczY2I2ZjEzMzU5MzYzNWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVhZTM4MDVh
NzAyYjY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xvbmVEZXNl
cmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW50U2l6
ZSBpbWFnZVNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bGVuZ3RoIHx8IChpbWFnZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVuZ3RoKTsK
LSAgICAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRl
KGltYWdlU2l6ZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRl
KGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAg
IGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1OCw3ICsy
OTU4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3NoYXJlZEJ1
ZmZlcnMtPmF0KGluZGV4KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4
KSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gZ2V0SlNWYWx1ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5h
cHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVl
ID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWMs
IHZhbHVlKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUxNWU1NTYw
ZDQ0OTY1ZGE2NDA0MTU0ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVmODNhOWMz
MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCkBAIC0z
NCw3ICszNCw3IEBAIGNsYXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNlIDogcHVi
bGljIEluc3RhbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0YW5jZT4g
Y3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAgIHN0YXRp
YyBSZWY8T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9i
amVjdD4mJik7CiAgICAgdmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAgc3RhdGlj
IHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3QqIGV4Y2Vw
dGlvbkVudmlyb25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVudCBtZWFu
cyB0aGUgZXhjZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBlbnZpcm9u
bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4
IDBhZWMwY2VlYWY5YzZjMmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2FmZmM2NmFk
ZjcyNDJjYzQ2MDFjZDMyYTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3RhbmNlOjpP
YmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3Qp
CiB7CiB9CiAKLVJlZlB0cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGlu
c3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJbnN0YW5j
ZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYm
IHJvb3RPYmplY3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5hZGQoKF9f
YnJpZGdlIENGVHlwZVJlZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7Ci0gICAgICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBhZG9wdFJl
ZihuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7Ci0gICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShy
b290T2JqZWN0KSkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5w
dHIoKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3RhbmNlOjp+
T2JqY0luc3RhbmNlKCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApp
bmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNkOWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEy
NmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUwNWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKQEAgLTE3MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291
cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9p
bW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBt
X2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZm
ZXIpOwotICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5n
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShi
dWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4g
d2hldGhlciBvciBub3QgZm9udEZvckZhbWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tp
bHksIG5vbmUgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJh
MzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2UxMWVmYjA0YTYyLi4wYTAxN2RiNDRkYmVkZGIwNzY5Yjcx
NjQ4NzNhYmYxYWQ5YTQxYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBA
IC0yNTksNyArMjU5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxl
cygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBT
dGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQgcnVsZUNvdW50ID0gbGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVDb3VudDsgKytpKQogICAg
ICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcAppbmRleCBhMjRhNTM2MjY4OTBhOGE5MWQxMTczOGNhOWE1OGE0NTM3MWJiOGI4Li5lMzQ5
MTcxMjg3ODkwYjk4NzRhNzA0YWI3YjQxYmY2OWNkYTU1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgp
IGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFt
X2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9z
OwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9iYWNraW5nLT5yYW5n
ZXMoKSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0
ZShyYW5nZS5mcm9tLCByYW5nZS50bykpOwogICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsK
QEAgLTM5MCw3ICszOTAsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNv
bnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2Jh
Y2tpbmctPmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJub3JtYWwi
X3M7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9iYWNraW5nLT5mZWF0
dXJlU2V0dGluZ3MoKSkKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFsdWU6
OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAgICBy
ZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0lu
c3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNT
U09NV3JhcHBlcnMuY3BwCmluZGV4IGZkYjhlM2FmNzlhYzYyYjc4OTU2MGI4M2MzN2ViNzQzYzhm
ZTYxMmYuLmJkZWZlYzRhN2ZhN2M0MGIzNjlhMGEzZDJmMGUzZDM2YjcyODc3NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTc5LDkgKzc5
LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRD
b250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMqIHMKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBw
ZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOwotICAgIG1fc3R5bGVTaGVl
dENTU09NV3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3Qoc3R5
bGVTaGVldFdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NT
dHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOworICAgIG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIuY29weVJlZigpKTsKKyAgICBjb2xsZWN0KHN0
eWxlU2hlZXRXcmFwcGVyLnB0cigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
Ojpjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+JiBzaGVldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDMzMWU4MzYzZmFlODdhYjQ1M2ZjMWU3ZDU1Mzll
MDk4MDZmYjEzNTIuLjJiNzVlYmJmNzg2YTlkNjQzZmZiMWM3ZDNiOTM5MThiOTI4MDg2NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHN0cm9r
ZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1CiBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3Vy
cmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7CiAgICAg
aWYgKHBhaW50VHlwZSA+PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpIHsKLSAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX1VSSSkpOwogICAgICAgICBp
ZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSkKICAgICAgICAgICAgIHZhbHVl
cy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDc0ZmEzZjUzOThmZTZm
YmU0MjQ2Y2U2YzEwZDM4ZDU5ZjhlMmIzYTYuLjZhMjAzNjBhNTQ2MDI2YTFjZmY4MTI3YWU4MTUx
ZWFmMjMzMDA0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODAs
OCArMTk4MCw4IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhj
b25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBTdHJpbmcg
Y3NzVXJsID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1
cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7CiAKLSAgICAgICAgICAgIFJlZlB0
cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAg
ICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOworICAgICAg
ICAgICAgYXV0byBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShj
c3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGTW92ZShvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggMGRjMTA5
OGY1NGY4NGJiZjJiYTdiYmEzNTk3MWI2OGQ1YTlkYmJlYy4uMWVlZmViOGJkMTBjMjU0YjgyNGJj
MDZjZDViOGFlZjA2NjAyMTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEy
ICs0NSwxMiBAQCBzdHJ1Y3QgU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpS
ZWZDb3VudGVkQmFzZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9
PSBzaXplb2YoU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9z
dGF5X3NtYWxsKTsKIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09N
V3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKK1JlZjxDU1NSdWxlPiBT
dHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hl
ZXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwg
bnVsbHB0cik7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1
bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsg
CiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihudWxscHRyLCBwYXJlbnRSdWxlKTsKIH0K
QEAgLTEzMSw3ICsxMzEsNyBAQCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29w
eSgpIGNvbnN0CiAgICAgQ1JBU0goKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVD
U1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1
bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFz
ZSYgc2VsZiA9IGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE2OSwxMSAr
MTY5LDEzIEBAIFJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTCiAgICAgY2FzZSBDaGFyc2V0OgogICAg
IGNhc2UgS2V5ZnJhbWU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIEFTU0VSVChydWxlKTsK
KwogICAgIGlmIChwYXJlbnRSdWxlKQogICAgICAgICBydWxlLT5zZXRQYXJlbnRSdWxlKHBhcmVu
dFJ1bGUpOwotICAgIHJldHVybiBydWxlOworICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxs
KCk7CiB9CiAKIHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaAppbmRleCA2ODA3MTQxZmVlYTcxYjA3NmFmYTlhNGE2OWEzY2QyNmZjNTMy
Mjg4Li43MTgwNTIzMTM4NDQwMzJmNzVjOWM2Y2QxZTVhYTkzZGJlZGQ0MmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJs
aWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZXJlIHNo
b3VsZG4ndCBiZSBhbnkgbmVlZCBmb3IgdGhlIG51bGwgcGFyZW50IHZlcnNpb24uCi0gICAgUmVm
UHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVl
dCA9IG51bGxwdHIpIGNvbnN0OwotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNT
U09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgYm9vbCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZmFsc2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xh
c3MgU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUmVmUHRyPENT
U1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NT
UnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA1OwogICAgIC8vIFRoaXMgaXMgb25seSBuZWVk
ZWQgdG8gc3VwcG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKaW5kZXggMGZlZTg0Y2Q3ZWIyNjc5MmUzZGY2ZDQ2
N2U5MGE2MmYxZmQwY2M1NC4uNjY4NGE4YWVhMTRiZWJkNmQzODUzMjZhNGI0ZGFlZTk3NzdlN2Fh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjp+Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcigpCiAgICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUobV90YXJn
ZXQucHRyKCkpOwogfQogCi1SZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hp
bGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFy
Z2V0KQorUmVmPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHsKICAgICBB
Y2N1bXVsYXRvck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGFjY3VtdWxhdG9yTWFwKCkuYWRkKCZ0
YXJnZXQsIG51bGxwdHIpOwogICAgIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9y
PiBhY2N1bXVsYXRvcjsKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKEMK
ICAgICAgICAgYWNjdW11bGF0b3IgPSBhZG9wdFJlZihuZXcgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcih0YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JD
aGlsZExpc3RNdXRhdGlvbih0YXJnZXQpKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBhY2N1bXVsYXRvci5nZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yOwor
ICAgIHJldHVybiBhY2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBpbmxpbmUgYm9v
bCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3JkZXIoTm9kZSYg
Y2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRl
eCA5Yjk0MzcxNmRiYzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2NzY3NzY4ZjBk
NzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yIGlzIG5v
dCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNjb3BlIGlzIHRo
ZSBwdWJsaWMgaW50ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9y
Q3JlYXRlKENvbnRhaW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5vZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXgg
ZDU1YzU2ZjEzNjkzMjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYzMGMzMzAwYjlh
NzkwMmZhN2JjYmUyMmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1h
cmtlciwgTm9kZSYgbgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXcoKSB8fCAhbm9k
ZS5kb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlZmFjdG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2UgKGJlY2F1c2Ug
d2Ugb25seSBoYXZlIG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0aCBhYnNvbHV0
ZVRleHRRdWFkcygpLgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwg
bWFya2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAgICAgICByZXR1
cm47CisgICAgYXV0byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgp
LCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkp
OwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAgICAgbWFya2Vy
UmFuZ2UtPmFic29sdXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRydWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDEwOWY3
MjRjNTgzMTYwYTcxOGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQyODRiNzcwMzU1
ZGM0ZTBhNmQxYzI3NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGluZVN0eWxlU2hl
ZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5bGUoZG9jdW1l
bnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNLbm93bk5vbmNl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVl
cmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChkb2N1bWVudCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6
Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CiAKICAg
ICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1ZSk7CiAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsKICAgICBMT0co
TWVkaWFRdWVyaWVzLCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCBldmFsdWF0
aW5nIHF1ZXJpZXMiKTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmll
cykgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBpZiAoIXNjcmVl
bkV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRl
KG1lZGlhUXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0eWxl
U2NvcGUpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNy
ZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAg
aWYgKGF1dG8qIGNhY2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCkuZ2V0KCpjYWNo
ZUtleSkpIHsKICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNoZWFibGUoKSk7
CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKCpjYWNo
ZWRTaGVldCwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3No
ZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAg
ICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7
CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgICAg
ICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0gU3R5bGVTaGVl
dENvbnRlbnRzOjpjcmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGVsZW1l
bnQpKTsKIAogICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29udGVu
dHMuZ2V0KCksIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAgbV9zaGVl
dC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAgaWYgKCFlbGVt
ZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQu
dGl0bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5MTQzMTI4Yzll
MmIxMzkyZWE5ZmM5N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZjMzY2YzA3Y2Rl
N2I4MDk4ZmQyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00OSw3ICs0OSw3
IEBAIGNsYXNzIFBvaW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKICAgICAg
ICAgYm9vbCBpc1ByaW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmUHRy
PFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGlu
aXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplcikp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmluZGV4
IGNmOGUzOTNiODYzZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0NjkwNTJiNWNi
MzEwYTlhMjZlZGQ0M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNlckdlc3R1cmVU
eXBlIHsgRXNjYXBlS2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuIDogcHVi
bGljIFJlZkNvdW50ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
IHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGljIFJlZjxVc2Vy
R2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVz
ZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsK
ICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggNTgyYmUwZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4uOThhYmM3MzZk
NzUwNjg0M2YzMjFjMGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFy
dCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9y
ZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5n
ZQogICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUg
c3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVmUHRyPFJhbmdl
PiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkp
OworICAgIFJlZjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+
c3RhcnRQb3NpdGlvbigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0
aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICghc3RhcnRQb3Np
dGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRl
eHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNh
biBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgpKTsKKyAgICBp
bnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7CiAK
ICAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2Qg
bWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAgIGF1dG8gcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYsMTIgKzI2Niwx
MiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNw
ZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1f
ZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0ZWQsIEZyYW1l
U2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVTZWxlY3Rpb246
OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
KyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5yZW1vdmVN
YXJrZXJzKHJhbmdlLmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+
IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3Rl
ZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5n
TWFya2VyKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMucmVtb3Zl
TWFya2VycyhyYW5nZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
PiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0
ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGlu
Z01hcmtlcik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQzLDEwIEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXNDcmVhdGVMaW5r
Q29tbWFuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKLSAgICBp
ZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFy
dCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsK
LSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxh
Y2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdl
LnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFy
a2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7
CiB9CiAKIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0
b2NvcnJlY3Rpb25BCiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGluZ0NoYXJhY3Rl
clBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHByZWNlZGlu
Z0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVj
ZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0cmluZyBzdHJp
bmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
cHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7CisgICAgU3Ry
aW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIoKSk7CiAg
ICAgaWYgKHN0cmluZy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNl
KHN0cmluZ1tzdHJpbmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IE1hcmsgdGhpcyB3aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRlZCBhbiBhdXRv
Y29ycmVjdGlvbiBmb2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNvIGlmIHRoZSB1
c2VyIHR5cGVzIHRoZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBwb3NpdGlvbiwg
d2UKICAgICAvLyB3b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdG
b3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPm1h
cmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCksIERvY3VtZW50
TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
Ojpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0IFRleHRDaGVj
a2luZ1Jlc3VsdCYgcmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nVG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAgYm9vbCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBE
b2N1bWVudE1hcmtlciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFya2VyLCBlbmRP
ZldvcmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFpbmVyTm9kZSgp
OwotICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5k
b2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9m
ZnNldCgpKTsKLSAgICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOworICAgIGF1
dG8gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBt
YXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKKyAgICBTdHJp
bmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAgICBpZiAoIWN1
cnJlbnRXb3JkLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9vcmlnaW5h
bFRleHQgPSBjdXJyZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkpIHsKICAgICBj
YXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5h
dGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1v
dmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmcoKTsKICAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGlu
Z1N1Z2dlc3Rpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
UmVwbGFjZW1lbnQ6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7
CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAg
ICAgICAgIG1fZGV0YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAgICBzdGFydEFs
dGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbik7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAg
ICAgICAgIGF1dG8mIG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uRGF0YT4obWFya2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29yZCAhPSBtYXJr
ZXJEYXRhLm9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gbWFy
a2VyRGF0YS5jb250ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0
ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4MTRhZDFkM2Zk
YTZhZjg2OTY4OGJmYzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0MjZmNzRiNjAz
Njk3MWZjOGNlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29wZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFJlZlB0cjxS
YW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25J
bk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHN0YXJ0
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7CisgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmly
c3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGludCBlbmRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogCiAg
ICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJs
ZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFydChlbmRPZlBh
cmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0LDEyIEBAIHZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxl
KQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhT
dGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7
Ci0gICAgZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFu
Z2UpCi0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
ZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRvIHN0YXJ0UmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFy
dEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAg
ICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1cGRhdGVTdGFy
dEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIH0KIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5
U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMDUx
LDkgKzEwNTMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxl
QXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgZWxlbWVu
dHNUb1B1c2hEb3duLmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZSgpOworICAgICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQotICAgICAgICAg
ICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1l
bnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7Cisg
ICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2FzdDxI
VE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLnB0
cigpKTsKIAogICAgICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91Z2ggY2hpbGRy
ZW4gb24gZWFjaCBsZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFnZ3JlZ2F0ZSBp
bmxpbmUgY2hpbGQgZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3cmFwIGVhY2gg
Y2hpbGQgc2VwYXJhdGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUs
IE5vZGUqCiAgICAgICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMgY29udGFpbmlu
ZyB0YXJnZXROb2RlIGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdldE5vZGUKICAg
ICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQgdGhlbiBhbHdh
eXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0YXJnZXROb2Rl
IHx8IHN0eWxlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVz
aERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXBw
bHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAK
ICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBvdXRlciBsb29w
IChjb250YWlucyB0YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFjaGVkIHRhcmdl
dE5vZGUsIHN0b3AgdGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBvZiB0aGUgY3Vy
cmVudCBpbm5lciBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2NGNiNWMxZGIw
ODMuLjMwYjM3MmZiNTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0zODIsOCAr
MzgyLDcgQEAgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojp0YXJnZXRSYW5nZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6
Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9Owor
ICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2Up
IH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3NjcsMTUgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFy
a2VycyhUZXh0JiBub2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1h
cmtlckNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRvIG1hcmtlcnMg
PSBjb3B5TWFya2VycyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNvdW50KSwgRG9j
dW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUs
IG9mZnNldCwgY291bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBuZXdS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9m
ZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIHJl
cGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBtYXJrZXIgOiBt
YXJrZXJzKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1hcmtlci5p
c0RpY3RhdGlvbigpKSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihu
ZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCksIG1hcmtl
ci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAgICAgbWFya2Vy
Q29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtl
ci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgbWFy
a2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1h
cmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIo
bmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKICAg
ICB9CiB9CiAKQEAgLTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBp
ZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3Rh
cnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92
ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAg
ICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBzdGFydElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAgICAgICAgICAg
aWYgKGVuZEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5k
ZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAg
ICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IHRvIGNy
ZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAgUG9zaXRpb24g
c3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBs
aWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNh
dGVkTm9kZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsK
KyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29t
cGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFu
Z2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4g
dGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0ZXIgdGhvdWdo
LCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBzbWFsbC4KICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhpcyB1c2VkIHRv
IHVzZSBhIHRlcm5hcnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25mdXNlZCBzb21l
IHZlcnNpb25zIG9mIEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlICE9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFs
QXBwZWFyYW5jZSgqcmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBD
b252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJl
c2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmlu
ZygpKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlzIG1vdmVkIHdo
ZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8gYW55dGhpbmcg
aWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkgcGFyYWdyYXBo
IGNhbiBoYXZlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2ZDZlNjY1NWVi
MDk3NWE2Li5hNmQxNzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTY5Myw5ICs2OTMsOSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdy
YXBocygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5k
ZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVudCgpLT5zaG91
bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0
KCkpKQorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQo
KS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdlVG9CZVJlcGxh
Y2VkLnB0cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQYXJhZ3JhcGhz
IHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0aGF0IHdvdWxk
IHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwCmluZGV4IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0ZWVlNWMuLjg2
ZDAyMWQxOGE0NzkxM2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQg
aW4KICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29u
dGVudHMobm9kZSk7Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsKKyAgICBDaGFy
YWN0ZXJJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShpbmRleCAtIDEp
OwogICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24oKSA6IGl0LnJh
bmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAwMTM4OWQxYzhh
ZGI0NzM4YS4uYjM4YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcxNCw3IEBAIHZv
aWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBwYXJlbnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVkU3R5bGUobm9k
ZS5wYXJlbnROb2RlKCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBub2RlU3R5
bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAKICAgICBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsKQEAgLTgyOCw4
ICs4MjgsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hvdWxkUmVtb3Zl
U3RyaWtlVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVjb3JhdGlvbkNo
YW5nZTo6UmVtb3ZlOwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwgc2hvdWxkUmVt
b3ZlU3RyaWtlVGhyb3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFs
dWVMaXN0ID0gdGV4dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkgewotICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5
KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRWYWx1ZUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRv
IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAgYXV0byBleHRy
YWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAK
ICAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUp
OwogICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1ZUxpc3QtPmhh
c1ZhbHVlKHVuZGVybGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBib29sIEVkaXRp
bmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQm
IGVsZW1lbnQsIFJlZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlzdC0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGlmIChuZXdWYWx1ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBuZXdJbmxp
bmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgbmV3VmFsdWVM
aXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEsNyArMTA3MSw3
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24gb25seSBy
ZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rpb24gd2FzIG1v
ZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJvcGVydGllcywg
dGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hpY2ggb25lIG9m
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxsZWQuCi0gICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRv
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZUF0
UG9zaXRpb24gPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHlsZS5nZXQoKTsK
IAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcgKzExNTgsNyBA
QCBzdGF0aWMgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RFZGl0aW5nUHJv
cGVydGllcyhjb25zdCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxp
bmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIENTU1By
b3BlcnR5T3ZlcnJpZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJvcGVydGllc1Rv
SW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21SdWxlcyA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5saW5lU3R5bGUo
KSkKQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJv
bVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFRo
ZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3QgcmVmbGVjdCB0
aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6IHN0eWxlPSJo
ZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAgICAvLyBGSVhN
RTogVGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTE5NTEy
Mz4gU2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVmUHRyPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgY29tcHV0
ZWRTdHlsZSgmZWxlbWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBtX211
dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21wdXRlZFN0eWxl
KTsKKyAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoZnJvbUNv
bXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5T
dHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20s
IE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9p
ZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVt
ZW50JiBlbGVtZW50LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRp
ZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMpOwogCiAgICAg
Ly8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92ZXJyaWRkZW4g
YnkgbWF0Y2hlZCBydWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRlZFN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4
dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVkU3R5bGUtPm1f
bXV0YWJsZVN0eWxlKSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKQogICAg
ICAgICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAgLTE4MDIsNyAr
MTgwMiw3IEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0
UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVy
dGllcywgVCYgYmFzZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHJlc3VsdCA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQ
cm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGJhc2VT
dHlsZSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVjZGZjM2M5N2Q4
YjNkMy4uNTlhNGI4MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBFZGl0b3I6OnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246Okxl
ZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5
bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlv
bik7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBFZGl0
QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVjdGlvbiBFZGl0
b3I6OmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdApAQCAtMjAy
Myw4ICsyMDIzLDggQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAgICAgICAgdW5z
aWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3RhcnQsIGV4dGVu
dE9mZnNldCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihzdGQ6Om1heChz
dGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7Ci0gICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJhc2VOb2Rl
LT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwotICAgICAgICAg
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVkUmFuZ2UuZ2V0
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6Tm8pOwor
ICAgICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+
ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAgICAgICAgICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLnB0cigp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
aW5kZXggNTZjYTViZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4uOWZkYWMxZDYx
MTk1MzhhY2UzZDRiZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
RWRpdEFjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSYg
ZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCiB7Ci0g
ICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0
eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdo
ZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAg
ICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGlu
ZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFn
cmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURP
TVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFw
aFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3Jh
cGhTdHlsZShzdHlsZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVKdXN0aWZ5UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZyYW1lLmVkaXRv
cigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rp
b24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rp
b246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3Jl
YXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENT
U1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgp
LCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0bCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAppbmRl
eCA2ZjUzMjA4ZmU2YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2YzdmZGUyMWRi
YjIwMzRiNTljNWI5NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9pZCBGb3JtYXRC
bG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9z
aXRpb24mIGVuZCwKICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFydC5kZXByZWNh
dGVkTm9kZSgpID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA6IHNw
bGl0VHJlZVRvTm9kZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1NwbGl0VG8pOwog
ICAgIFJlZlB0cjxOb2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91dGVyQmxvY2s7
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCogcmVmTm9kZSA9
IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiByb290ID0gZWRp
dGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVsbCBmb3IgZWxl
bWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290IHx8ICFyZWZO
b2RlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHJl
Zk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFydCkKLSAgICAg
ICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdp
dGhpbigqcmVmTm9kZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVu
ZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFuZ2UuZ2V0KCkp
KQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2VuZGFudE9mKCpy
ZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVudCB0aGF0IG9u
bHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChyZWZOb2RlLT5o
YXNUYWdOYW1lKHRhZ05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVG
b3JtYXRDb21tYW5kLmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1NzQwNWY5NDhi
YWNjYWMyLi40ZWMwYjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKQEAgLTgzLDEz
ICs4MywxMyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIEdl
dCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdzIHRoZSBzdHls
ZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3JlIG9wZXJhdGlu
ZyBvbi4KICAgICBOb2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudCgpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUocm9vdCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVyeXRoaW5nIGJ1
dCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYWNj
ZXNzIHN0eWxlKCkuCiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAKLSAgICBhcHBs
eUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCks
IGRlZmF1bHRTdHlsZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRp
dGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlzRWxlbWVudEZv
clJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHAKaW5kZXggNTAyYmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5MS4uMDQxZjlk
MTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODks
OCArODksNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRp
Y1JhbmdlPj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25z
dAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRl
RnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKm1fcmFuZ2VU
b0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNDgw
NGU5MGE4ZTIyOWNiOTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFhNzFmZmMxZjcx
NTE3NmVhMGY1MzY2YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKEluc2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gZG93bmNh
c3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3QgU3R5bGVQcm9w
ZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0gICAgICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
aW5saW5lU3R5bGUpOworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoaW5saW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUpIHsKICAgICAg
ICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAg
VmVjdG9yPFF1YWxpZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2LDcgQEAgc3Rh
dGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNlbWVudEZyYWdt
ZW50JiBmcmFnbWVudCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTm9kZSog
d3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0
eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2VydGlvblBvcyA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Qb3MtPnN0eWxl
KCktPmFzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBhcmlzb24gaXMg
YSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyArODA0LDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJbnNlcnRlZE5v
ZGVzJiBpbnNlcnRlZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4pCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUo
KSk7CiAgICAgQ29udGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVTcGFuLT5wYXJl
bnROb2RlKCk7CiAKICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3aXRoIGEgUGFz
dGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5nIGludG8gYSBx
dW90ZWQgcmVnaW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4Zjg1OGRmNGRi
YzM2YWYzNzgzYi4uN2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4MjM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwCkBAIC0xMjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAg
UmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
bV9yYW5nZVRvQmVDb3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07CisgICAgcmV0
dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9CZUNvcnJlY3Rl
ZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFiNzY4M2FiM2U0
NzJmMWE5ZjM1N2FkNzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1MTQwYzUyMGU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtMzM3LDggKzMzNyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgIGlmIChp
blNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+
ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVy
IG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUg
ZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQg
dG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBt
X3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRPZmZzZXQgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1cnJlbnRFbmRP
ZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UucHRyKCkp
OwogICAgICAgICAgICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGN1cnJlbnRTdGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAgLTM5Nyw4ICsz
OTcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9u
KSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xv
Y2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZp
cnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBh
cmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdy
YXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVs
bGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFz
UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJhZ3JhcGhPZmZz
ZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIo
KS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQg
Kz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigp
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxs
aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IHNw
ZWxsaW5nT2Zmc2V0OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBi
CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQg
PSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChw
YXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
ICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2N2Y4ODVlYWI1
ZWRjYTk4YTIyY2U1YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUxMWZkZjRkOTk4
YTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0yNjUs
OCArMjY1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlw
ZSk7Ci0gICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgKmNtZCwgc2Vs
ZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRvIGNtZCA9IFR5
cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9u
cywgY29tcG9zaXRpb25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1l
LmdldCgpLCBjbWQuZ2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlv
bik7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBk
b2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJvb2wgVHlwaW5n
Q29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFu
ZFR5cGUsIFRleHRHCiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElu
cHV0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmco
KnRoaXMsIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpKTsK
IAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3Jl
YXRlRnJvbVJhbmdlKCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFw
cGx5RWRpdGluZygqdGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1cm4gZnJhbWUo
KS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpjcmVh
dGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdB
ZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFR5cGlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAzOTUwMzYxYmJh
ZDU5MTRkZGRkMzIzNDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0MWZhZWNlNTBk
NzE5Yzk2MmNkZmFjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CkBAIC0xODkzLDEwICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvCiAgICAgYm9v
bCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11c3QgY29tZSBm
aXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1
bWVudCgpLAorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50
KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhlciA6IHZwKSk7
Ci0gICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQo
KSk7CisgICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5w
dHIoKSk7CiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDogZGlzdGFuY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXgg
NWNjZjQ0NjI0MDk2ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2ZmExYWM0YTli
NjljODVmMDk2NmJhMjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQo
KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApp
bmRleCA3NWY1NGExMzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4yYzRiNjBkMDE0
MzMxMTE1Y2I5MTJjNzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCArNjcsOCBAQCB2
b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQqIHJvb3QgPSBh
ZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklYTUU6IEFkZCB0
aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUgcmVzdWx0cyBh
cmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3JzLgotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVw
RXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0VuZCA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICop
cm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgZW5kSW5k
ZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCksIHRydWUpOwog
ICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAKICAgICBpZiAo
c3RhcnRJbmRleCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0K
aW5kZXggZjM3ZmRlN2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4uMjMwZjVlM2I0
MTczMmIxZTYyODQ1MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgIC8vIElmIHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVudCwgZmxpcCBs
ZWZ0LT5yaWdodCBhbmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwgZG8gbm90aGlu
Zy4KIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0
eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KSk7CisgICAgYXV0byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVj
dGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGlmICghc2Vs
ZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzgsMTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5
bGUoc3R5bGUuZ2V0KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkpOwog
fQogCiB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IG1vZGlmeSBi
eSBhcHBseWluZyB0aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2ZyYW1lLmRvY3Vt
ZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCktPm11dGFibGVD
b3B5KCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVmYXVsdFN0eWxl
ID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRl
eHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9w
ZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3Zl
VW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBsZW1lbnRzIHVu
ZGVybGluZQogCiAgICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3RseWUgPHJkYXI6
Ly9wcm9ibGVtLzkxNTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRjaCBzdHlsZSBz
aG91bGQgc2F5ICJVbmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihk
ZWZhdWx0U3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMpOworICAgIGFw
cGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rpb246OkNoYW5n
ZUF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVs
ZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdlKQpA
QCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAgICBQb3NpdGlv
biBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24oJmltYWdlRWxl
bWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVmUHRyPFJhbmdl
PiBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVm
b3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGllbnQoKS0+Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBwYXN0ZWJvYXJk
SW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKKyAgICBhdXRv
IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBiZWZv
cmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVudCgpLT5nZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBhc3RlYm9hcmRJ
bWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwogCiAgICAgcGFz
dGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3ZTc5YmUxZDY5
MmYyNWYuLjNmZTZmNGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lk
IEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcihtX2ZyYW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNo
b3IpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90
U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
IApAQCAtMTc2LDkgKzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJv
YXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxhaW5UZXh0Owot
ICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJv
bVBhc3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsK
KyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZy
b21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9zZVBsYWluVGV4
dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KCpub2RlLCAq
ZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCBy
YW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAgICBpZiAoc2hv
dWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9ySW5zZXJ0QWN0
aW9uOjpQYXN0ZWQpKQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVh
c2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBm
YWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7CiAgICAgfQog
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFn
ZUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYxYWFiZGExOTgz
NC4uNTc0NzIwZTc0MzNiM2FlNzI5ZDNkNDNjM2MxNWZhNDI0MzYzNmQ1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUmIG5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEhU
TUxFbGVtZW50Pihub2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0byBzdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAgICAgc3R5bGUt
Pm1lcmdlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7CiAgICAgcmV0dXJuIHN0eWxlOwogfQpAQCAt
MTIxMSw4ICsxMjExLDggQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gQmFz
ZWQgb24gdGhlIGRvY3VtZW50YXRpb24gSSBjYW4gZmluZCwgaXQgbG9va3MgbGlrZSB3ZSB3YW50
IHRvIHN0YXJ0IHBhcnNpbmcgdGhlIGZyYWdtZW50IGluIHRoZSBJbkJvZHkgaW5zZXJ0aW9uIG1v
ZGUuCiAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWwgb2YgdGhlIHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBo
ZXJlIGJ5IHBhc3NpbmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUg
ZnJhZ21lbnQuCi0gICAgICAgIFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGZha2VCb2R5ID0gSFRN
TEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNl
SFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LmdldCgpKTsKKyAgICAgICAgYXV0byBmYWtlQm9k
eSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7CisgICAgICAgIGZyYWdtZW50
LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5wdHIoKSk7CiAgICAgfSBlbHNlIGlm
IChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdtZW50LT5wYXJz
ZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAg
ICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmlu
ZGV4IDA0MzQxMjkwMmE0MGZlNDE3MWI3NjUyZDk4YjBhM2UyZTI4ZDUxNTcuLjg5NzE1NWExMjI5
MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtMjE3LDkgKzIxNyw3IEBAIHZvaWQgRmlsZVJlYWRl
ckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykK
IHsKICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMgPiBtX2J5dGVzTG9h
ZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9IG1fcmF3RGF0YS0+
c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7Ci0KLSAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsK
KyAgICAgICAgbV9yYXdEYXRhID0gbV9yYXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsK
ICAgICAgICAgbV90b3RhbEJ5dGVzID0gbV9ieXRlc0xvYWRlZDsKICAgICB9CiAgICAgY2xlYW51
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRl
eCBkN2UyYjc1YTQ1MzEyMGIwMmQ3Yzc0MmQ0NjBmNDZhNGRkNTk5NDhlLi5kNzgxMTBjYzllZGI5
ZGEwMDRkNDE1ODRhYzQ5ZGJhZTAwMjRlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRlRQRGlyZWN0
b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlu
cHV0TGluZSkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1w
bGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAwZGNjODg5MDUwNjNkMmViMjcwOWU2MmUzNGU5NWVhMDczYjI4
OGE0Li4xODEwZTcyNWUxODM0OWFiMzY2NTY4ZWUxODUwY2RiYmJlZjk5ZjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdl
ZChjb25zdCBNZWRpYVBsYXllciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBSZWZQdHI8RXZlbnQ+
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cyk7CiAKICAgICAvLyBEb24ndCBzZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVl
IHdpbGwgc2V0IGl0IGluIEdlbmVyaWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5n
IGl0IGhlcmUKICAgICAvLyB3aWxsIHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBo
YXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLgpAQCAtNjQ0NSw3ICs2NDQ1LDcgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoaGFzTWVkaWFD
b250cm9scygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xzPiBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOwor
ICAgIGF1dG8gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgp
KTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggZmY5NmY0ZjI0MzViMDk4
ZTA2NjYyZjMzY2MyMDVlMDAwYjM3OTE2ZC4uMmE2YTljNjEyMTQ1NGYzMjYxMTM2ZDE1OGU4ZjU5
ZTA5YmUxNGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBA
IC00NzMsOSArNDczLDkgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxl
RWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAK
LVJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENl
bGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVT
aGFyZWRDZWxsU3R5bGUoKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIAogICAgIGF1dG8mIGNzc1ZhbHVl
UG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgc3dpdGNoIChjZWxsQm9yZGVy
cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1ZjI3
Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgyNWUz
YmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5o
CkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsKIAot
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAg
IFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAgSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRp
bHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4zYThk
NTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGls
cy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29uc3QK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBjb25z
dAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRl
eCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUzYjE1
OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAg
UmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9y
RmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1s
I2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJEb2N1
bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRlVGVt
cGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2Fs
TmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZv
cm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0ZUVs
ZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVsZW1l
bnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3RvbUVs
ZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAgICAg
aWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUwYjU4
NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdjMjZj
MWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIuIE5v
dGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVlZHMg
dGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4g
U2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBu
dWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUgcmVu
ZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7Cisg
ICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1
dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5zZXRG
bGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJmOTJj
Y2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJkODll
NWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAt
NTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6Y3Jl
YXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZUVFBh
cnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3VlID0g
V2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRhOjpj
cmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwogICAg
IGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRlbnQo
bV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVudElk
KTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1fY3Vl
bGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2NDNm
ZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMxZTM5
MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUqPiBE
T01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1
cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5nKCk7
CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFnbWVu
dCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBE
b2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVudCA9
IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1bWVu
dC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1cCwg
bm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNlcHRp
b25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3Qg
U3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnROb2Rl
LCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxsIGJh
Y2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRvci5y
ZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVudC5n
ZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRiMjU3
MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNlMGRl
YWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29y
ZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAgICBp
ZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAgIGF1
dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250
ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNrKCkp
IHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJyYXko
c3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZpbmVU
cmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNl
dERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQuZ2xv
YmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMK
ICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpKSB7
CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2UgPSBk
b3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywgd2Vi
R0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0
cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1
dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+
c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNpbCk7
CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNw
ZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rpb24t
PmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRlbShX
VEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gdHJh
Y2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVu
dFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJhY2Up
KSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpT
RXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1h
eENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZvckRh
dGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBjMzg4
N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApA
QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3Bl
bkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUg
PSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNvcmU6
OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1
ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2MGJk
OTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwog
ICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVtKGkp
KTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAgICAg
IGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAu
c2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAuc2V0
VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC02
OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3Rp
dmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVmKCkp
OwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5
TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZp
b3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29w
eVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQobmFt
ZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5z
dXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
bmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0byBu
ZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRvIHJ1
bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+
KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JE
b2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNo
ZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHls
ZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKLSAg
ICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVl
dC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENTU1Bh
cnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0cigp
LCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRTdHls
ZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsKICAg
ICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQuLmNh
ZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3Bw
CkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRl
Q2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNvbnRl
eHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0
b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRl
eHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52
YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3RvckNh
bnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRpZmll
clRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgaW5z
cGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRp
ZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAgICAg
aWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29yZGlu
Z09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5mcmFt
ZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAgICAg
ICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09wdGlv
bnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdURk1v
dmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1YzlhMzFk
NGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApA
QCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAgcmV0
dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVsZWFz
ZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBTdHJp
bmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBhdGg6
OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CisgICAg
ICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlw
ZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJpbmcp
OwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmluZz46
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAgICAg
ICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBrZXlQ
YXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSkucmVs
ZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBl
KEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldEFy
cmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdkNS4u
YzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJh
bWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBu
b3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRmNmE2
NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1OTcz
NzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0z
ODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBzdHJ1
Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2Ug
ewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJl
YSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFs
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAgICAg
ICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYp
IGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAgICAg
ICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKKyAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07CiAK
IGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29udGVu
dFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGllbnQ6
OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZkZGFl
Li5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAgICBp
ZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAgICAg
IGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhy
ZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZlcnJl
ck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCkudG9w
KCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0aW9u
c1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1l
SG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLnRy
ZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewpA
QCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3Vt
ZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShp
dGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVm
ZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAgICBh
ZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUx
ZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhjNDdk
ZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlN
b2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVl
SWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBt
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBsb2Fk
ZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNs
aWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAgIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVk
OwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRl
cm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJHbG9i
YWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4NmRm
NzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VU
b0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUgPSBN
SFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hpdmU6
OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsKLSAg
ICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZNb3Zl
KHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmluZyYg
ZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LCBi
b29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFy
eS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5j
b2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhl
IE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBp
dCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6
IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUg
YW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVlOTdi
MmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZiNTQ1
ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgog
Ci0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNl
c3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2UtPmFk
ZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXRE
ZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4LDcg
QEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5k
KCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJlc291
cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAgICAg
ICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAgICAg
ICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2ViNTE1
NjIyN2I2YTk3ZGUyLi42ODk5NGFjY2JkYmRiZGI1NGNhYjUxYmI0MzNjOGZmNjRkNGJhMzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQdHI8
Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUtPnNl
dHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKTsK
IAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxl
TGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAgICAg
aWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIyNDUsNyArMjI0NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUg
bG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCiAg
ICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSBy
ZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQ
dHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3RpdmVGcmFtZSwg
b3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBj
cmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICByZXR1cm4gUmVm
UHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDZkMTQxZWFmZGFmYWNhNzIzNzhhMWUzNGNjOWI4ZWViMjUzMWMxZDMuLjUxYmE4OTFm
ZTE3MzMzOTZiN2U4MGY3OWU4MTAxYjE3MWNlODllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0Ugog
CiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBv
c2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
c3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFy
dCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIo
KSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGFjNDBiODBlMmM5NThhN2Y2ZmE3YmU1NjNiOTgwN2NlMWUyM2Fj
MDkuLjNhNDY4YjZjNDZlMTM4NzQwZjFiNjhmZDA0MzlmYjMyODUzODNkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5
bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZp
bmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0
aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQg
d2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CmluZGV4IGI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQuLmI0MjhlNTIy
MWFmZTFiMmI3NGQwMmYxYWQ0ZjJiMjU5MGFkNjUwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE5MSwx
MSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGlkZW50
aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IFdURk1vdmUo
aWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IFdU
Rk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4ODAwZTczODE2
NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3ZjdlNDNiY2M1NzAyYjAyNjFm
YTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSwxNCArODEsMTQg
QEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBz
dHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmluaXRGb3JTeW50aGVzaXpl
ZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkb2N1bWVudCA9IEhU
TUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlzLCB1cmwpOworICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhp
cywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21w
YXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50LT5jcmVhdGVE
T01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgc2V0RG9jdW1lbnQo
ZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRtbEVs
ZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRt
bEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGJvZHkgPSBIVE1M
Qm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAoIXN0eWxlLmlzRW1wdHko
KSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBzdHls
ZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlv
bnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDogZG9j
dW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFya2VyOjpEaWN0
YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAgICAgLy8gRmlyc3QsIGFk
ZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAgICAgaWYgKHByZWNlZGlu
Z1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBw
cmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdU
ZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVjZWRpbmdUZXh0
ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVj
ZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBwcmVjZWRp
bmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVjZWRpbmdUZXh0KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwgY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsKLSAgICAgICAg
ICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5nZUZvck1hcmtl
ci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0
ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+
c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIg
PSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAgICAgICAgc2l6ZV90IGlu
dGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0ZXJuYXRpdmVz
KCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50ZXJw
cmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0ZXh0
IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0aGUgdmlzaWJs
ZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAgTlNBcnJheSAqRnJhbWU6
OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICB9CiAKICAgICAvLyBG
aW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgotICAgIFJlZlB0cjxS
YW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJv
b3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBw
bGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gYWZ0ZXJMYXN0
TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENv
dW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJM
YXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1hcmtlci5pc0Vt
cHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0
aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFmdGVyTGFzdE1h
cmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVkZjk1MzgwYWM5MjFiMTVm
MGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJmYmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0K
QEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hs
aWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFs
c2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJD
QT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhp
Z2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRvIHBsYXRmb3JtQW5pbWF0
aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsK
KyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigp
LT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3JtQW5pbWF0aW9u
LmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6
OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWluZWRTZWxmLT5kaWRGaW5p
c2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNy
ZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5
ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdo
dE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAg
ZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRk
QW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0
KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUwMDk0OGY1MmE1MDA4OWQz
Nzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2VmOTE5YzJkNjBhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3
IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxl
IHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUgeCAlbHVcbiIsIHNpemUo
KSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGY2NWNkZTNjMWFm
ZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3ZTk4Yjk1NmEwYzBjNWIw
NDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBIUlRGRWxldmF0aW9uOjpj
YWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZh
dGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVuc2lnbmVkIHN0YXJ0RnJh
bWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2lnbmVkIHN0b3BGcmFtZSA9
IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHBy
ZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9t
UmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJlZlB0cjxBdWRpb0J1cz4g
cmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVTYW1w
bGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKKyAgICBh
dXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCdWZm
ZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOworICAgIGF1dG8gcmVzcG9u
c2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVTYW1wbGVSYXRl
Q29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKICAgICBBdWRpb0No
YW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1
czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1bHNlUmVzcG9u
c2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4
IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEuLjg5NzdmMzk4NjlkNmI2
NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTaW5j
UmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9m
U291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV3JhcCB0aGUgcHJv
dmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJjZSBwcm92aWRl
ci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVy
T2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
MSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8vIEZJWE1FOiBGaW5kIGEg
d2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgogICAgIGJ1cy0+c2V0Q2hh
bm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNkZDUxMDE1YzE2Mjc4NGNk
MjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5NTNmZTlmNGJhYTlhNWI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTM1Miw3ICsz
NTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0
IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1ZSk7CisgICAg
YXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6
ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsKIAog
ICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExlZnRCdWZmZXJz
LmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDJhZjUx
OGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0MTE1YWMyOTZlODJmMzNi
ZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0xODAsNyArMTgwLDcg
QEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1w
bGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4
VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMg
d2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4g
YXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFt
ZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3Vu
dCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKSk7IC8vIHNhdmUg
Zm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCAxZmRmZWNkYTcxYzYw
NGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3ZTUwYjQwNGNmZDI2MzRm
ZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBA
IC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiB7CiAg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNv
bikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBSZWY8
SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEljb24oaElj
b24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDllZDJkZjI5YTguLjEzZjE4
Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBU
cmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAgICAgV2ViVlRUCiAgICAg
fTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gY3Jl
YXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRUcmFja1ByaXZh
dGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBjbGll
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBkZDY5NC4uYTkzNTUwMDM4
OWFiZGIzZDE0ZTc2ZWQ4N2QzM2RhNDczYTZmNjE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0x
ODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICAvLyBDcmVh
dGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8gWzQg
Ynl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAgICAg
IHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwot
ICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3
PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29w
eVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBp
bml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwor
ICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
ICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAK
ICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAtMTkwOCw3ICsxOTA4LDcg
QEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYKIAotICAgIFJlZlB0cjxX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVzb3Vy
Y2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9vd25lciwgYXZS
ZXF1ZXN0KTsKICAgICBtX293bmVyLT5tX3Jlc291cmNlTG9hZGVyTWFwLmFkZChhdlJlcXVlc3Qs
IHJlc291cmNlTG9hZGVyKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyMTI4NzIxNGEzYmY1
Y2UxNDA4MDQ1NTBkOWFlZWMzOGEzMDYxMWE5Li4xYTRiMTgxYWFjYjg5NjMwMDVjY2U1YWJkODcz
M2FjMWMyZDkxNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM5LDkgKzM5LDkgQEAg
Y2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUFWRiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGQwNTc4NWNhZTM2MTZkZmZi
ZTk5MzllMDNkYTUxOTNjNjkxNDk1NGYuLjMxMDc4MGMzYWNhYmQ4MTU1NWMzZDAxOWUzYjQ4YzZj
Zjc3N2E5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAg
c3RhdGljIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YShBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdCAqcmVxdWVzdCwgQXIKIAogICAgICAgICBBU1NFUlQoc3RhcnQgPD0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CiAgICAgICAgIEFTU0VSVChlbmQgPD0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
cmVxdWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQp
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuZCkpOworICAgICAgICBhdXRvIHJlcXVlc3RlZEtleURhdGEg
PSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50
PihlbmQpKTsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXF1ZXN0ZWRLZXlEYXRhLT5kYXRhKCkgbGVuZ3Ro
OnJlcXVlc3RlZEtleURhdGEtPmJ5dGVMZW5ndGgoKV0pOwogICAgICAgICBbZGF0YVJlcXVlc3Qg
cmVzcG9uZFdpdGhEYXRhOm5zRGF0YS5nZXQoKV07CiAgICAgfQpAQCAtMTgxNyw4ICsxODE3LDgg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBSZWZQdHI8
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRl
ck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsK
KyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVh
dGUodGhpcywgYXZSZXF1ZXN0KTsKKyAgICBtX3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlk
Z2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIuY29weVJlZigpKTsKICAgICBy
ZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggMGMwNGFmOTA0MzAyOTFmMTJhMTIxOWViM2M0MzU4Y2NhNGYyYmQxYS4uMTY4MTI3NTllMGEx
YWVmY2Y0OGJlZjFhNDM2NGQ1ODRjOTE4MWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFz
cyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQq
KTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKICAgICBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxheWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMDg0YzkwZDVmZDc3ZTY2ZWJkMmFlODRlMzE2N2Rm
ZDllOTM3M2NjLi4yYjM3ZWM3ZGZlYWI0NjVmMTFmN2E1MDdlMDg4OTJlZDk3ODkwYTAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjcHJhZ21hIG1hcmsg
LQogI3ByYWdtYSBtYXJrIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKIAotUmVmUHRyPE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50KiBjbGllbnQpCitSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyogcGFyZW50LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKIHsK
LSAgICBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gbWVkaWFTb3VyY2VQcml2YXRl
ID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQp
KTsKLSAgICBjbGllbnQtPnNldFByaXZhdGVBbmRPcGVuKCptZWRpYVNvdXJjZVByaXZhdGUpOwor
ICAgIGF1dG8gbWVkaWFTb3VyY2VQcml2YXRlID0gYWRvcHRSZWYoKm5ldyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7CisgICAgY2xpZW50LT5zZXRQcml2YXRlQW5k
T3BlbihtZWRpYVNvdXJjZVByaXZhdGUuY29weVJlZigpKTsKICAgICByZXR1cm4gbWVkaWFTb3Vy
Y2VQcml2YXRlOwogfQogCkBAIC03Niw3ICs3Niw3IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRk
U3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBD
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VCdWZmZXItPnNldENE
TUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgb3V0UHJpdmF0ZSA9
IG5ld1NvdXJjZUJ1ZmZlcjsKKyAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyLmNvcHlS
ZWYoKTsKICAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUobmV3U291cmNlQnVmZmVy
KSk7CiAKICAgICByZXR1cm4gT2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4MzAwZGMzYjZlMzllOGNhYjE0NWFlYmEy
MTc2ZTk4MTFkZmM5ODcxLi5mMTc2MjYyMzRiOWI1YTBhZGU4YzI3NTQ3YTQ0NjU3YTQ4MmFjZDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akNFcnJvckNsaWVudCB7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGZpbmFs
IDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3Jl
YXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21l
ZGlhU291cmNlID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBhOTlmZWI3ZjY1M2M5OTExNmQwZjMz
OWVjMzc3NWZjMjBjZWYwYmVkLi4xYzU2NjM2NjBkOWFlZGNjODllNmI1MjMzYjhmYzRhYjNkNmVk
NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbQpAQCAtNDMwLDcgKzQzMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAK
IGNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbkFWRk9i
akM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHN0YXRpYyBSZWY8TWVkaWFEZXNj
cmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KICAgICB2aXJ0dWFs
IH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygpIHsgfQogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVj
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb2RlYzsgfQpAQCAtNDg0LDkgKzQ4NCw5IEBA
IHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50
ZXJSZWYsIGNvbnN0IHZvaWQqLCBDRlN0CiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVyV2Fz
Q29uc3VtZWQoKTsKIH0KIAotUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMq
IHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhwYXJl
bnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyhwYXJlbnQpKTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKQEAgLTU1
MSwxNiArNTUxLDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNl
U3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAKICAgICAgICAgaWYgKFt0cmFjayBo
YXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsKICAg
ICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVu
dDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAgICAg
IGluZm8udHJhY2sgPSB2aWRlb1RyYWNrOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBl
bmQodmlkZW9UcmFjayk7CisgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKKyAgICAgICAg
ICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAgICAgIG1fdmlk
ZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwogICAgICAgICAgICAgaW5mby5k
ZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwogICAg
ICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
QXVkaWJsZV0pIHsKICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRp
YWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAg
ICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGF1ZGlvVHJhY2sg
PSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlz
KTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrOwotICAgICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFjayk7CisgICAgICAgICAgICBhdXRvIGF1ZGlvVHJh
Y2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0
aGlzKTsKKyAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsKKyAg
ICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFjaykpOwogICAg
ICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVh
dGUodHJhY2spOwogICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGY0NTZmMGE5NmYyZTJiYzI2
MmRlYWZjMzlmNTMyZGI5ZDViMDZlOGYuLjVkZDdlNjIzMGZlOGUwNWI0ZmYzNDVlM2IxOTQxNGFi
MDkxZjNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFz
cyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQVZGIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDgwY2ZjNGZhYzM0NWM5MmVjZDYxNzM3ZmM5MjU0
ZGNkOGI3NTViZjguLjkxZGI2NTQxYzRiMTIzYWViMzQ2ZWEzOTJhZTA0Mzg0MGQyNDM5ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5jcHAKQEAgLTcyNCw5ICs3MjQsOSBAQCBpbnQgVGlsZUNvbnRyb2xsZXI6OnJpZ2h0
TWFyZ2luV2lkdGgoKSBjb25zdAogICAgIHJldHVybiAobV9tYXJnaW5TaXplICogbV9tYXJnaW5F
ZGdlcy5yaWdodCgpKSAvIHRpbGVHcmlkKCkuc2NhbGUoKTsKIH0KIAotUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJv
bGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYg
Z3JpZCkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllciA9IG1fdGlsZUNhY2hl
TGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6ZSgp
KTsKKyAgICBhdXRvIGxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxh
eWVyT3JUYWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdU
aWxlTGF5ZXIsICZncmlkLCB0aWxlUmVjdC5zaXplKCkpOwogCiAgICAgbGF5ZXItPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24odGlsZVJlY3Qu
bG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaAppbmRleCBhZTE5YjhjNTE3MWZkNTc0MWE1NTE1Zjc2YTY5ODg2
NjYyZmFmMDdjLi5kYjlkNDUzMTA3YmQ0OTAwNTE2NTIwZDVhMDY3NTIwYWMyNjZhNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6IHB1
YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAgdm9pZCB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKTsK
IAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRS
ZWN0JiwgVGlsZUdyaWQmKTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5
ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CiAKICAgICBjb25zdCBUaWxlR3JpZCYgdGls
ZUdyaWQoKSBjb25zdCB7IHJldHVybiAqbV90aWxlR3JpZDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVI
b3N0LmNwcAppbmRleCAyYTlkOTFhZTFjNzhkMWQ3MzVjZTQ5MWIzYWRhOWFhODBmNjc0NDNlLi4x
YWJhNDZmNGMzYmNhNWQxYjJhYzNjMGM0NTVhMWQ5YjZlZTA4MTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIENBQ0ZMYXllclRyZWVIb3N0Ojph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGF2YWlsYWJs
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBDQUNGTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNl
OwpAQCAtMTI1LDcgKzEyNSw3IEBAIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gQ0FDRkxheWVy
VHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDQUNGTGF5ZXJU
cmVlSG9zdD4gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBh
dXRvIGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAgICAgaWYgKCFo
b3N0KSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBsYXllciB0cmVlIGhv
c3QgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQppbmRleCA0MDZlMDg1ZmZmMWYxOWE5ZGJmZGI4MWM2
NDkzMWY0NjhhNGY5Nzk1Li5mY2MyNzZkYmUxNDI5NTM4MWI0MzMyNWMwY2MyNmRmZDQ4NTM0YWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCkBAIC01NSwxMSArNTUsMTEgQEAgUmVmUHRyPEdQ
VUJ1ZmZlcj4gR1BVQnVmZmVyOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUJ1
ZmZlckRlc2NyaXB0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0
ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsKKyAg
ICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxp
Z25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZvaWQqIHB0cikgewogICAgICAgICBHaWdh
Y2FnZTo6YWxpZ25lZEZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKICAgICB9KTsKICAg
ICBhcnJheUJ1ZmZlci0+cmVmKCk7Ci0gICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVu
dHMgPSBhcnJheUJ1ZmZlci5nZXQoKTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXJDb250
ZW50cyA9IGFycmF5QnVmZmVyLnB0cigpOwogICAgIC8vIEZJWE1FOiBEZWZhdWx0IHRoaXMgTVRM
UmVzb3VyY2VPcHRpb25zLgogICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbXRsQnVmZmVyID0g
YWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkKICAgICAgICAgbmV3QnVmZmVyV2l0aEJ5
dGVzTm9Db3B5OmFycmF5QnVmZmVyLT5kYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggOTQ3NjhkYzFhOTJhMmY2NGJmMmNlMjEyNjg4
MTRhYTI5YTA5ZjZjZi4uZGU3OGRiNjA3ZmExMWY3YTU4ZGVmZjRhOTgyNDIzYmI4YmE4ZGQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTczNCw5ICs3MzQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
VHJhY2tzKCkKICAgICAgICAgICAgIENSRUFURV9UUkFDSyh2aWRlbywgVmlkZW8pCiAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSAmIEdTVF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJj
ZSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBzdHJlYW0pOwotICAgICAgICAgICAg
bV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICAgICAgbV9wbGF5ZXIt
PmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBzdHJlYW0p
OworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigp
KTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogI2Vu
ZGlmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24gdHJh
Y2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFtICVzIiwgc3RyZWFtSWQudXRmOCgpLmRhdGEoKSk7CkBA
IC04OTQsMTAgKzg5NCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5UGxheWVyT2ZWaWRlbygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAg
IGF1dG8gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFr
UHRyKCp0aGlzKSwgaSwgcGFkKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5p
ZCgpKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAg
ICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soKnRyYWNrKTsKKyAgICAgICAgbV92aWRlb1RyYWNr
cy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVyLT5hZGRW
aWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFsaWRWaWRlb1Ry
YWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIo
KnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAgIEFT
U0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7CiAgICAgICAgIG1fYXVkaW9UcmFja3MuYWRk
KHN0cmVhbUlkLCB0cmFjayk7CiAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKCp0cmFj
ayk7CkBAIC0xMDI5LDkgKzEwMjksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZUZXh0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOwotICAgICAgICBtX3Rl
eHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRUZXh0
VHJhY2soKnRyYWNrKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOworICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0
cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNr
KHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFsaWRUZXh0VHJhY2tzKHZhbGlk
VGV4dFN0cmVhbXMpOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICBjYXNl
IEdTVF9NRVNTQUdFX0VMRU1FTlQ6CiAgICAgICAgIGlmIChnc3RfaXNfbWlzc2luZ19wbHVnaW5f
bWVzc2FnZShtZXNzYWdlKSkgewogICAgICAgICAgICAgaWYgKGdzdF9pbnN0YWxsX3BsdWdpbnNf
c3VwcG9ydGVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1pc3NpbmdQbHVnaW5DYWxsYmFjayA9IE1l
ZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpjcmVhdGUoW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1lZGlhUGxheWVy
UmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1Z2luQ2FsbGJh
Y2spIHsKKyAgICAgICAgICAgICAgICBhdXRvIG1pc3NpbmdQbHVnaW5DYWxsYmFjayA9IE1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpjcmVhdGUoW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1lZGlhUGxheWVyUmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgR1NUX0lORk8oImdvdCBtaXNzaW5nIHBsdWdpbmcgaW5zdGFsbGF0aW9uIGNhbGxi
YWNrIGluIGRlc3Ryb3llZCBwbGF5ZXIgd2l0aCByZXN1bHQgJXUiLCByZXN1bHQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMxMywxMCArMTMxMywxMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUkVBRFkpOwogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hhbmdlUGlw
ZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5DYWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVu
ZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRldGFpbChnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfaW5zdGFs
bGVyX2RldGFpbChtZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBk
ZXNjcmlwdGlvbihnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24obWVz
c2FnZSkpOwotICAgICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpm
cm9tVVRGOChkZXNjcmlwdGlvbi5nZXQoKSksICptaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAg
ICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChkZXNj
cmlwdGlvbi5nZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJf
TVBFR1RTKQpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNlY3Rpb24KICAg
ICAgICAgICAgIGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSogc3RyZWFtID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKj4oZ19wdHJfYXJyYXlfaW5kZXgocG10LT5zdHJlYW1z
LCBpKSk7CiAgICAgICAgICAgICBpZiAoc3RyZWFtLT5zdHJlYW1fdHlwZSA9PSAweDA1IHx8IHN0
cmVhbS0+c3RyZWFtX3R5cGUgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIEF0b21pY1N0cmlu
ZyBwaWQgPSBTdHJpbmc6Om51bWJlcihzdHJlYW0tPnBpZCk7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKKyAgICAgICAgICAg
ICAgICBhdXRvIHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1l
dGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEYXRhLCBwaWQpOwogCiAgICAgICAgICAg
ICAgICAgLy8gNC43LjEwLjEyLjIgU291cmNpbmcgaW4tYmFuZCB0ZXh0IHRyYWNrcwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0
TG9jYXRpb24oKQogICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9u
KTsKICAgICAgICAgY29udmVydFRvSW50ZXJuYWxQcm90b2NvbChuZXdVcmwpOwogCi0gICAgICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1fdXJsKTsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobV91cmwpOwogICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVl
c3QobmV3VXJsKSkgewogICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJO
ZXcgbWVkaWEgdXJsOiAlcyIsIG5ld1VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmlu
ZGV4IDg5N2YyOTIwMjVkZDRhYWMyNjVkZDliZGRmMmI3NzgzODZjYjliNjEuLjM1NjM1MTM0MmYw
YTU1MTk3OTk4ZmU3MTgxYjljOGE1NTNmZGM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg3OCw3ICs4NzgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0
ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIAotICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOworICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCAwMjZhMjA1
NzNlYzMyYWRiMmEzYmM4YTY4NjAyM2VhODBhZDgzMTA4Li5kMDkyOTIwYzI2YmQ2MGU5ODNiZmEx
NDM2NmQ1NjM5ZWZmZmNlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApA
QCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1wbGUo
R1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUmVmUHRyPE1lZGlhU2FtcGxlR1N0cmVhbWVyPiBtZWRpYVNhbXBsZSA9IFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3ByZXNlbnRhdGlv
blNpemUsIHRyYWNrSWQoKSk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3ByZXNlbnRhdGlvblNp
emUsIHRyYWNrSWQoKSk7CiAKICAgICBHU1RfVFJBQ0UoImFwcGVuZDogdHJhY2tJZD0lcyBQVFM9
JXMgRFRTPSVzIERVUj0lcyBwcmVzZW50YXRpb25TaXplPSUuMGZ4JS4wZiIsCiAgICAgICAgIG1l
ZGlhU2FtcGxlLT50cmFja0lEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0
U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgbWVkaWFTYW1wbGUtPmFwcGx5UHRzT2Zmc2V0KE1l
ZGlhVGltZTo6emVyb1RpbWUoKSk7CiAgICAgfQogCi0gICAgbV9zb3VyY2VCdWZmZXJQcml2YXRl
LT5kaWRSZWNlaXZlU2FtcGxlKCptZWRpYVNhbXBsZSk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5kaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlLmdldCgpKTsKIH0KIAogdm9pZCBBcHBl
bmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCmluZGV4IDdjYmY1
NGViM2MzNWVhMTM5YzBlNzA2MjlkZjhkYWJkYjU0NWQwN2UuLjZlNGI2NGZiNDIwMGJiMDkwYzA1
NTg3N2JjOTZiNTEyZDU1MWY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCkBAIC00NCw5ICs0NCw2IEBAIGJvb2wgSVNPUHJvdGVj
dGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWdu
ZWQmIG9mZnNlCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBh
dXRvIHN5c3RlbUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBp
ZiAoIXN5c3RlbUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7
CiAKICAgICBtX3N5c3RlbUlELnJlc2l6ZSgxNik7CkBAIC02Myw4ICs2MCw2IEBAIGJvb2wgSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywg
dW5zaWduZWQmIG9mZnNlCiAgICAgICAgICAgICBhdXRvJiBjdXJyZW50S2V5SUQgPSBtX2tleUlE
c1trZXlJRF07CiAgICAgICAgICAgICBjdXJyZW50S2V5SUQucmVzaXplKDE2KTsKICAgICAgICAg
ICAgIGF1dG8gcGFyc2VkS2V5SUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYp
OwotICAgICAgICAgICAgaWYgKCFwYXJzZWRLZXlJRCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBvZmZzZXQgKz0gMTY7CiAgICAgICAgICAgICBtZW1jcHkoY3Vy
cmVudEtleUlELmRhdGEoKSwgcGFyc2VkS2V5SUQtPmRhdGEoKSwgMTYpOwogICAgICAgICB9CkBA
IC03Niw5ICs3MSw2IEBAIGJvb2wgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNlCiAgICAgaWYgKGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0IDwgZGF0YVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBhdXRvIHBhcnNlZERhdGEgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgZGF0
YVNpemUpOwotICAgIGlmICghcGFyc2VkRGF0YSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgb2Zmc2V0ICs9IGRhdGFTaXplOwogCiAgICAgbV9kYXRhLnJlc2l6ZShkYXRhU2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tF
bmNyeXB0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwCmluZGV4IDU3YTU2OTRkNWVhZTEzOWVlZDI4NTk1YTEz
MjMwNmJjNWM3NWEwNGYuLjJjOTRmNGQzY2MxYjc2MTc1ZDkyMzg4NjI2ZjE4MGI5Y2I4MDIxNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFj
a0VuY3J5cHRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCkBAIC02NCw5ICs2NCw2IEBAIGJvb2wgSVNP
VHJhY2tFbmNyeXB0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBrZXlJREJ1ZmZlciA9IGJ1ZmZl
ci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFrZXlJREJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9kZWZhdWx0
S0lELnJlc2l6ZSgxNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKaW5kZXgg
NjY3ZjIzMDE3MjM1OTE0NjMxN2ZjODYxYTI3ZWM4NDA2YmUwNzQxZi4uMDFhMjc0MjQzOWMyMjdm
MjIyYjhjZWIyY2E2MGEzMWZjOTRmZjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcApAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyBGaWx0ZXJPcGVyYXRpb25zIGFwcGx5
RmlsdGVyQW5pbWF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNvbnN0CiAgICAg
ICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVu
ZChibGVuZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0
eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50
aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21P
cCA/IGZyb21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRl
eCBjNjZlNDYzNjIwMDI4NjUwYjQ1YzUwNjExYmIyNmRjNDQyZTI3YzhmLi44Y2M1OGQ2MWQ5YjUw
Mzc5N2YwNzI3MjVlMGM2ZDc4M2RlNWQxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmYKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gQml0
bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQo
KSwgbV9pbnRlcm5hbEZvcm1hdCk7CisgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdM
OjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5h
bEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0aWNfY2FzdDxC
aXRtYXBUZXh0dXJlR0wmPigqdGV4dHVyZSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0
dXJlSUQpOworICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkp
LmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0
dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
cy5jcHAKaW5kZXggZjk0NGYwN2E1OGUyYWRkZGIyZGExOTI1YTM1M2Y3M2JlNDRlMjgyZi4uYjE0
NTJmZTJiNjY3YmRlZjMxYThiYzljZTMxZjRlNmQyZWM3YjM4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybU9wZXJhdGlvbnMuY3BwCkBAIC04NywxMSArODcsMTEgQEAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0
IFRyYW5zZm8KICAgICAgICAgaWYgKGJsZW5kZWRPcGVyYXRpb24pCiAgICAgICAgICAgICByZXN1
bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3BlcmF0aW9uKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVudGl0eU9wZXJhdGlv
biA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1
dG8gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IGlkZW50
aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVu
ZCh0b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9wZXJhdGlvbikp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKGZyb21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24p
OworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcGVyYXRp
b24gPyBmcm9tT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9wZXJhdGlvbikpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDg2MGRhMzg2Mzhl
ZjUyYTkwZWQxZmQ4OWI1MmRlZTk2NTQzMDE1M2MuLjA2YzBhMTlmMzBkMzlkMTkxOWQyYjRjZmQ0
MWQ0NDdlYzA1NDIxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xNDQsOCAr
MTQ0LDggQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRl
eChzaXplX3QgaW5kZXgpCiAgICAgLy8gQ29weSBvdXQgUE5HIGRhdGEgdG8gYSBzZXBhcmF0ZSB2
ZWN0b3IgYW5kIHNlbmQgdG8gdGhlIFBORyBkZWNvZGVyLgogICAgIC8vIEZJWE1FOiBTYXZlIHRo
aXMgY29weSBieSBtYWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgogICAgIC8v
IG9wdGlvbmFsIG9mZnNldC4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdEYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwg
bV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAgbV9wbmdEZWNv
ZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOworICAg
IGF1dG8gcG5nRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJF
bnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zm
c2V0KTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRhLmdldCgpLCBp
c0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAogdm9pZCBJQ09JbWFnZURlY29kZXI6OmRlY29kZShz
aXplX3QgaW5kZXgsIGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
aW5kZXggZTU0YmEzNzZkYTYxNjY0NTdjMjMyODk3MTgxNGNmZjM4NWZhNmUxOC4uMTAwOTEyYjMy
OTMzM2ZjM2ViYzMzYzUxN2JiMmQ0NzM3NmI4ZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC05NywxMSArOTcs
MTEgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJyYXlC
dWZmZXIqIGRhdGEpCiAgICAgc2l6ZV90IG9mZnNldCA9IDE2OwogCiAgICAgd2hpbGUgKG9mZnNl
dCA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc3ViQnVmZmVyID0g
ZGF0YS0+c2xpY2Uob2Zmc2V0KTsKLSAgICAgICAgaWYgKE1vY2tCb3g6OnBlZWtUeXBlKHN1YkJ1
ZmZlci5nZXQoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCisgICAgICAgIGF1dG8gc3ViQnVm
ZmVyID0gZGF0YS0+c2xpY2Uob2Zmc2V0KTsKKyAgICAgICAgaWYgKE1vY2tCb3g6OnBlZWtUeXBl
KHN1YkJ1ZmZlci5wdHIoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCiAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLmdldCgpKTsK
KyAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5wdHIoKSk7CiAgICAgICAg
IG9mZnNldCArPSB0cmFja0JveC5sZW5ndGgoKTsKICAgICAgICAgbV90cmFja3MuYXBwZW5kKHRy
YWNrQm94KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmlu
ZGV4IDJhOGIyNGJkMmY5MjFlMWMxZjM1MDAyMjI3N2E4MzM4N2VjMzdhZmUuLjQyNTg4OTdiZTZi
ZTM5MTFlNjBiZWRhYzEwMWYzM2UwOTliY2QxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgUmVmPE1lZGlhU2FtcGxlPiBNb2Nr
TWVkaWFTYW1wbGU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKIAogY2xhc3MgTW9j
a01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0
IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja01lZGlhRGVzY3Jp
cHRpb24oYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tNZWRpYURlc2NyaXB0aW9uPiBjcmVh
dGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja01l
ZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFEZXNjcmlwdGlv
bigpID0gZGVmYXVsdDsKIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmNvZGVjKCk7IH0KQEAgLTExOCw5ICsxMTgsOSBAQCBjbGFzcyBNb2Nr
TWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKICAgICBN
b2NrVHJhY2tCb3ggbV9ib3g7CiB9OwogCi1SZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSog
cGFyZW50KQorUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVudCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVudCkpOwogfQog
CiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoTW9ja01l
ZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQpAQCAtMTQyLDE3ICsxNDIsMTcgQEAgdm9pZCBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEp
CiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IHJlc3VsdCA9IFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZDsKIAogICAgIHdoaWxlICht
X2lucHV0QnVmZmVyLnNpemUoKSAmJiByZXN1bHQgPT0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6QXBwZW5kU3VjY2VlZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZl
ci5zaXplKCkpOwotICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0
aChidWZmZXIuZ2V0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKKyAgICAgICAg
c2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsKICAg
ICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIu
Z2V0KCkpOworICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBlZWtUeXBlKGJ1ZmZlci5w
dHIoKSk7CiAgICAgICAgIGlmICh0eXBlID09IE1vY2tJbml0aWFsaXphdGlvbkJveDo6dHlwZSgp
KSB7Ci0gICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0
aWFsaXphdGlvbkJveChidWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0
aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLnB0cigpKTsKICAg
ICAgICAgICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoaW5pdEJveCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBNb2NrU2FtcGxlQm94Ojp0eXBlKCkpIHsKLSAgICAgICAg
ICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIuZ2V0KCkp
OworICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94KGJ1
ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlU2FtcGxlKHNhbXBsZUJveCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6UGFyc2luZ0ZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApp
bmRleCBiM2Y4YWY0MmEyZjQyYWViOWVkZWNlNmFiMzNiNWU4N2E1MjcyNTI5Li4xNTc2MDA1M2Ni
ZjBmMDUyOTQzMzhjNDdmMjYxMTUyM2JhOTgyNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
CiBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZm
ZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOworICAgIHN0YXRpYyBSZWY8
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7
CiAgICAgdmlydHVhbCB+TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZvaWQgY2xl
YXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKaW5k
ZXggYjQ2Y2E2YjYwMTFiMDIyOTBkNmI4MzBmYmUwYjYwM2ZkMmRiYWQwYy4uZjRjMDA5MjI5NDg4
MWE0ZmFlZjFjMGRmNzUyMDgzNGM2OWUyMjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKQEAgLTUzLDcgKzUzLDcg
QEAgY2xhc3MgTW9ja0F1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRl
IHsKIAogY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVGV4dFRyYWNrUHJpdmF0
ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
TW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tUZXh0VHJh
Y2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2Nr
VGV4dFRyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWljU3RyaW5n
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBNb2Nr
VGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIAogY2xh
c3MgTW9ja1ZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tWaWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1ZpZGVvVHJh
Y2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+
IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrVmlkZW9UcmFj
a1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBkN2MxZTVmYWEwZGU1MDc4M2JmYjQ3NzI0YmY1OTkxOWFiNjZmOTFkLi5j
NDlmNDIxNzgxMjBhNGMzZDJiNGQzMDI2ODRiMmQ4M2FmMWY0NmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBG
b3JtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPgogUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgp
OworICAgIGF1dG8gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS0+bV9hbHdheXNTdHJlYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMxOSw3ICszMTksNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1faWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0
dXJuIFdURk1vdmUoZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0
b3JhZ2VPYnNlcnZlci5oCmluZGV4IDYyNGNjYzVlMTI4MDcxZDc0MTdiOGQxNmU0ZTg1NGZkNzUz
YWVlNjkuLjhlNzczM2M1N2FkNTBkMWVlNjY0NWJkY2I5YTMyMzhjY2RkN2RlNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvb2tpZVN0b3JhZ2VPYnNlcnZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7Cisg
ICAgc3RhdGljIFJlZjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVT
dG9yYWdlICopOwogICAgIENvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdl
ICopOwogICAgIH5Db29raWVTdG9yYWdlT2JzZXJ2ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNl
cnZlci5tbQppbmRleCA5MTgxNzFjNmIwNzA3YWEwODAwZTliOGRmMjk0YjQxZTFjZjc4OWQwLi41
ZDI1YWUxMGQyZjFhYmE3MzgzYjcwMzYyMTZlMzc3OTE2NzJlNDhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbQpAQCAtNzQsOSArNzQsOSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmUHRyPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVy
OjpjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKK1JlZjxDb29raWVT
dG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CiB9CiAKIENvb2tpZVN0
b3JhZ2VPYnNlcnZlcjo6Q29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRUUENvb2tpZVN0b3JhZ2Ug
KmNvb2tpZVN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggYWE5NTczN2JlNzlh
YmQxNGYxOWJhMjFiOTIyY2NiMTAxNjUwYzQ4OC4uMGY2ZWExOTc4N2E0NmM3NDc0YjQxNjQ4ZjI0
NTg0OTU3YjAwZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHko
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRp
bWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBibG9iSXRlbS5m
aWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHNBczx0aW1lX3Q+KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBpZiAo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CisgICAgICAgIGlmIChhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVt
LmZpbGUoKS0+cGF0aCgpKSkgewogICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdl
KSBjb25zdAogICAgICAgICAgICAgICAgIGJvZHlTaXplICs9IGJ5dGVzLnNpemUoKTsKICAgICAg
ICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3Rf
Ym9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7
CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVE
YXRhJiBmaWxlRGF0YSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxlRGF0
YS5maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxlRGF0YS5maWxlbmFtZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVu
LmNwcAppbmRleCBjOTA4NjkzMDE2MTg1NThiNjBlMWYzMDQ4MThkYmRkOWU1MWRiYzEyLi4yZDdi
NjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYwNmJiNDhiN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBo
ZW4uY3BwCkBAIC0xNjksMTQgKzE2OSwxNCBAQCBjbGFzcyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkg
OiBwdWJsaWMgUmVmQ291bnRlZDxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IHsKIAogICAgIHZpcnR1
YWwgfkh5cGhlbmF0aW9uRGljdGlvbmFyeSgpID0gZGVmYXVsdDsKIAotICAgIHN0YXRpYyBSZWZQ
dHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKKyAgICBzdGF0aWMgUmVmPEh5
cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGlj
dFBhdGgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOwogICAgIH0KIAogICAgIEh5
cGhlbkRpY3QqIGxpYmh5cGhlbkRpY3Rpb25hcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBhYzdjYjY2N2Jj
ZThhMjcxOGJhYzdkZjE2ZTZiYzQ5MThkNDNkYjc2Li44ZTc0YjA3NjkzNWFhMGRjY2Q3ZWE4Mzdh
Y2U2N2IzY2U3Y2UxNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51V2lu
KGNsaWVudCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudVdpbihjbGll
bnQpKSkKIHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVXaW46OnBvcHVwTWVudSgp
CiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7
CiB9CiAKIGJvb2wgU2VhcmNoUG9wdXBNZW51V2luOjplbmFibGVkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCBlNTA2MGI4YWI5
YjlmZWFmMzViZmI4YjM3YjE5YTNjZDE5NTY1MTFlLi45YTdhZTg4MjNjNWM0M2ZmOTQ2YTYxNTdh
ZmM1N2I1OWRjMTU0M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVu
dVdpbiA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVk
KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKKyAgICBS
ZWY8UG9wdXBNZW51V2luPiBtX3BvcHVwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDUyYjRkNzQ1Yjk5NzMzYWM2YWYwYjViNzJjMzYw
YjZiMmQ0YjBhOWIuLjFkMjFiZDQ4ZWNlYzliNWYxMWQxZTRjODgyMzQwYTY0OGEzODYwOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTU2Miw3ICs1
NjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5k
ZXJTdHlsZSYgc3R5bGUsIFJlbmRlckJveCYgYm94KQogc3RhdGljIHZvaWQgYXBwbHlDb21tb25C
dXR0b25QYWRkaW5nVG9TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLjUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKKyAgICBhdXRvIGVtU2l6
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0VNUyk7CiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBkb2N1bWVudC5yZW5kZXJTdHlsZSgpLCBkb2N1
bWVudC5yZW5kZXJWaWV3KCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkpKTsK
ICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykp
OwogfQpAQCAtOTE3LDcgKzkxNyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jl
c3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29u
dGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBS
ZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
cHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwog
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwg
MHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhl
ZSwgMHhlZSwgMHhlZSkpOwpAQCAtOTM3LDcgKzkzNyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFp
bnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJv
dW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVw
cGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxH
cmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
MC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVw
cGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAx
MzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4
LCAxOCwgMTgsIDUxKSk7CiAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTk0OSw3ICs5NDksNyBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRv
dWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAx
LjApOwogICAgICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsK
LSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
R3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFy
R3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQ
b2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdo
dCAtIDEpIH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3Io
MTk1LCAyMTcsIDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUs
IENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3Rv
cCgwLjQ5LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CkBAIC05NTgsNyArOTU4LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEkKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAs
IENvbG9yKDU3LCAxNDIsIDI0NCkpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChi
YXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+
IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJI
ZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhclN0
cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAxODMpKTsKICAg
ICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUsIENvbG9yKDY2LCAxMDYs
IDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQg
b25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBlbSBsZW5ndGhzLgog
ICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0
IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAgIC8vIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxw
dHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBw
aXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBzdGF0aWMgdm9pZCBw
YWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNo
bWVudEluZm8mCiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxJbWFnZT4gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENH
SW1hZ2VdKTsKKyAgICBhdXRvIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8u
aWNvbiBDR0ltYWdlXSk7CiAgICAgaWYgKCFpY29uSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHAKaW5kZXggZmFiYzhiMmFiOGJmZmExOWYzZWFiZGU0YzA2YTk5ZGZiZmUzNjk0Yy4uMTU1
NzQ0ZDNmZGRiNzA0NDEzYjdhMDY5Y2FmNTZiZTM1ODRkYzMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MjMs
OCArNDIzLDggQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsK
ICAgICAgICAgLy8gQ3JlYXRpbmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2Vk
IHRvIHRoZSBidWlsZGVyLgogICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBS
ZWZQdHI8U1ZHRmlsdGVyPiBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRy
YW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKLSAgICAg
ICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoKmR1bW15RmlsdGVy
KSkgeworICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5l
VHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOworICAg
ICAgICBpZiAoYXV0byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRl
ci5nZXQoKSkpIHsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNj
b3BlKHRzKTsKIAogICAgICAgICAgICAgaWYgKEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGJ1
aWxkZXItPmxhc3RFZmZlY3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDU2
ODcyMzg4OTI3OGVjN2FiMjQ0YjVjOTVhNGY2YjVlZDI1ZGZmNzYuLmMyNjlhODU1OTQ2YmVlYmQ2
YTBiZWQ5MWE4YWFiOTA5MjA0YjJkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApA
QCAtMzcsMTcgKzM3LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFN0b3JhZ2U+
IFN0b3JhZ2U6OmNyZWF0ZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYm
IHN0b3JhZ2VBcmVhKQorUmVmPFN0b3JhZ2U+IFN0b3JhZ2U6OmNyZWF0ZShET01XaW5kb3cmIHdp
bmRvdywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0b3JhZ2Uod2luZG93LCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOwogfQogCi1T
dG9yYWdlOjpTdG9yYWdlKERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYg
c3RvcmFnZUFyZWEpCitTdG9yYWdlOjpTdG9yYWdlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3Rv
cmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93
KQogICAgICwgbV9zdG9yYWdlQXJlYShXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkKIHsKICAgICBBU1NF
UlQoZnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWEpOwogCiAgICAgbV9zdG9yYWdl
QXJlYS0+aW5jcmVtZW50QWNjZXNzQ291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgK
aW5kZXggODM2NmJiYzFiNTljNzlmOWU3NTdkZTNhMTNmNzUwYTFjYjM3ODIwMS4uOTgzZTg1YTYy
YTg2NGM3YTcwZGYxN2QzYWE1MDJmMjVmN2RjOWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiAKIGNsYXNzIFN0b3JhZ2Ug
OiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwgcHVi
bGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+
IGNyZWF0ZShET01XaW5kb3cmLCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAgICAg
flN0b3JhZ2UoKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpAQCAtNTAsMTIgKzUw
LDEyIEBAIGNsYXNzIFN0b3JhZ2UgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxTdG9yYWdlPiwgcHVibGljIERPTVdpCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3Bl
cnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKLSAgICBTdG9yYWdlQXJlYSYgYXJlYSgp
IGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VBcmVhOyB9CisgICAgU3RvcmFnZUFyZWEmIGFyZWEo
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VBcmVhLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAg
U3RvcmFnZShET01XaW5kb3cmLCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIFN0b3JhZ2Uo
RE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKIAotICAgIGNvbnN0IFJlZlB0cjxTdG9y
YWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKKyAgICBjb25zdCBSZWY8U3RvcmFnZUFyZWE+IG1fc3Rv
cmFnZUFyZWE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDQwOWE0MzNlMWQ1YzFmNmUyZDdkMThhMTE5
NzZkOWJiMmZmYzI1MmEuLjU1YzY2MjgyYjhiZDY4YmMwNDc4MmRmNDdjYWRlZDBjMjEyOTRiNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zNyw4ICsz
Nyw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHZp
cnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCmluZGV4IDY5YzFiMzM1MzA4YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYuLjU5Mzlh
ZmZkM2ViMmY4ZWVkNDZiZjYyYmFiNGIxNWFlYjVlOTVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnJlbW92ZVBhZ2UoUGFnZSYgcGFn
ZSkKICAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1
bWVudCkKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0
b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICAvLyBUaGlzIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciB3YXMgcmV0cmlldmVkIGZyb20gdGhlIERvY3VtZW50J3MgUGFnZSwKICAg
ICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFn
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCmluZGV4IDE5MTZjY2IyMjdlZDkxZjVmZjkyNjQyNGYwMDY5ODI5NjJiMWE3NmYuLmRkN2Y5
YTQ2YmQ4NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2NGU2N2FlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtNDQsMTAgKzQ0LDEw
IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcigpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQg
cXVvdGEpID0gMDsKIAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShE
b2N1bWVudCYpOworICAgIFJlZjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYpOwogCiAgICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFn
ZSYpOwpAQCAtNTksOCArNTksOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBTdG9yYWdl
TmFtZXNwYWNlJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKTsKICAgICBTdG9yYWdlTmFtZXNwYWNl
JiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mKTsKIAotICAg
IHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAg
dmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKIAogICAgIEhh
c2hTZXQ8UGFnZSo+IG1fcGFnZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAw
MjViOTZiYmNiNDQ0ODYxMWM3MzQ1YjBjZGZjN2ExMGQ5NmNlNTA2Li44NWY2ZmYxMmYzODU1ZTcy
ZjM1MTVjZjMyN2I1MzliNWYzZDAyM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBA
IC0xMDE2LDcgKzEwMTYsNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IFNWR0VsZW1l
bnQ6OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFhdHRy
aWJ1dGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0
ZU1vZGUpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
U1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLT5uYW1lKCkpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIGF1dG8g
Y3NzVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IDhjNjZkMmMyMjE2MGM0MmVl
ZDY0MDI5YzI3YTJjYjY0OTFkMWE1NmIuLmMyNDFlMzBlMzllNjUwOGEyOWI3NTRjODc4NmE5ZDhm
ODBlM2FjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKCFpbnB1dDEg
fHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOworICAgIGF1
dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKICAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAg
aW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5k
KGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNhN2JiNGY1OGZkYWI4MjViZjYxYzk3Yjc5Li43NTEz
YWNlNTE3OTBmODZkOGU5Y2Y4ZTBjODE2NDYyOTA3MjMzOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3Jl
YXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9
IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZhbHVlcyk7
CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4g
ZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKaW5kZXggNTdmYWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdj
NDdkYmFiMi4uNTJiZTk3MTJiYzVmNjFhYjQ3ZTIyNjgwMDBmMmIxOTY4MGY2Njk1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAg
ICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5j
dGlvbigpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBG
RUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVy
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAppbmRleCBhMTBlM2E3MjFjZmVhYmQ0NzIyYWEw
OTdiMWRjZjg3ZTJjMjVmOWE3Li5kMzg1NTc0NzdjMTY4OWIyMThhYmRjOWYwYTkxNjNmMTQ5NWNi
YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApA
QCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlCiAgICAgaWYgKCFpbnB1
dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0
b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBv
c2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQo
KSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0
RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5w
dXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3
NzQ5ZDI3MjU5MjNkMmJmZDA0Li4wNjdmMTJjYjcwMzk4MmM3ZWQxNDI4NGYwNGM2MGQzN2M3ZTFk
OWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAK
ICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9y
RmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVh
dGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwg
Y29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0
aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKaW5kZXggNDM1ZmM3MDFkZjYwN2NmMGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMTRm
NzdmOWY2Zjg4MTMxOTY0YmI0MmVhMjk1ZDkxMzdlNjljZGQzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNyw3ICsx
MjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1
dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0
b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
RGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFu
bmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVm
ZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZl
Q2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDU1MGY2NWUyNzQz
Y2YxZWQ2YTY0NDNmOTUxZWNmNGJiOGVmOGM1OWIuLmQ1NGU1ZjJiNjg1ZTk5MzU3OWFmOTUxOTM3
NzY1ZmEzNGVhM2IxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAog
ICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2
aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0
aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZl
Y3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjMyMGY5
MjFmZTBhZmJlZTI4MmY0ZGY3ODc3M2RlYmNjNzg4MTJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBz
dGREZXZpYXRpb25ZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBz
dGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBl
ZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBz
dGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IDUwMmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJm
NWRjODc0MzViODkuLmZiOTJhMzVlOGQ0NDAzNzhjMjBjMGM2MjU4NWM3YjVlYTk4NGQwMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBA
QCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1l
cmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVy
JiBmaWx0ZXIpCiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6
Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVy
KTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZH
RkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNm
NTI5OWQ4YjBiNmZjLi5lM2U4MWFmZTFhZjdmMTI2ZTRkOWIwN2U4MDM5YzJlOGFiOGQ4NjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0x
NDUsNyArMTQ1LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8
IDAgfHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdP
cGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhv
bG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAg
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZm
ZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAy
ODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3MDQxYWFkYmQwMjIyLi5jNDAyZTQwM2ViMmI5NDQz
OTg4YzhiMGVhOTQ5YjM3ZmQwMjRlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkp
OworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAppbmRleCAzYTJmNGQyM2Y5NzNkNTdiMWNkYzY5ZGRlMjE3NzM3ODcz
ZDBjZmU3Li45ZTRkN2ZkNDI3ZmNiMWQwYzFiYmNlYTQzNDVkNWViZTk1ZGNlNTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBD
b2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVy
KHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFy
RXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQo
KSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVu
Z3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMyNjNiN2Zl
MDA2MjU0ODkyNDQuLmFlMGQxOTE5ODA1N2I4ZjI0MjJmMWJiZmM1MTgwZjUzZDBlYTU0ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRpbGU6OmNy
ZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsK
ICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBl
ZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4IDg2ZDk1
OGY1NzYwNTFiODA3ZTA1MWMxNWFlYTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgwNDc1ZTNk
ZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
R0NPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlv
bi5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NPYnNl
cnZhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+IHsKIHB1Ymxp
YzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdDT2JzZXJ2
YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPiBzdGF0aWMgUmVmPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NPYnNl
cnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAKICAgICBib29s
IHdhc0NvbGxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2YTRlY2Y4
ZjQzNWZkZjJjM2I4NDVmLi45OTAxN2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIwMTdjOTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
UmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3Vs
dC5jb3B5UmVmKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5
cGUpOwogICAgIGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/
IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4dFJlc291
cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNldERlY29k
ZXIoV1RGTW92ZShkZWNvZGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3NWUwZjQ5
MGJhYTYwODg1Zi4uYjQyNTBhMDJjZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IFhN
TERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KTsKKyAgICBhdXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVh
dGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBi
b29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsKICAg
ICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGltcGxl
bWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4gY2F1
c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgpOyAv
LyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVmb3Jl
IGRlc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3OGQwYmE1
YzliOWNlZGI3Zi4uMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0
aWMgSVBDOjpDb25uZWN0aW9uKiBjdXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdlYlByb2Nl
c3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
MzIxYTA4Mzg2OTM4NmM0ZmJmNWYyOGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3OWUzMzE3
ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYyY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVm
PFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KTsKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5t
bQppbmRleCBiOWZjODk1MGZhMzNjYTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5jNzY0OTZi
NzMxMjQ2N2MzNjYwNjJmYWVlYzQ3NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsxMDMsOCBA
QCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRl
CiAKIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSBi
b2R5OihpZCltZXNzYWdlQm9keQogewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmplY3RHcmFw
aD4gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2Fn
ZUJvZHkpOwotICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdr
TWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2Jq
Q09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nvbm5lY3Rpb24u
cG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwogfQogCiAtIChX
ZWJLaXQ6OldlYkNvbm5lY3Rpb24mKV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiOWJlZDFkZTk0ZWY3MTc2YzNmZWJk
YWNjMTdlNGRjNGUxZGVhYTdmLi4xMmJmNTM5NWZmYjc3YzdhYmRkYWYyOTBjZGNmY2E5NmFmOTE0
MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTExMzQsNyArMTEzNCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3Vy
YXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VI
YW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
ICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhh
bmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VD
R0ltYWdlKCkgOiBudWxscHRyOwogICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9
IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBz
aXplOk5TTWFrZVNpemUoc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAgICAgIGhh
bmRsZXIobnNJbWFnZS5nZXQoKSwgbmlsKTsKQEAgLTIwNjMsNyArMjA2Myw3IEBAIC0gKFJlZlB0
cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBIQVZFKElPU1VS
RkFDRV9BQ0NFTEVSQVRPUikKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVz
c2VkRm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAo
V2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25h
cHNob3RGb3JtYXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6
OlZpZXdTbmFwc2hvdD4gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0
ZShudWxscHRyKTsKKyAgICAgICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFw
c2hvdDo6Y3JlYXRlKG51bGxwdHIpOwogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZl
cnRUb0Zvcm1hdChXVEZNb3ZlKHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6
WVVWNDIyLCBbdmlld1NuYXBzaG90XShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNl
PiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAgICAgICAgICBpZiAoY29udmVydGVkU3VyZmFjZSkK
ICAgICAgICAgICAgICAgICB2aWV3U25hcHNob3QtPnNldFN1cmZhY2UoV1RGTW92ZShjb252ZXJ0
ZWRTdXJmYWNlKSk7CkBAIC01OTAyLDcgKzU5MDIsNyBAQCAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6
KENHUmVjdClyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9hdClp
bQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAKICAgICAgICAgaWYgKCFiaXRtYXApIHsKICAgICAgICAgICAgIGNvcGllZENvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRleCAwMDdk
MTExYmFkMDdiMDMwY2I5YTgwYTM3YWFjYzk1YjI1ZjkzYzQyLi45NWIwMmU4M2VlYzAxMDA3ODU3
NTlmMGZkNmIyOGQ1Y2ZmZjljZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcApAQCAt
ODQsOCArODQsOCBAQCB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0
aW9uQ2hhbmdlZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aQogICAgIFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3Rh
bXApLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OwogICAgIGNvcmVQb3NpdGlvbi5h
bHRpdHVkZSA9IGFsdGl0dWRlOwogICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0g
YWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9z
aXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRp
b24pKTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihwb3NpdGlvbi5nZXQoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9z
aXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOworICAgIG1fZ2VvbG9jYXRpb25N
YW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLnB0cigpKTsKIH0KIAog
dm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlFcnJvck9jY3VycmVkKGNvbnN0
IGNoYXIqIC8qIG1lc3NhZ2UgKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDdhZmE3OWM2MWViY2MwMmVjZmI4
ZWY5OWJkZGRlMTM3NTg2MjQxMzMuLmJjZTgwNThlNTllNjM4NzA0MmRjZDI2OGZhMTk5M2E2Y2Q0
Yjc0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0xNDU1LDggKzE0NTUsOCBAQCB2b2lkIHdlYmtpdF93ZWJf
Y29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoR19JU19UTFNfQ0VSVElGSUNBVEUoY2VydGlm
aWNhdGUpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGhvc3QpOwogCi0gICAgUmVmUHRyPFdlYkNl
cnRpZmljYXRlSW5mbz4gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpj
cmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2FzdDxH
VGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9v
bC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5m
by5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CisgICAgYXV0byB3ZWJDZXJ0aWZpY2F0
ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwor
ICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZp
Y2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLnB0cigpLCBTdHJpbmc6OmZyb21VVEY4KGhv
c3QpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cAppbmRleCBmMTViYTY4ZDFkZmRjYTAwNTZjYzZjZGRmMjdjZjZkNzJkMTE2MWQxLi42YTBkNjVi
ZjAxODEyNWE1ZjVjOTAzYTI1NzE2NThjNTBmNmI4NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgaGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghYml0bWFw
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRp
b25TZXNzaW9uQ29jb2EubW0KaW5kZXggNjdmMTIyMmE3NDZjNjcyYzY4N2QyYWZiZDI3OGMxZGI1
Mzg5OGJjYi4uYzUyMjQ1YjVmMDllMWU4MjgwNGUxODkxZmQ1NDk5MjBmOGQ3YjYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpAQCAtMzksNyArMzksNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFIYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jh
Y2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGM4ODM2NDJiNWRjNTA2YjYyNzY1MTBiNzM0ODVmY2Q0NjYyZWY0ODEuLjVmZDVhZjQ5
YjRjZDU3YWVhZmYxNjg2Y2FhY2U0YWU1MTMyZmI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6
aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKICAgICBB
U1NFUlQobV9zaXplID09IHVwZGF0ZUluZm8udmlld1NpemUpOwogICAgIAotICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUlu
Zm8uYml0bWFwSGFuZGxlKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KaW5kZXggZjVlZTRkZjE4MDQzZDNiNWE2NGIxMGQ0YzJlNjM3NDBkOTkzOTc3Mi4u
MzEzZTE0NTczNTVhZjk3OTg1ZDZiNTYwYTE2Nzk2YmE0YmI0YjVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNzQwLDkgKzc0
MCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDYW5jZWxD
bGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHBhCiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJv
cj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBX
ZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBOU0Vycm9yICpvcmlnaW5hbEVycm9yKQogewot
ICAgIFJlZlB0cjxBUEk6OkZyYW1lSGFuZGxlPiBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5k
bGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7CisgICAgYXV0byBmcmFtZUhhbmRs
ZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7CiAK
LSAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJv
clJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhh
bmRsZTp3cmFwcGVyKCpmcmFtZUhhbmRsZSkgdXJsU3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlcklu
Zm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1dKTsKKyAgICBhdXRvIHJlY292
ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1w
dGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKGZy
YW1lSGFuZGxlLmdldCgpKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVy
cm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOwogCiAgICAgYXV0byB1c2VySW5mbyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OnJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpLCBfV0tSZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5LCBu
aWxdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCA5ZDc3NDEwYzA5YzFiNzExNWE0MDQx
ZDI5N2JiNDU2ODM4ZWFlOTYwLi42NGEzNWY3ZTg3OWRiMDNkYzBiZjg3NzIyMTQ0YzIyYmZmM2Q5
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaApAQCAtMTcxLDcgKzE3MSw3IEBAIGNsYXNzIFBs
YXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCBmaW5hbDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJh
Y2tTZXNzaW9uTW9kZWxDCiAKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1
YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgc3RhdGljIFJl
ZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKICAg
ICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IDRjOGZjYmY4ZWY3MmUwNTFl
OGEyMjkxYjVmNGYxNmZmZGMwMjcwNjcuLjg2NzdhMDQxYzcwZDExYjk3Njk4YzQ3ZWMyYjc5YWRm
MzFkOTAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTI5Miw5ICsyOTIsOSBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGljdHVyZUluUGljdHVyZUFjdGl2ZUNo
YW5nZWQoYm9vbCBhY3RpdmUpCiAKICNwcmFnbWEgbWFyayAtIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eQogCi1SZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCitSZWY8UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CiB9CiAKIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggYTkyOTlmMWI3NDY5YjAzYWQyMzQ2MjRiY2Qw
YjM1NmJjOTI4YjY5Mi4uMjk3Zjk2OGIzNTI5ZTBjMzU1Y2Q0ZGIxYTg5OWMyMGU4Y2M5MDI0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWwKIAogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Piwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSYpOwogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggYTQz
OGZlNzFhODZkMzI3Mjg1YWVmNTIxMmZmMzU2MTI2NDI1NmQxNi4uNGNmMzBiZjMzMWU3OTQyMWYy
MzljY2E1OTYzMTEzOTJmOGY1YTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzE0
LDkgKzMxNCw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGlj
dHVyZUluUGljdHVyZSgpCiAKICNwcmFnbWEgbWFyayAtIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eQogCi1SZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQorUmVmPFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFn
ZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CiB9CiAKIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFn
ZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3MTBkZjE5YzQyNjU4ZjZmNTljN2MxODA3NzcxYWYy
MmUyMjNkYzIuLjFkYWQ3MDRlYzk5NmIxZWY5ZDRjMWE5OWIxNzBiZjc2MjNkMzY4OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tCkBAIC0xNTksOCArMTU5LDggQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVt
b3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIuZ2V0KCks
IHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBzaXplKTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsK
IH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIG51bWJlck9mRmlsZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDE1MzY1MDg0MGEwMDM2
YjMzNjBkNDA3OTQ0OGVlMDcwNTlhMzEzYjIuLmU0NjNhYzk5NGJiOWY4YWFjNDRmZTgyOTM4YmUx
MzYxNmJiMDU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC00Mzc0LDcgKzQzNzQsNyBAQCBSZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJWaWV3
SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90ID0gVmlld1Nu
YXBzaG90OjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFZp
ZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwogICAgIHNuYXBzaG90LT5zZXRW
b2xhdGlsZSh0cnVlKTsKIAogICAgIHJldHVybiBzbmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCA3
NTA5ZGRlZGI0YzA4ZTZiZTg1NGJiN2NlZjcyNWE5NzlkODBkY2VlLi44NmRjMDljMzQxZGE3ZjZl
YzQxYzZhODJhMzcxZjE3MjcxZjY4YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCkBAIC00NiwxMiArNDYsMTIg
QEAgRG93bmxvYWRQcm94eU1hcDo6fkRvd25sb2FkUHJveHlNYXAoKQogCiBEb3dubG9hZFByb3h5
KiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiB7Ci0gICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2FkUHJveHkgPSBEb3dubG9h
ZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwotICAg
IG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJv
eHkpOworICAgIGF1dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhp
cywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgbV9kb3dubG9hZHMuc2V0KGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5jb3B5UmVmKCkpOwogCi0g
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25s
b2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25s
b2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuZ2V0KCkp
OwogCi0gICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7CisgICAgcmV0dXJuIGRvd25sb2Fk
UHJveHkucHRyKCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eU1hcDo6ZG93bmxvYWRGaW5pc2hl
ZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDc5NjU4NjhiZTA0MzM5ZTc4NDlmNGRkMzQ0MmM2NGRjOTU2
ZTY2OGMuLmZhZTFmM2ZjYTg4ODcxOWJlN2Y2MjcyZDIwNTcyMGJiODkwMTc3ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTk2LDExICs5NiwxMSBAQCBI
YXNoTWFwPFN0cmluZywgYm9vbD4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3RpZmlj
YXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hv
dyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmlu
ZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3Qg
U3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyLCBjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQogewogICAg
IHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRp
b25JRCgpOwotICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IFdlYk5v
dGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwg
b3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgYXV0byBub3RpZmljYXRp
b24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBs
YW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIHN0ZDo6
cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9w
YWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xvYmFs
Tm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uSURQ
YWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjpt
YWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbikpOwotICAgIG1fcHJv
dmlkZXItPnNob3coKndlYlBhZ2UsICpub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0aW9u
cy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRp
b25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOworICAgIG1fcHJvdmlkZXItPnNob3coKndl
YlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAwMjVjOWM2Y2Y1NmNmMjU0MzQ4NzZmZGJkMTY2ZjE0YzA4ZjgxNTM0Li40NzA4ODEwMGVlMzFk
MDdhNjZkN2U5MTU4ZTQ5OTU4YjhkZjg1OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTM2NDksMTAgKzM2NDksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2Vzcy0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOwogICAgIAotICAgIFJlZlB0cjxX
ZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhpcywgZnJh
bWVJRCk7CisgICAgYXV0byBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhpcywg
ZnJhbWVJRCk7CiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRvIHRoZSBwcm9jZXNzIHdpZGUgbWFw
LgotICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsICpzdWJGcmFtZSk7CisgICAg
bV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgc3ViRnJhbWUuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90IGZyYW1lSUQsIEdsb2Jh
bFdpbmRvd0lkZW50aWZpZXImJiB3aW5kb3dJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGZhNDNhM2QxZTc4MzA5MmJiN2MwMjE4MTQ3
ZmQxNjRmODI3YjAzYzAuLjllM2Y0MDRiZDZlNmFiYjNhYjI0MzlhYmE3MjdjNmI1YzM5YmVmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE3MTMs
NyArMTcxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qg
c3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+IHJlcXVlc3QgPSBTdGF0aXN0aWNz
UmVxdWVzdDo6Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBTdGF0aXN0aWNzUmVxdWVzdDo6Y3Jl
YXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
KTsKIAogICAgIGlmIChzdGF0aXN0aWNzTWFzayAmIFN0YXRpc3RpY3NSZXF1ZXN0VHlwZVdlYkNv
bnRlbnQpCiAgICAgICAgIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhyZXF1ZXN0LmdldCgp
KTsKQEAgLTE3MjIsMjAgKzE3MjIsMjAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlz
dGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAgICAg
ICAgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1Jl
cXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0
YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gRklYTUUgKE11
bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGluZyBz
dGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVz
dCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlz
dGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3b3JrUHJvY2Vz
cyBzdGF0aXN0aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFibGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3Qt
PmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNldChy
ZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QuYWRk
T3V0c3RhbmRpbmdSZXF1ZXN0KCk7CisgICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVl
c3RJRCwgJnJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MocmVxdWVzdElEKSwgMCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA2MzQz
MjQ5YmFhNzI1YWZiNmNiNDQ0YzU1MjMyNTNkMTdlMDgwYmMuLmU2YjQ0NGU5MTQyN2I5NmNhYTg4
NDNhZWIzZmEyMjdjZGQ3YjU0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtNDg3LDggKzQ4Nyw4IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAg
V2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmLCBX
ZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1l
ZDo6Tm8pOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRp
c3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKLSAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3Rh
dGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOworICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRlbnRT
dGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0TmV0d29ya2lu
Z1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQ
cm94eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2Vi
UGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCA1ZTNmYjY1YzIzMGRiZDg0ZGFlMzcwMmRkNmRk
ZjdkMjUzMjQwODlkLi5lM2FlNTE0YjAzN2NlOGY4ODA0OThhZmUxMmExZjllYzMxYmE2NmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2Vi
UGFnZVByb3h5R1N0cmVhbWVyLmNwcApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
cyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7Ci0g
ICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+IHJl
cXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVh
dGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKLSAgICBpZiAocGFnZUNsaWVudCgpLmRl
Y2lkZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qo
KnJlcXVlc3QpKQorICAgIGF1dG8gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24pOwor
ICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBs
dWdpbnNQZXJtaXNzaW9uUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgcmVxdWVzdC0+ZGVueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggODUxNjQzNzBm
N2I1MWJmYjA5MTBlYTAwNDFkYmUxMDE0NDI3Zjg2My4uOTJlYWQwNDVlOGI4ZmMyZTRiOTkzNDQy
NmJkMTBhNGE4ZTU5ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC01MywxOCArNTMsMTgg
QEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVG
cm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewogICAgIEFTU0VSVCghbV93ZWJWaWV3KTsKIAotICAg
IFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3Bl
cnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBj
aGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVt
Q29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlm
aWVyRm9yUGFnZShudWxscHRyKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6
OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShudWxscHRyKSk7CiAK
ICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQ
cm9jZXNzUG9vbChpbnNwZWN0b3JMZXZlbEZvclBhZ2UobnVsbHB0cikpKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKICAgICBtX3dlYlZp
ZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCpwYWdlQ29uZmlndXJhdGlv
bi5wdHIoKSkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlZpZXcsICJkZXN0
cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CiAgICAgZ19v
YmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX3dlYlZpZXcpLCByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJm1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggYjY0ZTMzNTkyOTJiM2ZlZWNm
N2U3MmVhYjMwZTBhNmE3MTlmZDM0Yy4uY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4M2Zi
NDI5YzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogICAgIEFTU0VSVChp
bnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKIAotICAgIFJl
ZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIu
Iik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFu
Z2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCh0cnVlKTsKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZlcmVu
Y2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsKICAgICB9KTsKLSAgICBSZWZQdHI8V2Vi
UGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdl
R3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VH
cm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJG
b3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9
IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVsKCkp
KTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0
KCkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRy
KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigp
KTsKICAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlKCpwYWdlQ29uZmlndXJhdGlvbi5wdHIoKSkpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3Bv
aW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9yVmll
dywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tCmluZGV4IGMxY2Y1ODc1OGVjYmE5ODU3YTBhNjFhZDQ4ZDZiZmEzZTFjMGQ3
ZjMuLjlhNDdlMjY0OWY2OTNjZDJiM2I1NWNlYzIwZTE3M2MyZmI0YjEzYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
R3JhbnRlZAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChV
UkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJh
bWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVl
c3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOwotICAgICAgICAgICAgUmVm
UHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rv
cihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRl
Y2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1ZXN0
ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6
dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6cmVx
dWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUoY2hl
Y2tlcildKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICAgICAgICAgIGlmIChjaGVja2VyLT5j
b21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAxMTIzNWExMjdlMjc3YTAxODc2
MDM4Yzk3NDZmN2Y4ZWQyY2NiYTMxLi45ZmVmZmRkZjQxMDQxMmU3NmQyYzBjM2RmZDY3YmYxZTFi
ZDJiMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCkBAIC0zODQsOSArMzg0LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQKIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlcikKIHsKLSAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRy
dWUpOwotICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UuZ2V0KCksIGZp
bGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIu
Z2V0KCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGltYWdlLnB0cigpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggY2JmZTMw
ZTllMGJlODMyMTUxODE5NjM1NWY3Nzk4MDhiODI0ZjJmNi4uMzc5OGJmYmI1YTljNDE0ZjYwZmRj
M2NiZWE5YzdjMGRiM2UwMjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVu
Y2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJL
aXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUo
REVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBX
ZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgog
ICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMjAw
LDExICsyMDAsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlw
dFJ1bnRpbWVGbGFncyh7IH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdl
KGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgp
KSk7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVj
dG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVsKCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAogICAgIFdLUGFnZU5hdmlnYXRp
b25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50ID0gewogICAgICAgICB7IDAsIHRoaXMgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVJhbmdlLm1tCmluZGV4IDgyNTA5MDE3OTAwZjQ3ODk0NDllYzVkZWZjNzEy
OGExNzVjNjY5OTcuLjkzMTM0M2ViMWJiODczMmVhNWQzYjU0MjRjNTMwNmM4NDYyZTlhYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpAQCAtNTAsOCArNTAsOCBAQCAtIChpZClfaW5pdFdp
dGhJbXBsOihXZWJDb3JlOjpSYW5nZSopaW1wbAogCiAtIChpZClpbml0V2l0aERvY3VtZW50OihX
S0RPTURvY3VtZW50ICopZG9jdW1lbnQKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dlYkNvcmVEb2N1bWVudChk
b2N1bWVudCkpOwotICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBsOnJhbmdlLmdldCgpXTsK
KyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dlYkNv
cmVEb2N1bWVudChkb2N1bWVudCkpOworICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBsOnJh
bmdlLnB0cigpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5OWYzNTcw
ZDBlMzBiYWRmZTAxZGFjZmRiM2ZhZjQ1MGU3Y2FlNmYuLjhjMjk1YmFlYmZiYTJlMDZiNWI3NjE4
NTViZjJlZDk4Mjk5ZmVkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9u
CiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNpemUoKTsKICAgICBi
YWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGlm
ICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMWEzMTIzM2U2ZmM5
ZTI4MThhMmZjZmEzMDE5MWE1ZmExNTc4OGI1Li45NTEyMzAyYjI4MmU0MWVkMWIyNDcxOWEyZDA0
NDhkYzc0N2ZmZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIFJhCiAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRh
PigpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwotICAgICAgICAgICAg
cGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAg
ICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCmlu
ZGV4IGVjMDk4NjdiZjAzOGVlNThjOWZlMmQzODc0MDY0ODlkNjYzYjhkOGUuLjZlMjgyZDllMGI5
MGIyOTBlYWEwODk4N2E0MmI4Zjg5OGNhOWIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2UqIHBhZ2UsIGNv
bnN0IEhpCiAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0
VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVIaXRU
ZXN0UmVzdWx0KTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CiAKICAgICBXS1R5cGVSZWYgdXNl
ckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRv
QVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwg
JnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xpZW50
Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0
LnB0cigpKSwgdG9BUEkobW9kaWZpZXJzKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9Q
YXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBjNmE1MDY5MTc0MGE1ZGIz
ZTY1ZjE5NzU3MWI3YmQ0MDA1YmI3MWEwLi44OGMwYTJkOWM2MzEyZDJjMGVhMDZhNTU3ZjVhMDFl
MmMzOWE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NTEsNyArNzUxLDcgQEAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICBJ
bnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0b3Jl
U2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2lu
Z1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgYXV0byBjb250ZXh0ID0g
Yml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcmVhbGx5IGNhbGwgYXBwbHlEZXZpY2VTY2FsZUZhY3RvciBpbnN0ZWFkIG9mIHNjYWxlLCBi
dXQgdGhhdCBlbmRzIHVwIGNhbGxpbmcgaW50byBXS1NJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBjMmNiYTA5MGZiYmRiMmQ5
YTE5MGIxYWZmOGZlMzU1Y2Q2ZmMzMjY0Li4wMTk5Yjg0ZjhmNGUyOGY3NjlhNzQyMTk1MTg4OTEz
MWRjODc3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIFBERlBsdWdpbjo6YWRkQXJj
aGl2ZVJlc291cmNlKCkKICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fc291cmNlVVJM
IHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24xXzEg
aGVhZGVyRmllbGRzOmhlYWRlcnNdKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNpemVk
UmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBT
dHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1f
c291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVz
aXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmxv
YWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdp
bjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsKICAg
ICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgYXV0
byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yLCAtY29udGVudHNTY2FsZUZh
Y3RvcikpOwpAQCAtMTg1MywxMSArMTg1Myw3IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsCiAg
ICAgICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYWluVGV4dFN0cmluZyA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKICAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIHBsYWluVGV4dFN0cmluZy5nZXQo
KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JU
eXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7Ci0KLSAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxv
Y2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5LT5k
YXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAzMTQ3OWFmYzI5YWRmNGFjODUyYmIzY2UzZDgzYzQx
MjkyNDdiZmMwLi42NThlY2Q5ZDIzNzg5MDRiMzQ3ZDBkM2E2ZjQ2N2U5NDRkMmYwNzU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nl
c3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pOwotICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBj
b25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7
CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLmNvcHlSZWYoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CkBAIC05NCw3ICs5NCw3IEBAIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblBy
b2Nlc3NDb25uZWN0CiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBy
b2Nlc3NUb2tlbiwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmdldCgpOworICAgIHJldHVy
biBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5wdHIoKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA4ODVmY2EzZTE0
Y2YwNmQwNWM3NGIwM2JiOTRmM2FiYjZiYzkxZDE2Li5kNjUwNTM1OGRiNmYzNWM4MTIzMGNhZjE5
ZDk5ZjRjNGMwMWI0ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKICAgICBpZiAoc25hcHNob3RTdG9yZUhhbmRs
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBz
aG90U3RvcmVIYW5kbGUpOworICAgIGF1dG8gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKICAgICByZXR1cm4gc25hcHNob3RCdWZm
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggNDQ5NWM5OTExMjJkMDg0M2RhYjBjODRkYTYwYmE1YTdjOTdiYTZjOC4uNTky
YTQ4NzE1MGVkN2FmOGVlZTg1MjcwMDZjZWViYzljMzcxZTgzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTExNzQsOCArMTE3NCw4
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVz
dCkKICAgICB9CiAKICAgICAvLyBUaGlzIHJlcXVlc3QgaXMgdG8gbG9hZCBhIFVSTCBhbmQgY3Jl
YXRlIGEgc3RyZWFtLgotICAgIFJlZlB0cjxTdHJlYW0+IHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0
cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0
KCkpOwotICAgIGFkZFN0cmVhbShzdHJlYW0uZ2V0KCkpOworICAgIGF1dG8gc3RyZWFtID0gUGx1
Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVl
c3QtPnJlcXVlc3QoKSk7CisgICAgYWRkU3RyZWFtKHN0cmVhbS5wdHIoKSk7CiAgICAgc3RyZWFt
LT5zdGFydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGIzMWIxMTdmMGVkYWIz
OThiMjUxMjQwNjRlMTYyMjdmYWY3ODYyNTUuLjc4ZTY3MzU0MDcxYjM2NTQ3MDBmMTZmNDBlY2Fm
ZDk5NTZlNjExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03MTgsOCArNzE4LDggQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJhbWUs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAgICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIu
cXVvdGEob3JpZ2luRGF0YSk7CiAgICAgYXV0byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2Vy
LnVzYWdlKG9yaWdpbkRhdGEpOwogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQ
dHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9y
aWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBu
ZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJh
c2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRh
aWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRh
aWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgYXV0byBz
ZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZp
ZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVk
QnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5
T3JpZ2luLnB0cigpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVu
dFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFp
bHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
CkBAIC03MzcsOCArNzM3LDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoaW50NjRfdCkKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgaW50NjRfdCB0b3Rh
bEJ5dGVzTmVlZGVkKQogewotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRv
U3RyaW5nKCkpOwotICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJl
YWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7CisgICAg
aWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIHRvdGFsQnl0ZXNO
ZWVkZWQpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBjYWNoZVN0b3JhZ2UgPSBtX3Bh
Z2UuY29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGQwNWZjOTk2YzFkNGVkOWY3NTZmYzg4NWU5M2NkNjViMmM0
NWQwMmMuLjFmOTFlOGNmYzRhMDU5ZjllZjc4MWUxNDYxMTA5ODczYTM3MTM3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzY3LDEwICs3NjcsMTAgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
Y29uc3QgTmF2aWdhdGkKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmb3JtU3RhdGUpOworICAgIGF1dG8gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAog
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgp
LCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigp
LCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVu
ZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246
OlVzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZjliMGNlZWY5Y2YwYmZhZjM0ZjY0ZGE4YjMxNjA3ODQ3MTQyYTBhMy4uMTY1NDJmYjkw
NjE1YzMyMzdmMTU3N2MzNjI5OTQyM2I3Y2I4ZjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdAog
ICAgICAgICBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5h
bWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
KSwgMCk7CiAgICAgQVNTRVJUKHBhdGhuYW1lcy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNI
YW5kbGVBcnJheS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZN
b3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgaWYgKGF1dG8g
ZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbnNIYW5kbGVBcnJheVtpXSkpKQogICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVy
bWFuZW50bHkoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRl
eCA4NzE2MTIwZjcxZGNmOWFjMjNkOGQxM2ViZGY5M2M2N2RmMzNkODk2Li4xODY3Yzk4NDkwNWM5
MjAwZTAyMmRlMzZiOGQwNjVlZmZmMjQ0ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0
ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNv
bnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGZmZWUyYTY0NmNjNmU4OWYyNDMzZjNhNDdm
ZTdmNjQ3MzQ3YTgwMmUuLmY4N2Q5MzQ0M2Y3YzU4YTgyYzQzNjNmMDM0YTAwNjAxM2I2YWExN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lk
IFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBFbGVtZQogICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxl
U3RyaW5nKHVybCk7CiAgICAgfQogCi0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGVsZW1lbnQpOwogCiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdl
Q29jb2EubW0KaW5kZXggYTM4Y2QyYmY2Mzc5NGM4ZTlmMWQyMTJhM2U3OGIzZThjNGVmOGM2Yi4u
OGNlNTY1ZmI5NTZmMzZjYjc1MmVmODExYTEyNDVlYjU1ZGRjZjliMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpA
QCAtMTY0LDcgKzE2NCw3IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFy
eVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgaWYgKHByZXNl
bnRhdGlvblRyYW5zaXRpb24gPT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkJvdW5jZUFuZENyb3NzZmFkZSkKICAgICAgICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5k
aWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKICAgICAK
LSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6
OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5kaWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJh
bnNpdGlvbik7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKHJhbmdlLCBpbmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9u
KTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpIHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGlu
Z0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBv
cHVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYUltcGwuY3BwCmluZGV4IDc4MjRlNWNmNzFiNDdkYjA5ZWVhMzVhNzY5ZmE3NjQxYTcy
ZDdmMzIuLjZhODZiMDAyYjg2ZjQyYTAxY2Y0OGU1ZGY2OTAwYWNmNThmODMxYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cApAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUo
KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJpdG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCA5ZmVmZGJjYTEyY2Y1OWU2
ZTMyNWNjOWMyNGViZTRmMzA5MjlkMWYzLi42M2NjMjgzOTJlNDgwZGZiZDU0MzJkNjkwMDBmYTM4
ZjIyZGU2NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxl
cjo6aGlkZUZpbmRVSSgpCiAKIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91
bGRBbmltYXRlKQogewotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0
SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91
bGRBbmltYXRlID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKKyAgICBhdXRvIGlu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVj
dGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNT
ZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNp
dGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUp
OwogICAgIGlmICghaW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA4
MGJkMjEzOTU4N2IzMTVkZjE3NmQ2MjBiNDU4OWRjMzY1OTlhMmY2Li42YWM2MDM5YWEzMTg0OTVl
MzdiYjE1ODk0N2E2ZmQ4MmVlYTU1YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIG1fcGVuZGluZ0Jh
Y2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3Qg
cGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0
UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyLCBwYWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3lu
YyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0
b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVz
aCgpOwogCiAgICAgICAgIE1vbm90b25pY1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
aW5kZXggMTg5ZDFhMTg4YjI0YjY0NDZkMDUyN2RmODY1MGYwYTFhMzg2ODEwYi4uZTQ3MzcwZWZi
NWUwZjQxNTg5YjIxNGI1YWI3MTliNzk4MmMwMmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2Vi
RnJhbWU6OmRvY3VtZW50TG9hZGVyRGV0YWNoZWQodWludDY0X3QgbmF2aWdhdGlvbklEKQogI2lm
IFBMQVRGT1JNKENPQ09BKQogUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hp
dmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0g
ICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoKmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRd
KEZyYW1lJiBmcmFtZSkgLT4gYm9vbCB7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBj
b250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJvb2wgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmU2YmVmYjgxNDc4NjVmYzBlODFlODEyMjNiNmM0OTZh
YjdmMWJkNS4uYjRiN2Q3YTdjYzg0NWU1NTMyYzNiMjA2ZTdkOWMwZTI1ZWE1N2RkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MzIsMTAg
KzE0MzIsMTAgQEAgdm9pZCBXZWJQYWdlOjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pbnQgZG8KICAgICBjb25zdCBpbnQgc2luZ2xl
Q2xpY2sgPSAxOwogICAgIC8vIEZJWE1FOiBTZXQgbW9kaWZpZXIga2V5cy4KICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgcHJvYmFibHkgc2V0IElzU2ltdWxhdGVkOjpZZXMuCi0gICAgUmVmUHRy
PE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAgIGF1dG8gbW91c2VFdmVudCA9IE1vdXNl
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAg
ICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCBzaW5nbGVDbGljaywgc2NyZWVu
UG9pbnQsIGRvY3VtZW50UG9pbnQsIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCBXZWJDb3Jl
OjpOb1RhcCwgbnVsbHB0cik7CiAKLSAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVk
KG1haW5GcmFtZURvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3Vz
ZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBT
aG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxT
ZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmco
KSwgbW91c2VFdmVudC5wdHIoKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0
b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTM3MDUsNyArMzcwNSw3IEBAIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAKICAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lv
bnNIYW5kbGVBcnJheS5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCisgICAgICAgICAgICBpZiAoYXV0
byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4
dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVuZChleHRlbnNpb24pOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJv
bGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29u
dHJvbGxlcklPUy5tbQppbmRleCAwYzg0ZjY0YzhjNjNlZDFiYmQ2MGI3M2YzYjU2OGE0YTI3OGMx
YWRmLi5mYmE1YjA1NmE0YzlmYWQwMTcxYzE4ODNmMDBjZWJmNWEzNTdmNTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZp
bmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAg
ICAgIG1faXNTaG93aW5nRmluZEluZGljYXRvciA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0
cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0
aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRpb25z
LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRv
dGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNhbE1hcmdpbikpOworICAgIGF1dG8gdGV4
dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNl
bGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNl
bnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4s
IHRvdGFsVmVydGljYWxNYXJnaW4pKTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA5ZGY2MThhNGQ5YWQ4ZTliMWQ2MzIwNmM2MDA1MWRh
ZmI3NmRiMjM1Li41ZDU2NTIyYjU5MDNkYTc1N2FjNTVjYTg0ODU0ZjYwOTA2YzlmZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMTgyMCw3ICsxODIwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgICAgICBw
b3NpdGlvbiA9IHBvc2l0aW9uLnByZXZpb3VzKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgp
KQogICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4o
ZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAKICAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKHJhbmdlLmdldCgpKSAhPSBvbGRUZXh0KQogICAgICAgICByZXR1cm47CkBAIC0yMTQx
LDcgKzIxNDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJn
aW5JblBvaW50cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4
dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5n
ZSgqbGlua1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWlu
dEJhY2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50
QWxsQ29udGVudEZvckNvbXBsZXhSYW5nZXMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbGlu
a1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5kaWNh
dG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tn
cm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29u
dGVudEZvckNvbXBsZXhSYW5nZXMgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdp
bkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2Nh
bGVGYWN0b3IpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNh
dG9yKQpAQCAtMjE1Niw3ICsyMTU2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9ySWRlbnRpZmllciA9IERhdGFEZXRl
Y3Rpb246OmRhdGFEZXRlY3RvcklkZW50aWZpZXIoKmVsZW1lbnQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mby5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKERhdGFEZXRlY3Rpb246OnJlcXVpcmVzRXh0ZW5kZWRDb250ZXh0KCplbGVtZW50KSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gUmFu
Z2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVu
dHMoKmVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8udGV4dEJlZm9y
ZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0
ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
ZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdl
dCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZm8udGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxp
bmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0
aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwg
dHJ1ZSk7CkBAIC0yMTgxLDcgKzIxODEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4
dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGJpdG1hcENvbmZpZ3VyYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29s
b3JTcGFjZShtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwg
Yml0bWFwQ29uZmlndXJhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBz
aGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBz
aGFyZWRCaXRtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5k
ZXggZDI1NTVjMTk5MDhhYmE2NmEyNGMxYzFiZGQxNTZmMmQzZDI5MDQ4My4uNDdmYzNjMjkwZjY1
MGUzNjdkYjk4ZDRjMzcxMzVmOTNmNjRlNDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKIAogICAgIFJldGFpblB0cjxDQUJhc2lj
QW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1h
dGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSIpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKKyAgICBhdXRvIHJlbmRlclZpZXdBbmlt
YXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0
aW9uQ0EuZ2V0KCkpOwogICAgIHJlbmRlclZpZXdBbmltYXRpb24tPnNldFRvVmFsdWUodHJhbnNm
b3JtKTsKIAogICAgIFJldGFpblB0cjxDQUxheWVyPiBzaGFkb3dDQUxheWVyOwpAQCAtODcwLDcg
Kzg3MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgICAgICAgICBkcmF3aW5nQXJl
YS0+YXBwbHlUcmFuc2llbnRab29tVG9QYWdlKHNjYWxlLCBvcmlnaW4pOwogICAgIH1dOwogCi0g
ICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiLCAq
cmVuZGVyVmlld0FuaW1hdGlvbik7CisgICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXko
InRyYW5zaWVudFpvb21Db21taXQiLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAg
IGlmIChzaGFkb3dDQUxheWVyKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBz
aGFkb3dMYXllckJvdW5kc0ZvckZyYW1lKGZyYW1lVmlldywgc2NhbGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDgwNWZlOWU0Y2JiNWQ3MjZmZjIyNmZlZDU4ZDIwYTFkN2U5ZGJiMjEu
Ljg4MzAxNzI2NWJiYTk1NmRjOWQyMmY2YjYwNDQ0YjE4MDYwZWZmNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKQEAgLTQwLDI0ICs0MCwyNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24s
IGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlm
aWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNl
SW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1
b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVv
dGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVy
LCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIs
IHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIs
ICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVu
dGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykpOwogfQogCiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3Rv
cmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYU1hcCYgbWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAg
ICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCiAgICAg
ICAgIHJldHVybiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luKTsKQEAg
LTE4NSwxNiArMTg1LDE2IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxT
dG9yYWdlQXJlYSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlQXJlYSB7CiAgICAgUmVmUHRyPFN0b3Jh
Z2VNYXA+IG1fc3RvcmFnZU1hcDsKIH07CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBhdXRvJiBzbG90ID0gbV9lcGhlbWVyYWxMb2NhbFN0
b3JhZ2VBcmVhcy5hZGQoc2VjdXJpdHlPcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNsb3QpCiAgICAgICAgIHNsb3QgPSBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBo
ZW1lcmFsU3RvcmFnZUFyZWE6OmNyZWF0ZShzZWN1cml0eU9yaWdpbiwgbV9xdW90YUluQnl0ZXMp
OwotCi0gICAgcmV0dXJuIHNsb3QuZ2V0KCk7CisgICAgQVNTRVJUKHNsb3QpOworICAgIHJldHVy
biAqc2xvdDsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdl
TmFtZXNwYWNlSUQpOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2Uo
bmV3UGFnZSktPnBhZ2VJRCgpLCBtX3F1b3RhSW5CeXRlcyk7CiAKICAgICBBU1NFUlQobV9zdG9y
YWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOwotICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVs
T3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykpOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbCht
X3N0b3JhZ2VUeXBlLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQo
KSwgbV9xdW90YUluQnl0ZXMpKTsKIAogICAgIGZvciAoYXV0byYgaXRlciA6IG1fZXBoZW1lcmFs
TG9jYWxTdG9yYWdlQXJlYXMpCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9lcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VBcmVhcy5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCBmMTNhMjJkY2JkMjFiNjc0MGU0NTIzN2Y0ZGZhZDgzMTI1NjcyOWUz
Li45N2RiMGI4MTNiYWY1Y2I1YTQ3ZDcyZWU1YTA2NTVlNjc1MDBlZDFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmgKQEAgLTM5LDEwICszOSwxMCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3Rh
SW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMp
OwogCiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAtNTYsMTAgKzU2
LDEwIEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1w
bChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKKyAg
ICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVw
aGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAg
IGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKaW5kZXggNDYyZGU4NmM0OTAwNGYxYWY2OTFlZDBiNjcxNjE4ZjAz
YTdmZmUyYy4uODI1NTdiNzI3MTRhZDg3MjY1N2VhZjg0OTY4NTIxYTcxMzYwMzllNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgc3Rh
dGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
czsKIH0KIAotUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQorUmVmPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHNsb3QgPSBzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoc2xvdCkKLSAgICAgICAgcmV0dXJuIHNsb3Q7CisgICAgICAgIHJl
dHVybiAqc2xvdDsKIAotICAgIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIoaWRlbnRpZmllcikpOwotICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuZ2V0KCk7CisgICAgYXV0byBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigq
bmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7CisgICAgc2xvdCA9
IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5wdHIoKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI7CiB9CkBAIC02NSwyMiArNjUsMjIgQEAgV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKICAgICBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEp
CiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYg
cGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFn
ZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVv
dGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKK1Jl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1f
aWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKaW5kZXggOGVhMjVlNmU3NTA5ZWIyYzE3YmQxZjk0ODRjMzczMWY2YzFl
YTc5NS4uM2NlNmRiOWYwNjhlODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTMxLDE2ICszMSwxNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2
NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNv
cmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGNmMzA4NWI4NDBmMDdmZDdkMDU5MjEzNTI1ZGQ0
N2RiZTFiZWI0NzEuLmZjNjU5ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCkBAIC0yMDIsOSArMjAyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjppbnZhbGlkYXRlKCkKIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRl
cmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFj
ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50
ZXJmYWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBj
b250ZXh0SWQpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CisgICAgYXV0byBt
b2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICBh
dXRvIGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgq
dGhpcywgY29udGV4dElkKTsKKyAgICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7
CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGlu
dGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA3ZjYzMzA5ZjMyYTBhODNhMzhkMGMy
ODgyNWU4MTczYjAyMjFmMTZlLi41ZDYxMTBiNzkwOWYzNGNjZTNlNzYyYmZkMzhkMmIyZjcyMWQ1
MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjppbnZhbGlkYXRlKCkKIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRl
KCp0aGlzLCBjb250ZXh0SWQpOworICAgIGF1dG8gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CiAgICAgbV9w
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5hZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAK
ICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpKTsKLSAgICBtb2RlbC0+YWRkQ2xp
ZW50KCppbnRlcmZhY2UpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsK
IAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50
ZXJmYWNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCAwMTgxNWMxM2FjMmExMDI5NjQwMzI3MzE3MjI2N2Uz
MjU2ZThjMmVjLi44NmRiMmQ4NzE4YTU0YjJmNmMyNjUzZjkzYzBhYWU5YjJiOWZkMDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAKQEAgLTkzLDMxICs5MywzMSBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VO
YW1lc3BhY2VJbXBsKCkKICAgICAgICAgY2xvc2UoKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIEFTU0VSVCht
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0g
U3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOworICAgIGF1dG8gbmV3TmFtZXNwYWNl
ID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3Bh
dGgsIG1fcXVvdGEpKTsKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQog
ICAgICAgICBuZXdOYW1lc3BhY2UtPm1fc3RvcmFnZUFyZWFNYXAuc2V0KGl0ZXIua2V5LCBpdGVy
LnZhbHVlLT5jb3B5KCkpOwogCiAgICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsK
IAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwogICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhOworICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwo
KTsKIAogICAgIHN0b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdl
VHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2VyLmdldCgpLCBtX3F1b3RhKTsKICAgICBtX3N0b3Jh
Z2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3JhZ2VBcmVhLmdldCgpKTsKLSAgICByZXR1cm4gc3Rv
cmFnZUFyZWE7CisgICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAK
IHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggMjdiOGY5YmFiM2Fk
MzM5NjY4NTQwZjQ4MGJmZDY1YTk2NjYxNjEzNy4uYzg4ZjA2MWVmNWU1MGM5YjE2MzVlYzNmOGQ2
YmEwZWQ3NzA1Y2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVz
cGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgog
ICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJp
bmcmIHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSog
bmV3UGFnZSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlk
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJl
ZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1h
cCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCBlZDdlYTNhYTM5
M2RhNTU5MzdhMWFkNDVhNDZkNjc3Yzg4NGFiZDllLi44MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3
NzgwMDQ5MWM5ZGExMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMzksOSArMzksOSBA
QCBzdGF0aWMgSGFzaFNldDxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVycygpCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7
CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIo
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogfQog
CiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKQEAgLTk2LDIyICs5Niwy
MiBAQCB2b2lkIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgp
CiAgICAgfQogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQg
cXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7
CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgs
IHF1b3RhKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFy
dGVyIGltcGxlbWVudGF0aW9uIHdvdWxkIGNyZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUg
aW5zdGVhZCBvZiBqdXN0IHBpZ2d5LWJhY2tpbmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAwZDIwN2QzNDMxOTJjNGZlN2I5
N2QwMzhkNTgxYjJjNGVjMDc3YWJiLi5lNTg5ZmVlN2E1YzZjOTFjZjk0YjdkMjNiNDg2MTQ4MTc5
YjhjZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdlKCk7CkBAIC00OSwxMCArNDksMTAgQEAg
Y2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWQKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwor
ICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5n
IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAppbmRleCBjNmI0MDg3MTA1MDA2
MTk5MDFiNTQwNjA1ZTA2NjdkMWE2MjEzYjlkLi42M2NhZTJkMGFkNTJjZDUxM2Q4NTMzMjAwYzNk
ZWVmY2MxN2M0YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwCkBAIC00MiwxOCArNDIsMjIgQEAgc3RhdGljIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8V2ViVmlld0dyb3VwPj4mIHdlYlZpZXdHcm91cHMoKQogICAgIHJldHVy
biB3ZWJWaWV3R3JvdXBzOwogfQogCi1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6
OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpCitSZWY8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiAKICAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJW
aWV3R3JvdXBzKCkuYWRkKG5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAo
IXdlYlZpZXdHcm91cCkKLSAgICAgICAgd2ViVmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZp
ZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICgh
d2ViVmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAt
Pm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoLmlzRW1wdHkoKSkKKyAgICBpZiAoIXdlYlZpZXdHcm91cCkgeworICAgICAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCkpOworICAgICAgICB3ZWJWaWV3R3JvdXAgPSByZXN1bHQuY29weVJlZigp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICghd2ViVmlld0dyb3Vw
LT5tX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCA9IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIAotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7
CisgICAgcmV0dXJuICp3ZWJWaWV3R3JvdXA7CiB9CiAKIFdlYlZpZXdHcm91cCogV2ViVmlld0dy
b3VwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKaW5kZXggZmUwNWNkNTQ4NjkwNWNkMjlmYjY4
ODRlN2E4N2ZiZGM5MzI3MmI1Zi4uNGQ0MTM3Y2UyYWFhYzNhMTQwZDU5YzYyYzM5NjMzNTJmMjU1
YjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZp
ZXdHcm91cC5oCkBAIC0zOCw3ICszOCw3IEBAIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViVmlld0dyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0dyb3VwPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIHN0
YXRpYyBSZWY8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICB+V2ViVmlld0dyb3Vw
KCk7CiAKICAgICBzdGF0aWMgV2ViVmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IGQwODQ5M2IwZjQyY2NkMzYyYWY0NDJjMDNl
NDk0NDhkODFkN2Y1ZDAuLjgwNDliMWNjYzI3MmMzNDcyNTk5ZTQ5NDJlNTAwNmNiODY4MTUxN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMjYsMTMgKzI2LDEzIEBACiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogU2VhcmNoUG9wdXBNZW51SU9TOjpTZWFyY2hQb3B1cE1lbnVJ
T1MoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQ
b3B1cE1lbnVJT1MoY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9wdXBN
ZW51SU9TKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUlPUzo6
cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4gbV9w
b3B1cC5wdHIoKTsKIH0KIAogdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypz
ZWFyY2hJdGVtcyovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA3MTZlZDU5YzQxNDcyMzk1
MmQ3MGRlYzUyZGJmOGVmNTk4NzlhZjRmLi4wZWY0NGI0MmE2NjBhZTM1MmM4YmVlNjk1NTBhYjJk
ZjBmOTUzNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFz
cyBTZWFyY2hQb3B1cE1lbnVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51IHsK
ICAgICBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9w
dXBNZW51SU9TPiBtX3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CiB9Owog
CiAjZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpp
bmRleCA0MjNjMDQ5MDBmNGYwZTZiOWE1ZTY4OWZjMTljODczNzQ0MmI1YjI5Li44NTkxMTc3YTlj
ZjJhZTkyNjBjN2EwY2ZhZjJmMzJhMTM2MWY2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1t
CkBAIC00MzMsOCArNDMzLDggQEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhEaWN0
YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6KE5TQXJyYXkgKiopYWx0ZXJuYXQKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKTsgaisrKQog
ICAgICAgICAgICAgICAgIFsoTlNNdXRhYmxlQXJyYXkgKikqYWx0ZXJuYXRpdmVzIGFkZE9iamVj
dDooTlNTdHJpbmcgKikobWFya2VyQWx0ZXJuYXRpdmVzW2pdKV07CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0
KHJhbmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00NjIsOCArNDYy
LDggQEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9y
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtYXJrZXJzW2ldOwogICAgICAgICBp
ZiAobWFya2VyLT5zdGFydE9mZnNldCgpIDw9IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgp
ID49IG9mZnNldCkgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tCmluZGV4IDk2YTY0OTZjMmM0NDYwOTkyYzVjMTJjMGRjZmU2N2YzNDBhNmMxYzgu
LmE1OTE5OGMzMzRlZTE0OThkOWYzNGI5YzA5NjI5M2RjMzZjYTVlZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tCkBAIC00NjUsMTMgKzQ2NSwxMyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VS
TDooTlNVUkwgKilVUkwKICAgICBpZiAoIVVSTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPEV2ZW50PiBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2
ZW50OjpJc0NvbXBvc2VkOjpZZXMsCisgICAgYXV0byBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90
b25pY1RpbWU6Om5vdygpLCBudWxscHRyLCAxLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIG51
bGxwdHIsIDAsIDAsIG51bGxwdHIsIE1vdXNlRXZlbnQ6OklzU2ltdWxhdGVkOjpZZXMpOwogCiAg
ICAgLy8gQ2FsbCB0byB0aGUgZnJhbWUgbG9hZGVyIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBvdXIg
c2VjdXJpdHkgY2hlY2tzIGFyZSBtYWRlLgogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW19kYXRh
U291cmNlIHdlYkZyYW1lXSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgeyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
LCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3csICBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwotICAgIGZy
YW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IGV2ZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVx
dWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5wdHIoKSwgbnVsbHB0cik7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IGY4N2U2MTUzMzcxMmY4
ZWVkNzBjZWViOWUzODYzNWUzYWE4ZjRhZDQuLjFiNmM4MjI4NTRhMDdmM2QwYzdhMDYwMTc2ZTRi
ODEwZTc4OTFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTQ3LDcgKzU0
Nyw3IEBAIC0gKHZvaWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1h
Z2UgYW5kUmVjdHM6KE5TQXJyYXkgKiopcmVjdHMKICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gcmFu
Z2VPZkNvbnRlbnRzKG5vZGUpOwogCiAgICAgY29uc3QgZmxvYXQgbWFyZ2luID0gNCAvIG5vZGUu
ZG9jdW1lbnQoKS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIFJlZlB0cjxUZXh0SW5k
aWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJh
bmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfAorICAgIGF1dG8gdGV4
dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dElu
ZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKICAgICAgICAgVGV4dEluZGljYXRvck9w
dGlvblJlc3BlY3RUZXh0Q29sb3IgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRC
YWNrZ3JvdW5kcyB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RB
bmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tCmluZGV4IDFmMzJkYzk0OThiYTQyMjFkMTI5MzkxYjg0NzlhYmEzMGE5
Nzk4OTQuLjc3NGQyMWE5ZmY4NGYwMWEzYzE2OWJhNjc5OTI1N2E0N2M5OWVmM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6
Omluc3RhbnRpYXRlUGx1Z2luCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2Vy
aWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpwcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpO
U1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsK
ICAgICBBU1NFUlQoZGF0YSk7CiAgICAgCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eT4gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0ZSho
b3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CisgICAgYXV0byBpbnN0YW5jZSA9IE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywg
ZnVsbEZyYW1lKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBpbnN0YW5jZS0+bmV4dFJlcXVl
c3RJRCgpOwogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBfV0tQSEluc3RhbnRpYXRlUGx1Z2luKGhv
c3RQcm94eS0+cG9ydCgpLCByZXF1ZXN0SUQsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb25zdF9j
YXN0PHZvaWQqPihbZGF0YSBieXRlc10pKSwgW2RhdGEgbGVuZ3RoXSwgaW5zdGFuY2UtPnBsdWdp
bklEKCkpOwogICAgIGlmIChrciA9PSBNQUNIX1NFTkRfSU5WQUxJRF9ERVNUKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggODgzYjkyMDcyMDdlMjQ4ZGQ0
N2EzMGJjMGM3NjIxZTcwNjhiN2MzMi4uYWJjYTZiYmUzMzA1MzVhOTgyZTY0MmQ0YzJhMTg4YTdi
OGE4YjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAt
NzE5LDggKzcxOSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0
ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgIC8vIERvbid0
IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMg
bm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAg
ICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhp
cywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVlc3QoKSk7
Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0pOworICAg
ICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhp
cywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVlc3QoKSk7
CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0uY29weVJl
ZigpKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC03OTksMTAgKzc5OSwx
MCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QoTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaAogICAgICAgICBtX3BsdWdpblJlcXVlc3RzLmFw
cGVuZChXVEZNb3ZlKHBsdWdpblJlcXVlc3QpKTsKICAgICAgICAgbV9yZXF1ZXN0VGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gSG9z
dGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3Qp
OwogCiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwotICAg
ICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtKTsKKyAgICAgICAgbV9zdHJlYW1z
LmFkZChyZXF1ZXN0SUQsIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0tPnN0YXJ0
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5YTc0NWQ5MzgzZjc0NDdmNTQy
ZGY1MDQ1ZTI0NDViMzg1M2UwODgwLi4xZDFlOGFlZjY3NTIzNjFmM2VjYzA0NjUwNWQ0NjU3YzI1
NDZiNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgLSAodm9pZCll
dmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVn
aW5SZXF1ZXN0CiAgICAgICAgIC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIg
c3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMg
aXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAg
ICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVn
aW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qg
bm90aWZ5RGF0YV0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVnaW4sIFtK
U1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qgbm90aWZ5
RGF0YV0pOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTE2NzgsOSArMTY3
OCw5IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1
ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IobG9hZFBsdWdpblJlcXVlc3Q6KSB3aXRoT2JqZWN0OnBsdWdpblJlcXVl
c3QgYWZ0ZXJEZWxheTowXTsKICAgICAgICAgW3BsdWdpblJlcXVlc3QgcmVsZWFzZV07CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0g
PSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5v
dGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24s
IG5vdGlmeURhdGEpOwogCi0gICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5nZXQoKSk7CisgICAg
ICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0tPnN0YXJ0
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCA5NmVmOTIx
ZmQ2MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiLi4yMzQ3ODFiMGJlODZhNGJkYTUwYzBj
ZTU2NDg0MjIzODhiNDJiZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtMjA3
LDggKzIwNyw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDo6aW1h
Z2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lVmlldy0+ZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0
Rm9jdXMpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCks
IFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRp
b24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIGZyYW1lVmll
dy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5n
ZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3I6OlNl
bGVjdGlvbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBlYzhlNThjZjIw
N2JiY2IwNDgyMmVkMmIxNWRlYWQwNjc2MmE1NjdkLi44NDYwYjAzZjUwYzdjMmIxM2ExN2VmZTRj
ODM4ZmI3YjkyMTkwZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTQ2NSw3
ICsxNDY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIGNvcmVGcmFtZS0+dmlldygp
KQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAg
ICAgY29yZUZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwotICAgIFJlZlB0cjxGcmFtZVZpZXc+IGNv
cmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CisgICAgYXV0byBjb3JlVmll
dyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwogICAgIGNvcmVGcmFtZS0+c2V0Vmll
dyhjb3JlVmlldy5jb3B5UmVmKCkpOwogCiAgICAgW21fd2ViRnJhbWUuZ2V0KCkgX3VwZGF0ZUJh
Y2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2I5YmI4OTkwOGFlNWMxYTY1MmUzNmNjODg5
YmUwNGU1NjU0Yzk0Ni4uMDRiYWM0NWI5N2Y1M2FhZmU3NGI4YThjMTgzZDZiMWUzNDc1YjBiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNzQ2
LDcgKzE3NDYsNyBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNBcnJheSAq
KilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAgICAgaWYgKCFt
ZXRhZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2Rl
LCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAg
ICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICAg
ICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLmdldCgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDljM2MyYmI5
OWNjMGM2Y2QzMDUzNzk4ZGRiNjY0NGM5ZTdkYjgxNDIuLjRhODZjNzk0NTVmYjM2ZDBjNWJlYmZi
MzkwY2U4NDYzZmViMjQyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgLSAodm9pZClfd3JpdGVTZWxl
Y3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihO
U1Bhc3QKIHsKICAgICAvLyBQdXQgSFRNTCBvbiB0aGUgcGFzdGVib2FyZC4KICAgICBpZiAoW3R5
cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewotICAgICAgICBpZiAo
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9mcmFtZV0pKSkgeworICAgICAgICBpZiAo
YXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
Y29yZShbc2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhID0gY29yZUFyY2hpdmUgPyBjb3JlQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCkgOiAwKQogICAgICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdl
IE5TRGF0YSAqKWRhdGEuZ2V0KCkgZm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
ZWI5NTc1MjgyYzFiNjUzZGNiYzlhYTZhNDdlZDcwYzA1ZTdkNWVmLi40ZjkwZjYzOTM5NzQxMjY5
NzY4ZDYzMDM2Y2IwZDNiMGQzMGM5MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC00NzI5LDggKzQ3MjksNiBAQCArICh2b2lkKV9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICop
d29ybAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXAp
Ci0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKQEAg
LTQ3NTQsOCArNDc1Miw2IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNT
dHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91
cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA1YzA3NzEyMTFlYWVk
NjQ5MDczZTEwM2U5MDRhNWVjOTA0OWI0NjNmLi5iYzc5ZDg5YmQ0NDZjNTZlYTFiYTlkNTdjNzVh
ZTM5OWFhOGYwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgUGx1Z2luRGF0YWJh
c2U6OnJlZnJlc2goKQogICAgICAgICAgICAgcmVtb3ZlKG9sZFBhY2thZ2UuZ2V0KCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5Q
YWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKKyAgICAgICAgYXV0byBw
YWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7
CiAgICAgICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNrYWdlLnJlbGVhc2VOb25OdWxsKCkpKQog
ICAgICAgICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZjg1NWRkMjYzZjc5
Y2RmZDQxYjY0NjU5NTAyMmE4YzQ0Y2NhMmY0NS4uZDNlMzM5Zjc1OTQ4YTNlM2UxZDkyOWRlZTc2
ZDhjMmVkNDZkZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
UmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAvLyBpZiB0aGlzIGlzIG5v
dCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwK
ICAgICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0aGUgbG9hZGVyCiAgICAgICAgIGlmICh0
YXJnZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luU3Ry
ZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdl
dCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVl
c3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+
cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAgICAg
ICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFt
ZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCBy
ZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2lu
KCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7CiAgICAg
ICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7CiAgICAgICAgICAgICBzdHJlYW0tPnN0YXJ0
KCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAgICAgICAg
IGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRy
PFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJl
bnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwg
cGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7
CisgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJl
bnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwg
cGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7
CiAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtLT5zZW5kSmF2
YVNjcmlwdFN0cmVhbShyZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9CkBAIC02OTAsNyArNjkwLDcg
QEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBQbHVnaW5WaWV3OjpiaW5kaW5nSW5z
dGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8gcm9vdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgp
LmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0gICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3Rh
bmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwg
V1RGTW92ZShyb290KSk7CisgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0
YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CiAKICAgICBfTlBOX1JlbGVhc2VP
YmplY3Qob2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE5M2Uw
MmIwNTAxOGVmNThmZTQxNmZjYmZiNjc1ZWRlM2ZjNTg5NmMuLjAzNTlkOTAxYWNjY2Q5MTI0Njkx
MWNlOTFmYzIzY2UxYjBiYTI0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTExNTgsNyArMTE1OCw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNCiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUp
OwotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRl
KGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2lu
Vmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVz
LCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiAKICAgICBpZiAocGx1Z2lu
Vmlldy0+c3RhdHVzKCkgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAg
ICByZXR1cm4gcGx1Z2luVmlldzsKQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYgcGx1Z2luV2lkZ2V0KQog
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFVSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVn
aW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVS
TCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQi
LCBmYWxzZSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUo
bV93ZWJGcmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOwogCiAgICAgLy8g
Q2hlY2sgaWYgdGhlIHBsdWdpbiBjYW4gYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseQogICAgIGlmIChw
bHVnaW5WaWV3LT5wbHVnaW4oKSAmJiBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bG9hZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZiNjJkOGZjNjM1ZDlh
MGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZiZjgyMWNhZWYwYWI4
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2NCw3ICs1NjQsNyBA
QCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCog
cmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5n
TGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3ICs2MTAsNyBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJT
VFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0
U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xl
bihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVvZihVQ2hhcikgKiBT
eXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBwbGFpblRleHRNaW1lVHlwZShU
RVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgi
dXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgcGxhaW5U
ZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0cik7CkBAIC02MTksNyArNjE5
LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxh
aW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyhf
SW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNo
YWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6
ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1s
U3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CiAgICAg
QlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShX
VEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VVUkwsIHVucmVhY2hh
YmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDFiYWRkMDFjM2E3
NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlkZjZiOTBkMGEyNzdkNzliMWJi
NTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMTk5LDcg
KzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1D
QjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5f
IEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBC
U1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05h
bWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQg
c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdl
U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBt
YXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZv
aWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
Vmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2ODZlMDRjNGRlMC4u
ZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgbWVz
c2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENBVmlldzo6Y3JlYXRl
KERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+IENBVmlldzo6Y3Jl
YXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENB
VmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6c2V0Q29udGV4dERpZENoYW5n
ZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uLCB2b2lk
KiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRlYzAxNTJlNTFkNDI0ZjQyZTMz
OWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3MGM2MmM1ZjQ4OTA3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENBVmlldyA6
IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0NsaWVudCB7
CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVmUHRyPENBVmlldz4gY3JlYXRl
KERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxDQVZpZXc+IGNyZWF0ZShEcmF3
aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkNv
bnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lkKiBpbmZvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4MjRjZTQ0ODNjN2Rk
OWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVkN2U2NWFkODMwODU0MTYxOWNk
NDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApAQCAtNDQs
OSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAgICAgOjpDbG9zZUhh
bmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlzcGxheUxpbms+IENWRGlzcGxh
eUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCitSZWY8Q1ZEaXNwbGF5
TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxpbmsoY2xpZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsKIH0KIAogdm9pZCBD
VkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCmlu
ZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMuLmNhMDI2YWZlYWM0
MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlzcGxheUxpbmtDbGllbnQ7CiAv
LyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlMaW5rUmVmCiBjbGFz
cyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENWRGlzcGxheUxp
bms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlzcGxheUxpbms+IGNyZWF0ZShD
VkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxDVkRpc3BsYXlMaW5rPiBjcmVh
dGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3BsYXlMaW5rKCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKaW5k
ZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4uY2Y5MjE4NWExMGRi
OTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1h
Z2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBnZXRJbWFn
ZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2UsIFJlZlB0cjxJbWFn
ZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5IZWlnaHQpOwogCi0g
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOworICAg
IGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVlYjcuLmZiYzA0ZGU2
NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJT
Y3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3Jv
dXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0g
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3Jp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdH
cm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkK
LSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357553</attachid>
            <date>2018-12-18 01:31:38 -0800</date>
            <delta_ts>2018-12-18 01:37:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218183136.patch</filename>
            <type>text/plain</type>
            <size>389532</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uYjM0YzkxYmUzMjIyNTU4ZTBlMzY5NTJjOThhY2UzYTYwZjhkY2Ux
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4OCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
c2NoZWR1bGVPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06
OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMU3RhdGVtZW50OjpleGVjdXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
OjpyZXF1ZXN0QWRhcHRlciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
QWRhcHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVBZGFwdGVyOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFu
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHA6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nl
c3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlv
bk9mZnNldHNGb3JPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVl
VGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNj
b3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6
cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVT
Y3JpcHRJbnN0YW5jZUZvcldpZGdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaDoKKyAgICAgICAg
KiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpj
cmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAg
ICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5p
Y29kZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0
dGluZ3MgY29uc3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5
bGVTaGVldENvbnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFk
anVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0
ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAg
ICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0
eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3du
ZXI6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAg
ICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2Vz
dHVyZVRva2VuOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1Vu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRl
ckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5
QmxvY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERv
d25JbmxpbmVTdHlsZUFyb3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRh
cmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVT
ZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5n
Q2hhcmFjdGVySXRlcmF0b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dp
dGhTdHlsZU9mTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0
c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5k
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29t
cG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToK
KyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0
Q29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21t
YW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6aGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAg
ICAgICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6Cisg
ICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6
CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9u
cyk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBl
ZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNo
YW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAg
ICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRj
aGVkUnVsZXNBbmRJbmxpbmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50
Rm9yVHJhbnNmb3JtVG9GcmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZU1lZGlhQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5
bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
VVJMVXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3Qp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmlu
ZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhczo6YnVpbGRBY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRh
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZy
b21JREJLZXlQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUp
OgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJh
bWVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50
RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0Fy
Y2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERp
c3RhbmNlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0
aW9ucyk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxl
dmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5j
UmVzYW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9GaWxlUmVhZGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZFRleHRUcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRU
cmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFz
QXNzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNv
bnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBs
YXllck9mVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5r
TmV3U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3Rl
Y3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SVNPVHJhY2tFbmNyeXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwbHlGaWx0ZXJBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVy
YXRpb25zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0
RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9u
Qm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4
dFRyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNr
UHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVXaW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3Jp
dGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVt
ZW50OjpidWlsZCk6CisgICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAg
ICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nv
cjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpw
YXJzZURvY3VtZW50RnJhZ21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGls
YXRpb24gd2FybmluZ3MgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTE5NmFlODU1YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJj
YWRiNDg0ZTI3YWM5OTg0YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYg
QEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9y
Zz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NuYXBzaG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5
UG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRp
ZmljYXRlX2Zvcl9ob3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6Y3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlN
YXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRl
U3ViZnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9u
dGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJ
bnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2Ug
aW5pdFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hv
dCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFw
c2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRl
ZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSk6CisKIDIwMTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bCBhcmUgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRj
OTc3NWYxOGNhNGI4NzZiMzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5
YjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVz
ZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChX
ZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJW
aWV3R3JvdXAuaDoKKwogMjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQu
aCB3YXJuaW5nOiAnSVdlYkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVz
IG92ZXJsb2FkZWQgdmlydHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4
MzgxYjY0NGFjMi4uZDJjNjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNl
IFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cDoKKyAgICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAg
ICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNs
b3NpbmdSYW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgt
W1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9y
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAg
ICgtW1dlYlBERlZpZXdQbGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisK
IDIwMTgtMTItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQz
ODljMzFlN2M3MDY3ZmZlNDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAw
NzZiOGM5YzU0NDRkYzBjMDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1t
OgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0p
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRl
UGx1Z2luKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUph
dmFTY3JpcHRQbHVnaW5SZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZp
ZXcgbG9hZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vydmlj
ZVBpY2tlckl0ZW0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIGdldERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3dyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0
cmlidXRlZFN0cmluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVs
aXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAo
K1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0
ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNl
dFBhcmVudCBzaG91bGQgYWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThi
MmMwM2YuLmQ2MTBlZGFlOWFjYTEwN2E0NjgzNWE3ZTgyZDE3YWM5YmFmZTkyNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8
PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9h
ZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgor
ICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQVZpZXcuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAgICAg
KiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZE
aXNwbGF5TGluazo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0NWRGlzcGxheUxpbmsuaDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0lt
YWdlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3Vw
KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIwMTgt
MTItMTIgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgW1dpbl1bQ2xhbmddW1dlYktpdExlZ2FjeV0gd2FybmluZzogZXhwZWN0ZWQgYSBxdWFsaWZp
ZWQgbmFtZSBhZnRlciAndHlwZW5hbWUnIG9mIENPTUVudW1WYXJpYW50IGFuZCBDT01Qcm9wZXJ0
eUJhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDRh
ZGM3NjllNmU2YTY5MDE4NDkwMDQyYTMzMjExMGNlY2FkOGYzYTguLjRhOTVmY2Q5NWIzOTA3N2Ux
YzYxMDJhNDdlYmE0NTdhMGI2NzNhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNUeXBlZEFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VHlwZWRBcnJheS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VUeXBlZEFycmF5V2l0aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJh
eQogCiAgICAgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFy
cmF5VHlwZShhcnJheVR5cGUpKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkg
eworICAgIFJlZjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21C
eXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3Rv
cikKICAgICAgICAgICAgIGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwCmluZGV4IDE3M2QwM2U1Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBk
Nzk0MmFhZjc5YWQyYTY3Zjk2ZDcyNDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgdm9pZCBBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAg
IFdhdGNocG9pbnQqIHdhdGNocG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9j
ayk7CiAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBv
aW50ID0KICAgICAgICAgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0p
OwotICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAg
bmV1dGVyaW5nV2F0Y2hwb2ludC0+c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9j
ay0+YWRkQ29uc3RhbnQobmV1dGVyaW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRv
bid0IG5lZWQgdG8gc2V0IHRoaXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJz
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNmIwZjMxOTM4ODY0OGNkMjk1YjZm
MTFjNTczYWI3Mzg0NDIxOTc4Ny4uMGIzNGY0NmNlMjYxOGQ3MmE0NmE5ZWI4YmQ3MmZkMmE2NWRi
M2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBA
QCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVu
R0NMZW5ndGgoMC4wMSkKICAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNh
bGxiYWNrOjp0cnlDcmVhdGVGdWxsVGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNh
bGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAg
ICwgbV9zd2VlcGVyKGFkb3B0UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAg
ICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKKyAgICAsIG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBl
cih0aGlzKSkpCisgICAgLCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3Rv
cElmTmVjZXNzYXJ5VGltZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVT
RShGT1VOREFUSU9OKQogICAgICwgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBA
IC0yMzM5LDcgKzIzMzksNyBAQCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCkKIAogSW5jcmVtZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAg
ICByZXR1cm4gKm1fc3dlZXBlcjsKKyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2
b2lkIEhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGM4YWVkNGEzNmE1ODgyMDFmMTUyN2U1ZWFh
ZmExNDUzMjk1YzAwMTkuLjlkYTRhYTNhYmQxYzJlNzJlYTg5NTk3YzNiZWY5ZDg4ZGQ1ZGM2ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBI
ZWFwIHsKICAgICAKICAgICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0
aXZpdHlDYWxsYmFjazsKICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rp
dml0eUNhbGxiYWNrOwotICAgIFJlZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsK
LSAgICBSZWZQdHI8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7
CisgICAgUmVmPEluY3JlbWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZO
ZWNlc3NhcnlUaW1lcj4gbV9zdG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFw
T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKaW5kZXggNjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEy
Y2M0ZS4uYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNv
Q2VsbFNldDo6fklzb0NlbGxTZXQoKQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29D
ZWxsU2V0Pjo6cmVtb3ZlKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpI
YW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2Uo
KQorUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBh
cmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1
YmxpYyBTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBA
IC03OCw3ICs3OCw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9k
b25lIHsgZmFsc2UgfTsKICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFz
aygqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAog
TkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxT
ZXQ6OmFkZFNsb3coc2l6ZV90IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmgKaW5kZXggMTZjOWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNl
Ny4uZGFkYTY3MmM0OTFkYzAzODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29D
ZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAK
ICAgICBib29sIGNvbnRhaW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4g
cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRv
IGEgY29tYmluZWQgc2VhcmNoIG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRD
ZWxsIHVzZXMgYW5kCiAgICAgLy8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3
IEBAIGNsYXNzIElzb0NlbGxTZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2Vs
bFNldD4gewogICAgIHZvaWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAg
IFJlZjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbChjb25zdCBGdW5jJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ICAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4
NjkxNGU0YzNmYjAyNjMxZjAyMmQ5Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1
ZWQzNGE2Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJ
bmxpbmVzLmgKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2Vk
Q2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVm
UHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwo
Y29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPiB7CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAg
UmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFj
aE1hcmtlZENlbGxJblBhcmFsbGVsKGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAg
SXNvQ2VsbFNldCYgbV9zZXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJr
ZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7
CiAgICAgICAgIExvY2sgbV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUYXNrKCp0aGlzLCBmdW5jKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygq
dGhpcywgZnVuYykpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4
NzIxMzMxMGFmYjhiMzEuLmUxNGEzNzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0
b3J5KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRU
YXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNl
KCkKIHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3Rvcnkq
KCk+IHsKICAgICBwdWJsaWM6CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CiAgICAgICAgIExvY2sgbV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUYXNrKG1fZmlyc3REaXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKG1fZmlyc3REaXJlY3RvcnkpKTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxv
Y2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3Vy
Y2UoKQorUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQ
YXJhbGxlbFNvdXJjZUFkYXB0ZXI8QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxl
Kj4oCiAgICAgICAgIHBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuaAppbmRleCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5
YTVmNGIxLi44M2VmNGQ3NDlmYmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vi
c3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGly
ZWN0b3J5KGNvbnN0IEZ1bmMmKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0Rp
cmVjdG9yeSooKT4+IHBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRh
c2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2so
Y29uc3QgRnVuYyYpOwpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2Nr
KGNvbnN0IEZ1bmMmKTsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2Nr
U291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxv
Y2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxv
Y2F0aW9uKGNvbnN0IEZ1bmMmKTsKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2Ugewog
ICAgIHZvaWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRv
ciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxs
ZWwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lk
IGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlSW5saW5lcy5oCmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4
NjA5NzQwYTYyNjMuLjE2NzEyN2ZmNDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3
ICs4NCw3IEBAIHZvaWQgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1
bmMpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNv
bnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJz
cGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewog
ICAgIHB1YmxpYzoKQEAgLTEyMSwxMyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
U2xvdFZpc2l0b3ImKT4+IFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29u
CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9j
a1NvdXJjZTsKKyAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IG1fYmxvY2tTb3VyY2U7CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9j
azsKICAgICAgICAgYm9vbCBtX25lZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjY0NDA3MWQzZjk3
YzZkZDZhNmE2NDAxNGQxNWYxZTQyZGE3NDA4Yy4uMGI5OTYxYjhhYzM5ZjNlZDAyZGYyOGZlODQ2
ZTJkMmM4OThkNWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVC
cm9hZGNhc3QoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJl
bnQoKS5kZXF1ZXVlKCk7CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0
aXZlQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMo
KSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKG1lc3NhZ2UtPnJlbGVhc2VDb250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJy
YXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RG
TW92ZShuYXRpdmVCdWZmZXIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCA0ZTVlZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhk
NWUxOTk5NzFmLi44OTViMjliNmM5ZTE1MjM1ZDM0NWQ5NDI4YTM1MzkzYTNjOGE4NzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODks
MjAgKzI4OSwyMCBAQCB1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5k
ZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgp
OwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVn
aW4sIGRvdWJsZSBlbmQpIGNvbnN0CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGlj
ZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1w
bChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJl
ZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwg
dW5zaWduZWQgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJ
bXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
c2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IHJlc3VsdCA9IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiByZXN1bHQg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsg
YmVnaW4sIHNpemUpOwogICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCmluZGV4IGY2OTljOTQ1YWU0MDRlMmUwYmJkN2NmYmM1ZTk0OWQyODNlYThi
ZGQuLjMwZmJhNmE2YTA4NDZhMTcyYjM5ZjE2N2NhMmU0NGMwMDFiZjI1ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI4LDggKzEyOCw4IEBA
IGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVm
ZmVyPiB7CiAKICAgICBpbmxpbmUgc2l6ZV90IGdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0
OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3Vi
bGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkg
Y29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3Vi
bGUgYmVnaW4pIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGlu
ZSB2b2lkIHVucGluKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBw
dWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0
IHZvaWQqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5
QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBs
KHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIGlu
bGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CiAgICAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNp
Z25lZCByaWdodCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGQxYTZj
MmI5NmNhNWE4ZmY3ZjdhMzE0ZTYwMmExYWNhODI1NGMxMjguLjY0ZmZmNGE4N2IwNWMzOThjODgx
MWU4ZGI2YzVkM2Q2NmExMDA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcApA
QCAtMzcsNyArMzcsNyBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50OjpzX2luZm8gPSB7CiAKIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLmFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0
KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQorICAgICwgbV9zZXQoYWRv
cHRSZWYoKm5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogewogfQogCkBAIC02Miw3ICs2
Miw3IEBAIFN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtKQogCiB2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6
ZmlyZUFsbCgpCiB7Ci0gICAgc2V0KCktPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2Fz
IG5ldXRlcmVkIik7CisgICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2Fz
IG5ldXRlcmVkIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaAppbmRleCA5YTZmNzFhOTY4Y2MxOTQ2YTBkNzkzNjExZTA1MmJkNmViYmUwMWE3Li5l
NWQ2ZDA5NzRhNThlYmIwYjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaApAQCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQq
IHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkg
eyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGZpcmVBbGwoKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsK
ICAgICAKLSAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7CisgICAgUmVmPFdhdGNocG9p
bnRTZXQ+IG1fc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmlu
ZGV4IDZjMGI5NzEwNWI3ZTc3MTk2OTdiNTQyMWEyNjM2ZjFhNGFmMmUwN2UuLjc5MThiNjJiMDcy
MmFjYmVmN2FhNzI5YzQwYjQ3NjkzMWMwZGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC01Niw5
ICs1Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVy
UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBlbmQg
PSB0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5ld0J1ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVu
ZCk7Ci0gICAgaWYgKCFuZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgUmVmPEFycmF5QnVmZmVy
PiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAg
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT5h
cnJheUJ1ZmZlclN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JF
TUUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JF
TUUuY3BwCmluZGV4IGFmOGZmNWEwYTgwY2U4YmFhYWQwN2ExZDViY2E2MTQwY2VlMDMwZTEuLjIz
OGVlNjdjMzgyODQxOWIzM2YxNDllMmI0M2I2MjY1ZTg3NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFj
Y2VzcyhOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIDYuMi4gTGV0IGltcGxlbWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBr
ZXlTeXN0ZW0uCi0gICAgICAgIFJlZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVh
dGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24gPSBD
RE06OmNyZWF0ZShkb2N1bWVudCwga2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVk
Q29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAwN2E0Y2RkZDFkNGIzY2Y0
MzM5ZjJiMGM5ODdhM2UxZDI3MWFmMmYwLi4yY2UzYzhhMGY4NzM5OTQxOWI5ZjA4Y2IzZmU0YmNi
MmQ3NzgwZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
CkBAIC0yMzQsMTQgKzIzNCwxNCBAQCB2b2lkIEZldGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgp
CiAgICAgbV9jb25zdW1lci5sb2FkaW5nU3VjY2VlZGVkKCk7CiB9CiAKLVJlZlB0cjxGb3JtRGF0
YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBjb25zdAorUmVmPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKQog
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxT
ZWFyY2hQYXJhbXMoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYm9k
eSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihibG9iQm9k
eSgpLnVybCgpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQpAQCAtMjUxLDE1ICsyNTEs
MTMgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpj
cmVhdGUoYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxG
b3JtRGF0YT4gYm9keSA9IGNvbnN0X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOwor
ICAgICAgICBSZWY8Rm9ybURhdGE+IGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEm
Pihmb3JtRGF0YUJvZHkoKSkpOwogICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9Ci0gICAg
aWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1E
YXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZGF0YSA9IG1fY29u
c3VtZXIuZGF0YSgpOworICAgIEFTU0VSVChkYXRhKTsKKyAgICByZXR1cm4gRm9ybURhdGE6OmNy
ZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiB9CiAKIEZldGNoQm9keTo6VGFrZW5E
YXRhIEZldGNoQm9keTo6dGFrZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaAppbmRleCBkYWFkN2M0MmM0Nzc5YjFhNDA2OTVkMGYxNTBkN2Y5ZjRiOTk2YzUyLi5iN2Iy
MjAxNWNkYzAyNjNiZWI0MzBmNDliOTgzNTkyNjVmNDYwZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRmV0Y2hCb2R5
IHsKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQo
KTsKIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIGNvbnN0OworICAgIFJlZjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdXNpbmcgVGFrZW5EYXRhID0gVmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAg
IFRha2VuRGF0YSB0YWtlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IDlkMjUwNjc1ZmRlN2MyZWMxZmI2MzFhOTFmZWVh
N2NjNDM4YzVhOWIuLjU4YTcyYjEyMWNlMWY5MzUzOTY3YWIyYTNkNGJiN2Q3NzlkZjhkMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24u
Y3BwCkBAIC0zMDQsMTAgKzMwNCwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9z
aXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZQogICAgIGlm
ICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBu
b3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3Rh
cnRSZXF1ZXN0KG5vdGlmaWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZp
ZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIu
cHRyKCkpOwogCi0gICAgbV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworICAgIG1fb25lU2hvdHMu
YWRkKFdURk1vdmUobm90aWZpZXIpKTsKIH0KIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0
aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMmJiBvcHRp
b25zKQpAQCAtMzE1LDE0ICszMTUsMTQgQEAgaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9u
KFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFAKICAgICBp
ZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVy
PiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0Nh
bGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAg
c3RhcnRSZXF1ZXN0KG5vdGlmaWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90
aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVy
cm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZp
ZXIucHRyKCkpOwogCiAgICAgaW50IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRo
ZSBuZXh0IGlkIHVudGlsIHdlJ3JlIGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2
ZS4KICAgICBkbyB7CiAgICAgICAgIHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmNpcmN1bGFyU2VxdWVudGlhbElEKCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdh
dGNoSUQsIFdURk1vdmUobm90aWZpZXIpKSk7CisgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRk
KHdhdGNoSUQsIG5vdGlmaWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
aW5kZXggMjU4ZDg5YTVhZGFiY2E1ODhhMTlhNDhkOTc4ZjZlZTIyMWY4ZGU3ZS4uZDA5YTA1MTk2
NGU2OTE1YWMxMWRmYTcxNjY3M2IwODEzMDAxZmYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIFJl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1l
cygpKQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQobmFtZSk7CiAgICAgb2JqZWN0
U3RvcmVOYW1lcy0+c29ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDdkYzVlMGY3OTljMGE2Mjg2MjAzMmVmZDFl
ZmNiYWFkOGFkNjRlOTQuLmY5ODQ3Mzc1OTY4MWI3N2I3OTMxNzAwYjc2NGZiZWEyYjNhMGZmMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2Jq
ZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmbV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0
ZSgpOworICAgIGF1dG8gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFtX2RlbGV0ZWQpIHsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLmlu
ZGV4TmFtZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4
ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgyNWU0YThmMjNjODk1OWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0
KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0
KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQordm9pZCBJREJUcmFu
c2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJhdGlv
bk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCgmbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1
dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ1Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CisgICAgbV9wZW5kaW5n
VHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAg
ICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShvcGVy
YXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCBl
Y2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMxMTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdh
YmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJ
REJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFuc2FjdGlv
bj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNoQWJvcnRPckNvbW1pdCgpOwogICAgIHZv
aWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYpOwogCi0gICAgdm9p
ZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQw
YjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9U
cmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAgKzE4MSwzNyBAQCBjbGFzcyBUcmFuc2Fj
dGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMgVHJhbnNhY3Rpb25PcGVyYXRpb24gewog
ICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3Jl
YXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERh
dGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3Bl
cmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJS
ZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAg
YXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNh
Y3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRS
ZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAy
LCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNh
Y3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAg
dm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1Q
MSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1l
dGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwg
cGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2Fj
dGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJS
ZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApAQCAtMjIyLDI0ICsyMTksMjIgQEAgUmVm
UHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAg
ICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAg
ICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIs
IE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1Q
Mz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIy
LCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+
Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9u
KAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigK
ICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVz
dCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29u
c3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSko
VHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQog
ewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+
KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rp
b25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9u
T3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJU
cmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYp
LApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBj
b25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2Fj
dGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0s
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0
JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVl
c3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0yNjEsOCArMjU1LDcgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4o
dHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIs
IE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIx
LCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFjNjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNh
YTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4
ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNv
bnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYmCiAgICAgICAgIHZpZGVvQ29uc3RyYWlu
dHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVz
ZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpU
eXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9D
b25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAg
ICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVy
bjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYURldmljZXM6
OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIGF1dG8gcmVx
dWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1S
ZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwgY3JlYXRlTWVkaWFDb25zdHJhaW50cyhj
b25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3Qp
Ci0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5
ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJiNzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcw
OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxV
c2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJyZWQ8SURM
SW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQogewotICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNl
ck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNl
KSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVm
MS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVzZXJNZWRp
YVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1
ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURl
ZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIHN0YXRpYyBSZWY8VXNl
ck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERP
TVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0
dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAwZmYwZTIwNDM4
MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRk
Mzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1
bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVmFsdWVzLCBi
bwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9n
ZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlvbikuCiAgICAgLy8gTm90ZSB0aGF0IGNv
bm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8sIGJ1dCB3ZSBtaXggZG93biB0byBtb25v
IGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CisgICAgYXV0byBzdW1taW5nQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOwogICAgIHN1bW1p
bmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7CiAKICAg
ICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5nT3V0cHV0cykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
aW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIwZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2Qy
ZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4
ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8g
Q3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgc2lkZXMu
CiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4g
dGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyID0g
bV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKLSAgICAgICAgUmVm
UHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6
ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gaW5wdXRCdWZmZXIgPSBtX251bWJl
ck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hh
bm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRvIG91dHB1
dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUo
bV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsK
IAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOwogICAgICAgICBt
X291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKaW5kZXggMDkxYTMwYTI2
ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4uN2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlk
ZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3Rh
dGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAgICAgfQogICAgIH0KIAotICAgIFJl
ZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7Cisg
ICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6OmNyZWF0ZSgpOwogCiAgICAgLy8gU3Rl
cCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1lcy4KICAgICByZXN1bHQgPSBzdGF0ZW1l
bnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRl
KERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAg
ICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRhYmFzZS5sYXN0Q2hhbmdlcygpKTsKIAot
ICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAgIG1fcmVzdWx0U2V0ID0gV1RGTW92ZShy
ZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEyMWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBk
ODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDEwICs0MCw3IEBAIFJl
ZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVQWRhcHRlclBy
b21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBhdXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFw
dGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYgKCFhZGFwdGVyKQotICAgICAgICBkZWZl
cnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJlc29sdmUoKmFkYXB0ZXIpOworICAgIGRl
ZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
aW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIyMzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFl
NGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVy
OjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8
V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8vIEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRl
c2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0
b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3Ip
KTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEzYjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0
NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQWRh
cHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVz
Y3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdl
YkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVh
dGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNiNDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4u
OTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQyMGY0MDg2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVm
ZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBX
ZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdl
YkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0
MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4
NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJ1ZmZlcj4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4m
Jik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYm
KTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFh
ZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJlNTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdl
YkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1h
bmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtNjUsOCArNjUsOSBA
QCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJl
Z2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAgICBncHVSZW5kZXJQYXNzRGVzY3JpcHRv
ci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0
YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJl
bmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdw
dVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpIDog
bnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNy
ZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0
b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoKnRo
aXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRleCA3MmRmMzEyZmY4ODBiNzhmN2VjYTEx
NjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2Jl
OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+
JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIy
YzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1
MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWZQdHI8V2Vi
R1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6
IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KLSAgICBy
ZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIp
LCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBkZXZp
Y2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhNRTogVGFrZSBhZGFwdGVyIGludG8gYWNj
b3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKQEAg
LTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRh
cHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZQogUmVmUHRyPFdlYkdQVUJ1
ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciYm
IGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3Jp
cHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQ
VUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7
Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNy
ZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5zaXplLCBkZXNjcmlw
dG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0gICAgYXV0byBtb2R1bGUgPSBtX2Rldmlj
ZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlw
dG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3Jl
YXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gbW9k
dWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9k
dWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4g
dmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShjb25zdCBXZWJHUFVQaXBlbGluZVN0YWdl
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BV
UmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBp
cGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFn
ZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9
KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBp
cGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBwaXBlbGlu
ZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBk
ZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3RhdGUgfSkpCisg
ICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKIHsK
LSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigp
OwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRl
KGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRv
IGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpKQorICAgICAg
ICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1
ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKaW5kZXggMWExYzUy
Y2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgxYS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3
MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApAQCAtMzUsOSArMzUsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikK
K1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNy
ZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5j
b2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2Rl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMx
ZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBXZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4g
Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29k
ZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJndW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1
bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1
bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5zaWduZWQgaW50Pj8KICAgICB2b2lkIHNl
dFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+
PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2
YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2
NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBp
cGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQorUmVmPFdl
YkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVS
ZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKIH0KIAog
V2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRlclBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQ
aXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUx
ZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2NiMGVkNzViZGViNzRjYTZhMGRhMTNjYzhm
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVs
aW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKIAog
ICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVyUGlwZWxpbmUoKSB7IHJldHVybiBtX3Jl
bmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2
YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVjYTBhOThiYzVmNmQzNjRkOTM2MDlkZjlj
ZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNy
ZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1
bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9k
dWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1v
dmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNoYWRlck1vZHVs
ZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFk
ZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmluZGV4IDQyMDI5OTRk
NDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQuLjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVl
NTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsKKyAgICBzdGF0aWMgUmVm
PFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCiAg
ICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVlMTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3Mjcu
LjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDllMjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5
IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVy
ZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZh
dWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3Jl
YXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVU
ZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRy
OworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0
dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShncHVU
ZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0
NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVW
aWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4
dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6
Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0
dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4
IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQy
NzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQ
VVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOworICAgIHN0YXRpYyBSZWY8
V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CiAKICAgICBSZWY8
R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5jb3B5UmVmKCk7IH0KIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEyZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFh
OWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3OTksMTMgKzE3OTksMTMgQEAg
UmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJl
ZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZSgmb3JpZ2luYWxS
YW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9u
KTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAg
ICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0
aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICByZXR1cm4gZmluZENsb3Nlc3RQ
bGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0
aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOwor
ICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hU
ZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0YXRpYyBib29sIGlzUmVwbGFjZWROb2Rl
T3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4
YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRiY2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENh
Y2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9k
ZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
CiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRleHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJl
IHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0
IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAvLyByaWdodCBvZmZzZXQgKGUuZy4gbXVs
dGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKLSAgICAg
ICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5n
ZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBu
b2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOworICAgICAgICBvZmZzZXRUb0VtaXQgPSBv
ZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpKTsKICAgICB9CiAK
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0
VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBhNmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAy
NjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlkYzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApAQCAtMjYwLDggKzI2MCw4IEBAIHN0YXRp
YyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGlu
ayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmly
c3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3Jl
T2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9k
ZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBm
aXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOworICAgIHJldHVybiBnZXRSYW5nZUxl
bmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50
IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmsp
CkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFu
Z2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7Cisg
ICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigp
KTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlk
KEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcApp
bmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBjNjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJl
MGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rp
b25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2li
bAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3RlZCByYW5nZSBpbnNp
ZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJlbnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBh
cmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlv
biwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQp
OwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGlu
aXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3Rl
ZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29y
ZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJh
bmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0
VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUlu
UGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBub2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOworICAgIGlu
dCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLnB0cigp
LCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgb25seSByZWxldmFudCB3
aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVzLgogICAgIGlmIChzZWxlY3Rpb24uYWZm
aW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2
MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAyMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwxMiArMjQwMSwxMiBAQCAtIChOU1Jhbmdl
KV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdlCiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29u
dGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRP
ZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1l
bnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zm
c2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1l
bnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zm
c2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3Bl
KTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVz
dFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+
ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBlbmRQb3NpdGlvbiA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgZW5kUG9z
aXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAg
cmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIC0gc3RhcnRQb3Np
dGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNjZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4
ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdENhbGxiYWNrIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9i
amVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2tdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNh
bGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIyZjc4YmU2YmVlODE1YmQwNWExZjhiMDBm
ZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFhZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9v
cChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiB7CiAgICAgSlNET01XaW5k
b3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0
KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxiYWNrPiBjYWxsYmFjayA9IEpTTWljcm90
YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFj
ayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2sp
KTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmpl
Y3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4
MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAg
LTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tU
b0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogewogICAgIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNh
bGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUo
dGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUo
dGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3Rp
dmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0
LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVl
KCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewog
ICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBjYTRmODcxODljYzI5
NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhi
M2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwxMCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5n
czo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lk
Z2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpj
cmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAtY3JlYXRl
UGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUg
Y2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9i
amVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyYjhkOWMw
NTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNk
NzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI4MjMsNyArMjgyMyw3IEBAIGNsYXNz
IENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9
IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURh
dGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJbWFnZURh
dGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAg
LTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9zaGFyZWRCdWZmZXJz
LT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQoaW5kZXgpKSk7CiAgICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgIG1f
Z2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhyZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmln
aW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUpOwotICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpl
eGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKaW5kZXggNWYyODVlOTFiOGRm
NWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJm
MjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpjQ2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0
YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpj
SW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsK
KyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVm
UHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwgfk9iamNJbnN0YW5jZSgpOwogICAgIAog
ICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihOU1N0cmluZyosIEpTR2xvYmFsT2Jq
ZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAvLyBBIG51bGwgZXhjZXB0aW9uRW52aXJv
bm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQgcHJvcG9nYXRlIHRvIGFueSBleGVjdXRp
b24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIwODViYTBlN2JjNGZmOGVhMWNkLi4wNTFk
YWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2ZmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTEwNCwxNiArMTA0LDE3IEBAIE9iamNJ
bnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiBy
b290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0luc3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNy
ZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxP
YmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9v
dE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hl
KCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFuY2UsIG51bGxwdHIpOwogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQdHI8T2JqY0luc3RhbmNlPiB3cmFwcGVy
ID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShyb290T2JqZWN0
KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5nZXQoKTsKKyAg
ICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2Us
IFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIE9iamNJ
bnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKaW5kZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJhOS4u
MDk1MjdmMWIxMjZjN2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBDU1NG
b250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAg
ICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwot
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRk
cmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoYnVmZmVyKTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmluZygp
LCB3cmFwcGluZyk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJl
c3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgbV9p
bW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAg
c3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRl
cmVzdGVkIGluIHdoZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwgb3Ig
bm90LiBMdWNraWx5LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5k
ZXggMWVjYzViYTM3MDg3OTJmYTYzN2YxNmIxMmNkNzNlMTFlZmIwNGE2Mi4uMGEwMTdkYjQ0ZGJl
ZGRiMDc2OWI3MTY0ODczYWJmMWFkOWE0MWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVT
aGVldDo6cnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgLy8gSUUgYmVoYXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVM
aXN0PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1
bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVD
b3VudCA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7
ICsraSkKICAgICAgICAgcnVsZUxpc3QtPnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFi
YjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1bmlj
b2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAiVSsw
LTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fYmFj
a2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5nZVZh
bHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVzLT5j
c3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJlU2V0
dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAg
IGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJldHVy
biAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1fYmFj
a2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVh
dHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1ZSgp
KSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9J
bnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBiODNj
MzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3NzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBA
IC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21T
dHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFzdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0eWxl
U2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAgICBt
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAgICBj
b2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRXcmFw
cGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxlU2hl
ZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7CisgICAg
Y29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NT
T01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0NTNm
YzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi4yYjc1ZWJiZjc4NmE5ZDY0M2ZmYjFjN2QzYjkzOTE4Yjky
ODA4NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3Ro
VmFsdQogUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAogewogICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsK
ICAgICAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZU5vbmUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NGZh
M2Y1Mzk4ZmU2ZmJlNDI0NmNlNmMxMGQzOGQ1OWY4ZTJiM2E2Li42YTIwMzYwYTU0NjAyNmExY2Zm
ODEyN2FlODE1MWVhZjIzMzAwNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC0xOTgwLDggKzE5ODAsOCBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdAogICAgICAgICAg
ICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAg
ICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwogCi0gICAgICAg
ICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9u
KTsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmlu
ZGV4IDBkYzEwOThmNTRmODRiYmYyYmE3YmJhMzU5NzFiNjhkNWE5ZGJiZWMuLjFlZWZlYjhiZDEw
YzI1NGI4MjRiYzA2Y2Q1YjhhZWYwNjYwMjE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3Bw
CkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVi
bGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVS
dWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFz
ZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWY8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0KSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIocGFy
ZW50U2hlZXQsIG51bGxwdHIpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVs
ZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUp
IGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIobnVsbHB0ciwgcGFyZW50
UnVsZSk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVs
ZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIENSQVNIKCk7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBT
dHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hl
ZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFz
ZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxl
KiBwYXJlbnRSdWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0
eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBA
IC0xNjksMTEgKzE2OSwxMyBAQCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRl
Q1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDUwogICAgIGNhc2UgQ2hh
cnNldDoKICAgICBjYXNlIEtleWZyYW1lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBBU1NF
UlQocnVsZSk7CisKICAgICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50
UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1cm4gcnVsZTsKKyAgICByZXR1cm4gcnVsZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCiB1bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRl
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggNjgwNzE0MWZlZWE3MWIwNzZhZmE5YTRhNjlh
M2NkMjZmYzUzMjI4OC4uNzE4MDUyMzEzODQ0MDMyZjc1YzljNmNkMWU1YWE5M2RiZWRkNDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtODQsOCArODQsOCBAQCBjbGFzcyBTdHlsZVJ1bGVC
YXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5lZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9u
LgotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRl
Q1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxl
PiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRy
KSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBh
cmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5
cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZhbHNlKQpAQCAtMTA4LDcgKzEw
OCw3IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7
CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAg
IFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVu
dFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV90eXBlIDogNTsKICAgICAvLyBUaGlzIGlz
IG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IDBmZWU4NGNkN2ViMjY3
OTJlM2RmNmQ0NjdlOTBhNjJmMWZkMGNjNTQuLjY2ODRhOGFlYTE0YmViZDZkMzg1MzI2YTRiNGRh
ZWU5Nzc3ZTdhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6
fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IoKQogICAgIGFjY3VtdWxhdG9yTWFwKCkucmVt
b3ZlKG1fdGFyZ2V0LnB0cigpKTsKIH0KIAotUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11
bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5l
ck5vZGUmIHRhcmdldCkKK1JlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQp
CiB7CiAgICAgQWNjdW11bGF0b3JNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBhY2N1bXVsYXRvck1h
cCgpLmFkZCgmdGFyZ2V0LCBudWxscHRyKTsKICAgICBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcj4gYWNjdW11bGF0b3I7CkBAIC03MCw3ICs3MCw3IEBAIFJlZlB0cjxDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRP
ckNyZWF0ZShDCiAgICAgICAgIGFjY3VtdWxhdG9yID0gYWRvcHRSZWYobmV3IENoaWxkTGlzdE11
dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24odGFyZ2V0KSkpOwogICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gYWNjdW11bGF0b3IuZ2V0KCk7CiAgICAgfQotICAgIHJldHVybiBhY2N1
bXVsYXRvcjsKKyAgICByZXR1cm4gYWNjdW11bGF0b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAog
aW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9y
ZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNj
b3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2IyNmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2
Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwogLy8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVs
YXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4KIGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNj
dW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9y
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJik7CisgICAgc3RhdGljIFJlZjxDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAg
fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IoKTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChO
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRmY2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2
MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJjNjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAg
c3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50
TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBBU1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3
KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCktPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdl
IChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9kZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdp
dGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQo
KSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUu
ZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVu
ZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwog
ICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRRdWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0
cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApp
bmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRkMGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhk
Mjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxp
bmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0
eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFz
S25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVy
eVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlh
UXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVu
dCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRy
dWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7
CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hl
ZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCpt
ZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZh
bC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVl
dE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQp
CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVldCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgp
LmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2Fj
aGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlu
bGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAg
ICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlh
UXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAg
ICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAt
MjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9
IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxl
bWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBt
X3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAg
IGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRs
ZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9p
bnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2Yw
OTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2
YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bv
aW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZlbnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVu
dCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3Rh
dGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9pbnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5p
dGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNjZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4
NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAtNDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVz
ZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3RoZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVU
b2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdl
c3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRp
YyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
IHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1
cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUu
Ljk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRl
cm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0
byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2Ug
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZh
bHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3Jl
YXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3Jh
cGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJl
ZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFu
Z2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRh
aW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0
YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQ
b3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdy
YXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5p
bmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0Nv
cnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAKICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9u
T2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAo
IXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0
ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28g
dGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4K
LSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQo
KSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2Uu
cHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRo
aXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAg
ICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2
LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9V
bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVj
dGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1l
U2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1l
bnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJv
bGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpOwotICAgIG1hcmtl
cnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1
dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlP
dmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2Uu
Z2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJr
ZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpB
dXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5
T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBE
b2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdl
LnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0
MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGll
ZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbgogewogICAgIGlmICghY29tbWFuZC0+d2Fz
Q3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0
aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQo
KSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0
aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5t
YXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1h
cmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJr
ZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdF
eGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9y
RGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlmIChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRp
bmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdl
PiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1l
bnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBT
dHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsK
KyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFt
ZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24p
OworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2Uu
cHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5n
V2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFjZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0
ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5nIHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBT
byBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBvcmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMg
cG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9m
cmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdp
bmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1
bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigp
LCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5n
Rm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25z
dCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwgUmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZl
LCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBsYWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBA
IGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldv
cmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1h
cmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRh
aW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
Km1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1h
cmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgp
KTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQo
KSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAg
ICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgp
KSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VX
aXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5n
KCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRU
eXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1l
bnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0g
d29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3Jk
UmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBtYXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAg
ICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNp
b24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50
TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJEYXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJr
ZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpOwogICAgICAgICBpZiAoY3VycmVudFdv
cmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0
YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRV
SVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNk
ODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3
NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgIGlmICghc2Nv
cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2li
bGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAg
ICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJz
dFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAg
YXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9u
SW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGludCBzdGFydEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0
cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdy
YXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3Rh
cnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4
NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgo
cGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgs
IDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBv
c2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0
byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwg
dHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQorICAgICAgICAgICAg
dXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxl
KQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25J
bmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAg
ICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQoKnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkK
LSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0
PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24u
Z2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwg
ZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9Q
dXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJv
dWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBh
Z2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qg
d3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBAIC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFw
cGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5
bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVz
IGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhlaXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJn
ZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYgd2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50
IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4KICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0g
dGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQotICAgICAgICAgICAgICAgIGFwcGx5SW5saW5l
U3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24u
cHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBmb3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUg
b3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9kZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVh
Y2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRlciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24g
b2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBhYzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQy
NjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApA
QCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3Rh
dGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwg
cmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpm
aXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSAr
NzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJl
c2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5zaWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0
byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2VyQ29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBj
b3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dElu
Tm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxS
YW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQs
ICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBv
ZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYg
bWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
IChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAgICAgICAgICAgbWFya2VyQ29udHJvbGxlci5h
ZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlv
bigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAg
ICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlw
ZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFya2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIu
bWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0g
ICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIu
dHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIu
YWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRp
b24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRP
ZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAg
ICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkp
OwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAg
ICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIo
KSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAg
ICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3Jh
cGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlz
aWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAg
ICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFu
Z2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJl
Y3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAg
IFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0
UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlh
bnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2Rl
KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9u
IG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0
dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdyYXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUg
c21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRo
aXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBpbml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29u
ZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNlZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFncmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2Vy
dmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7Cisg
ICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNl
cmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBB
bm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwg
ZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5vbi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBp
cyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUgaXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8v
IGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVtcHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5
IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3
NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBjZjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpt
ZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3Jh
cGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5k
T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGll
bnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJl
cGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9y
KCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5n
ZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBtb3Zl
UGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhvbGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3Mg
dGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwgZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRlMWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3
NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTExMTcsOSArMTExNyw5IEBAIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYg
bm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSksIERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKICAgICByYW5nZS0+c2Vs
ZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7
CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2Uo
aW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5hdEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9u
KCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUw
MDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAw
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3
MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHls
ZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUgPSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRl
ZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgm
bm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAg
ICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwog
CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7
CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxp
bmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNo
b3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJpa2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERl
Y29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8
IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsKICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkp
IHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVl
TGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVk
VmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAg
ICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAg
IGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
VW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFs
dWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRyKCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAg
Ym9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHls
ZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAgICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxp
c3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAg
ICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24s
IG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkp
OwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5
bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcx
LDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0
aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0
aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHBy
b3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdo
aWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2Fs
bGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7
CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
cG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGll
cyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5
bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3
ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0
RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6
Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVt
ZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBtb2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHBy
b3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9t
UnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMg
PSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgIHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxl
RnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVtZW50KTsKIAogICAgIGlmIChlbGVtZW50Lmlu
bGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkK
ICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90
IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxl
OiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAg
ICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9i
bGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwogCiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9u
KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29t
cHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZs
aWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJv
cGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGVUb1JlbW92ZVByb3Bl
cnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMy
OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQo
U3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBn
ZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVz
KTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBv
dmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29t
cHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0
aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRl
ZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAgICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1f
bXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBA
IC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxl
KQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHlsZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVu
ZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVy
dGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRo
UmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVzdWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVy
dGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChyZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJl
Y2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQg
RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1
dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGly
ZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rp
b246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5oZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBh
cmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5w
dHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJl
Y3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29u
c3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICAg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0
YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4o
c3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQp
OwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsK
LSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3Rl
ZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
YmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7Cisg
ICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRS
YW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5n
OjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkzNDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcu
LjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMxNzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5
bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBh
Y3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZh
bHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJ
RCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBw
bHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZv
ciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVP
cktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVU
b1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCku
YXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29t
bWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFw
cGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBm
cmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0
aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigp
LCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3Bl
cnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUu
ZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtl
VGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsK
KyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVS
dGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rp
b246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUo
c3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJs
b2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAyNTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQz
NmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNjZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZv
aWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVmUHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3Rh
cnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9TcGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9T
cGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBv
dXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQq
IHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCog
cm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51
bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVkaXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9v
dCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3Jt
YXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAmJiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3Rh
cnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5nZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5k
T2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJh
bmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5pc0Rlc2Nl
bmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAgLy8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1l
bnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJyZW50IHBhcmFncmFwaAogICAgICAgICBpZiAo
cmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5kZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTEx
NTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNlYWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3Bw
CkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkK
ICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQn
cyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdy
ZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9vdCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUg
PSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAgICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZl
cnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRlZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwog
Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShk
b2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCksIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENv
bW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFw
cGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBp
c0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kLCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUzYjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcw
OTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0
aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJl
ZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFu
Z2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFu
Z2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsg
MSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdl
KCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRjNzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJh
YTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcg
QEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5k
S2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVu
dCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0
IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwot
ICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKICAgICAgICAgaWYgKGlubGluZVN0eWxl
KSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAg
ICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2
Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFj
ZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0gdG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0
aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNl
cnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9u
UG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21w
YXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBhcmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcg
KzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMo
SW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykKICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFu
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAg
ICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlu
bGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5vZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxl
U3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8gSWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQg
d2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGlu
ZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0
OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgz
ODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEyNCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3Rh
dGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25z
dAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRl
RnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9
OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRv
QmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2Njcx
Yjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5
NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAg
ICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCks
IG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhl
IGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFu
Z2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ug
d2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5k
T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgp
KTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSk7CisgICAgICAgICAgICBj
dXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1Jh
bmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJdGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZzZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBA
IC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlz
c3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAg
ICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRH
cmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVsbGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRh
aWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0g
c3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9u
KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3Jh
cGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcGFy
YWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxs
aW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNS
YW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
b3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRP
ZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQwOCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENo
ZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNr
R3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1t
YXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhy
YXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0Owog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgz
NjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEuLjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1
MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwaW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21w
b3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dEluc2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCks
ICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0
byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1Rl
eHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29t
bWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJl
bnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhE
b2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBi
b29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21t
YW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlmICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFy
ZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBw
bHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmlu
ZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGlj
UmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2UpOwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRv
cigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0
dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNS
YW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkgfSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9y
QWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXgg
Mzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhiMzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAx
NDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5MywxMCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9z
aXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
bwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAgPCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBt
dXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNvbnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5v
ZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVw
RXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3Ro
ZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJuICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6
IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4NjkyN2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcx
NmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJiMjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRl
ckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUp
OwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNv
bW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFu
ZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRmMzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4u
MmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNjNWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDgg
KzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50
KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJ
WE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3Jl
IHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9y
cy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJl
c3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigp
LCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwog
CiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJiNTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcu
LjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6
OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0Rp
cmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1l
bnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2Us
IGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9
IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0
eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAg
ICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgsMTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRB
bGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBk
aXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1
dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBh
cmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxl
LnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVzIHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5v
dCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9m
cmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgp
LT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRl
ZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAK
ICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBV
SVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAg
ICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAi
cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0
b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1w
bGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJWE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0
bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBVbmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0
Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRjaCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9T
ZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVz
KTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0
aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAogc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNo
ZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAg
ICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlvbigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6
UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAgUG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9u
KCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJl
ZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3Vt
ZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xp
ZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwg
cGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7
CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1l
bnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGll
bnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsK
IAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVl
N2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIxMjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYw
LDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBv
c2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25J
c0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlz
aWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24o
bm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQ
b3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0
aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBs
YWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFp
blRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdl
YkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hv
c2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVu
dCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAg
ICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRv
ckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFn
bWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0
ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUp
OwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZy
b21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxl
bWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYg
KCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2
MWFhYmRhMTk4MzQuLjU3NDcyMGU3NDMzYjNhZTcyOWQzZDQzYzNjMTVmYTQyNDM2MzZkNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2Rl
JiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1
dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwog
ICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzKGVsZW1lbnQpOwogICAgIHJldHVybiBzdHls
ZTsKIH0KQEAgLTEyMTEsOCArMTIxMSw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAg
ICAgIC8vIEJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIEkgY2FuIGZpbmQsIGl0IGxvb2tzIGxp
a2Ugd2Ugd2FudCB0byBzdGFydCBwYXJzaW5nIHRoZSBmcmFnbWVudCBpbiB0aGUgSW5Cb2R5IGlu
c2VydGlvbiBtb2RlLgogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhh
dCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4
dCBmb3IgdGhlIGZyYWdtZW50LgotICAgICAgICBSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBmYWtl
Qm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7Ci0gICAgICAgIGZyYWdt
ZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5nZXQoKSk7CisgICAgICAgIGF1
dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOworICAgICAg
ICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkucHRyKCkpOwogICAg
IH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAgICBmcmFn
bWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3Ry
aW5nKSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAppbmRleCAwNDM0MTI5MDJhNDBmZTQxNzFiNzY1MmQ5OGIwYTNlMmUyOGQ1MTU3Li44
OTcxNTVhMTIyOTFkYzRlNTM1MjM0ZTA4OGE4YzQyZWZhMDliNWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTIxNyw5ICsyMTcsNyBAQCB2b2lk
IEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcpCiB7CiAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4g
bV9ieXRlc0xvYWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPSBt
X3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNMb2FkZWQpOwotCi0gICAgICAgIG1fcmF3RGF0YSA9
IG5ld0RhdGE7CisgICAgICAgIG1fcmF3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRl
c0xvYWRlZCk7CiAgICAgICAgIG1fdG90YWxCeXRlcyA9IG1fYnl0ZXNMb2FkZWQ7CiAgICAgfQog
ICAgIGNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKaW5kZXggZDdlMmI3NWE0NTMxMjBiMDJkN2M3NDJkNDYwZjQ2YTRkZDU5OTQ4ZS4uZDc4
MTEwY2M5ZWRiOWRhMDA0ZDQxNTg0YWM0OWRiYWUwMDI0ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3Qg
U3RyaW5nJiBpbnB1dExpbmUpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNl
dHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVc
biIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMGRjYzg4OTA1MDYzZDJlYjI3MDllNjJlMzRl
OTVlYTA3M2IyODhhNC4uMTgxMGU3MjVlMTgzNDlhYjM2NjU2OGVlMTg1MGNkYmJiZWY5OWY2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMDI5LDcgKzEw
MjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVm
ZmVyc0NoYW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVm
UHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBl
dmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBh
bmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlz
IGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KQEAgLTY0NDUsNyArNjQ0NSw3
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAgICAgaWYg
KGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSZWZQdHI8
TWVkaWFDb250cm9scz4gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1
bWVudCgpKTsKKyAgICBhdXRvIG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUo
ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGZmOTZm
NGYyNDM1YjA5OGUwNjY2MmYzM2NjMjA1ZTAwMGIzNzkxNmQuLjJhNmE5YzYxMjE0NTRmMzI2MTEz
NmQxNThlOGY1OWUwOWJlMTRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcApAQCAtNDczLDkgKzQ3Myw5IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJz
IEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3Jk
ZXJzOwogfQogCi1SZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVh
dGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVu
dDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBh
dXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKICAgICBhdXRv
JiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAo
Y2VsbEJvcmRlcnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRl
eCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdhMTk4MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNm
MDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAgIENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsK
IAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZl
NzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4NTUwNjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNP
TigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6b3Jp
Z2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKaW5kZXggYWNhNTFhNzdmMDMxNTMzOTI2NjJmNDBjM2Q0ZTI1NzliZGRkMDRiMi4uZTJi
NDNkZDVlM2IxNTk5ZmVkZjg0MDQ1YjJmMjgxZjA2ZDAzMTY0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcg
KzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRN
TEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmCiAgICAgLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1
Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCiAgICAgRG9jdW1lbnQm
IG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKTsKICAgICBib29s
IGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25lckRvY3VtZW50LmZyYW1lKCk7Ci0gICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxl
bWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGluc2lkZVRlbXBsYXRlRWxlbWVudCA/IG51
bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFj
dG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IGZp
bmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVyRG9jdW1lbnQsIGxvY2FsTmFtZSkpIHsKICAg
ICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXgg
MDhjNmU1MGI1ODU0OGRjODc3MTNlMjBjMjA4NDA5NjY0MmExM2ZhNC4uZTExOTJhZmY3MGFlOTdi
MDNlMWI3YzI2YzFjMDU0MWEwMmQyNDZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMjIsNyArMTIy
LDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmUKICAgICAgICAgLy8gU2V0ICJmbGV4LWJhc2lz
OiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBv
bmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAgLy8gc3R5bGUgdG8gY2FsY3VsYXRlIGVt
IGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBq
dXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSBh
bmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVt
U2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgICAgICBpbnQgcGl4ZWxzID0gZW1T
aXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0
eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxLjAsIGZhbHNlIH0pOwogICAgICAgICBuZXdT
dHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQgfSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0
M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDguLjM1YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBh
NDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRQ
YXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChEb2N1bWVudCYKIAogdm9p
ZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURh
dGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gY3VlID0gV2ViVlRU
Q3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5zZXRTdGFydFRpbWUobV9jdXJyZW50U3RhcnRU
aW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9jdXJyZW50RW5kVGltZSk7CiAgICAgY3VlLT5z
ZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9TdHJpbmcoKSk7CiAgICAgY3VlLT5zZXRJZCht
X2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAK
LSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7CisgICAgbV9jdWVsaXN0LmFwcGVuZChXVEZNb3Zl
KGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJz
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
aW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQyOTQyYmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMx
ZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBFeGNlcHRpb25P
cjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3Ry
aW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBub2RlLnByZXZpb3Vz
U2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3Jl
YXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOworICAgIGF1dG8g
ZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAgICAgaWYg
KG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRN
TChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgpID8gbm9kZS5wYXJlbnRFbGVtZW50KCkgOiBt
X2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsKICAgICBlbHNlCkBAIC0xNDMsNyArMTQzLDcg
QEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5v
ZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAgICAgaWYgKGlubmVyUGF0Y2hDaGlsZHJlbigq
cGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
Ly8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9k
b21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCAqZnJhZ21lbnQsIG5vZGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9yLnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwg
ZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZjM4
YWEyMDA0YjI1NzM0ODhiMTYwZDczOWNmZTk2MzNlZmM2ZWM1Li5jMGVjM2Y4YjcyNTg1NTE5NTcz
YjJiYzRjZTBkZWFlZmU3MDJhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRp
YWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0KSkgewog
ICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RhdGUgOiBjb250ZXh0MmQuc3Rh
dGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxv
YWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdGF0ZVBheWxv
YWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJzZXRUcmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5
Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5zZm9ybSkpOwogICAgICAgICAgICAgc3RhdGVQ
YXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhGb3JLZXkoImdsb2JhbEFscGhhIl9zKSwgY29u
dGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMzLDcgKzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWls
ZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9j
b250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0V2Vi
R0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KTsK
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xD
b250ZXh0QXR0cmlidXRlcyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KSkgewotICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gd2ViR0xDb250ZXh0QXR0cmli
dXRlc1BheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byB3
ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxw
aGEiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmFscGhhKTsKICAgICAgICAgICAgIHdlYkdM
Q29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250
ZXh0QXR0cmlidXRlcy0+ZGVwdGgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRl
c1BheWxvYWQtPnNldEJvb2xlYW4oInN0ZW5jaWwiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMt
PnN0ZW5jaWwpOwpAQCAtNjQzLDggKzY0Myw4IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAg
ICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24t
PmFkZEl0ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IHRyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3Rh
dGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0
YWNrU2l6ZVRvQ2FwdHVyZSk7Ci0gICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZN
b3ZlKHRyYWNlKSkpOworICAgIGF1dG8gdHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENh
bGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2Fs
bFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0o
aW5kZXhGb3JEYXRhKHRyYWNlLnB0cigpKSk7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCmluZGV4IDhlMWM0ODI5ZGZmNWJlYWMxZDZmYzAzMjA5Y2ViZmQwYzQ1MDU3
NzQuLmEwYzM4ODdhNmVmYzJhMDUxYzNhMzUzMTQ3ZDcxMzZjZjhhYzhhYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBGcmFtZUxvYWRSZXF1
ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sICJfYmxhbmsiX3MsIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgSW5pdGlhdGVkQnlN
YWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQdHI8RnJh
bWU+IGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBX
VEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOworICAgIGF1dG8gZnJhbWUg
PSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggM2NkZWM4NTA1MWVkMGMzMTRlN2U0MmM0OWJmYmEwODU1NTUzNzdjNy4u
OTQ5OGU3NjBiZDk2NDJhOTdkNjVlM2U5YzVhMzM0MDM0MjExOTY2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNDQwLDcgKzQ0
MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCkKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBsaXN0ID0gU3RhdGljQ1NT
UnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gbGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0Ojpj
cmVhdGUoKTsKICAgICBWZWN0b3I8UmVmUHRyPENTU1J1bGU+PiYgbGlzdFJ1bGVzID0gbGlzdC0+
cnVsZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gc3R5bGVTaGVldC0+bGVu
Z3RoKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIGxpc3RSdWxlcy5hcHBlbmQoc3R5bGVTaGVl
dC0+aXRlbShpKSk7CkBAIC02MzYsNyArNjM2LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28K
IAogICAgICAgICBhdXRvIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkRpc2FibGVkIDogSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0aXZlOwogCi0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAg
ICAgICAgICAgLnNldE5hbWUobmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICAg
ICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpCiAgICAgICAgICAgICAucmVsZWFz
ZSgpOwpAQCAtNjk2LDExICs2OTYsMTEgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmlj
YWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHBy
b3BlcnR5LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBib29sIGltcGxpY2l0ID0gbV9zdHlsZS0+aXNQcm9wZXJ0eUlt
cGxpY2l0KG5hbWUpOwpAQCAtMTMzMiwxMiArMTMzMiwxMiBAQCBib29sIEluc3BlY3RvclN0eWxl
U2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgIGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5o
YXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHlsZVNoZWV0
Q29udGVudHM+IG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAg
ICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJj
ZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChwYXJzZXJD
b250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAg
ICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwg
bV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5n
ZXQoKSk7Ci0gICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5l
d1N0eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsK
KyAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5wdHIoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOwogICAgIG1f
cGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVz
dWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcAppbmRleCBmMmVkNWVmODc2NmQwNDc5YWU0N2QwZDIzMzRkZDk3YTQ5
MDMwZTlkLi5jYWQ2NjY5M2E3ZTc1MzhmMjljYzIxYTk5OWZjMTY3MmM3NTExMzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcApAQCAtNDM4LDggKzQzOCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAK
ICAgICBjb250ZXh0LmNhbnZhc0Jhc2UoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNy
ZWF0ZShjb250ZXh0KTsKLSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5z
cGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcyk7CisgICAgYXV0byBp
bnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBt
X2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlm
aWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCkpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZh
c0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0Nv
bnRleAogICAgIGlmIChtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCkgewogICAgICAg
ICBSZWNvcmRpbmdPcHRpb25zIHJlY29yZGluZ09wdGlvbnM7CiAgICAgICAgIHJlY29yZGluZ09w
dGlvbnMuZnJhbWVDb3VudCA9IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50LnZhbHVl
KCk7Ci0gICAgICAgIHN0YXJ0UmVjb3JkaW5nKCppbnNwZWN0b3JDYW52YXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhdG9yOjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNv
cmRpbmdPcHRpb25zKSk7CisgICAgICAgIHN0YXJ0UmVjb3JkaW5nKGluc3BlY3RvckNhbnZhcy5n
ZXQoKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0
dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKaW5kZXggYWUzYWNhZmQwOTBiMGFjMTVjN2VmZDZmZWI4OTU5NDY0OGQ4OTk1MC4u
ZGVhNWM5YTMxZDRjOTI4YmIzNGUxOGNiZGQ0NTQ5NGFlYjFhYmYyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5
UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAg
ICAgICAgIHJldHVybiBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51
bGwpLnJlbGVhc2UoKTsKIAogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10o
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGgg
PSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFz
ZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtl
eVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRTdHJp
bmcoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVj
dG9yPFN0cmluZz4mIHZlY3RvcikgewogICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlP
ZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3Ip
CiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmcpOwotICAgICAgICBSZWZQdHI8S2V5
UGF0aD4ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6
QXJyYXkpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRl
KCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSkucmVsZWFzZSgpOwogICAgICAgICBrZXlQ
YXRoLT5zZXRBcnJheShXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVlNDRlYWNhYmRlNWFhMTA3MzI0NTU5NDgyNWNhNzZk
ZDIzMTE3ZDUuLmMwZWMzZWY2OGJiZTdjMTI5ZDk2YTAyMWVkYzQ4YjU2MjQxMWQ3MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJj
aGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKIHsKICNpZiBFTkFC
TEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKICAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUo
KTsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShmcmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGZyYW1lKTsKICAgICBpZiAoIWFyY2hpdmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiQ291bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2ZSBmb3IgbWFpbiBmcmFtZSJfczsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZjY1
YWViYzlkZjZhNjViZDJmZjQ4N2RmYTM2N2I3YzNlZGZiOTYyLi41NjBjM2E1MDYwY2FlNjJlMDBj
NjI4NGUyNTk3Mzc4MjEwMzllY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcApAQCAtMzgzLDE0ICszODMsMTQgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9Owog
CiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdl
TmFtZXNwYWNlIHsKLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5
U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBh
Z2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7
IH0KKyAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEp
OyB9CisgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdl
JiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkg
ZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdl
JiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmlu
YWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
VXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MTMsMjIgKzUxMywyMiBAQCB2b2lkIEVtcHR5RWRp
dG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKIHsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNw
YWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTUzNTQ3OTExNDdlNTg4YTA5NGViNmNiYWMxYjQy
N2ExN2VmZGRhZS4uYTg3M2IxZDBlYWM3MjhkOGZlZjZkMGIyNTgwZTJmODU0ZTczNGFhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VS
TCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQUmVmZXJyZXIocmVmZXJyZXIpOwotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJl
ZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIp
OworICAgICAgICBhdXRvIHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcocmVmZXJyZXIpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVz
dCwgcmVmZXJyZXJPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIH0KICAgICBpZiAoJm1fZnJhbWUu
dHJlZSgpLnRvcCgpICE9ICZtX2ZyYW1lKQpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgYm9vbCBGcmFt
ZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjb24KIAogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFhG
cmFtZU9wdGlvbnNTYW1lT3JpZ2luOiB7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAgICAgICBhdXRvIG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlz
U2FtZVNjaGVtZUhvc3RQb3J0KHRvcEZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bV9mcmFtZS50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFy
ZW50KCkpIHsKQEAgLTM2MzksNyArMzYzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZm
ZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29u
dGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhpdGVtLnJlZmVycmVyKCkpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKICAgICAgICAgYWRk
SFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsK
ICAgICAgICAgYWRkSFRUUFVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzSWZOZWVkZWQocmVxdWVzdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBlMWQ2MGViOTBlN2I3MzQ5N2MxYWFkYzFiMzRlZDdjMzVjNDZhZTZlLi40YmFkMTgz
ZTA4NTQ4YzQ3ZGRkOTgyMjllZTllNjJiNGViNDliNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyCiAgICAgU3RyaW5nIG1vZGUgPSBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5TW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNy
ZWF0ZVVuaXF1ZUlkKCkpKTsKIAotICAgIFJlZlB0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAg
IGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2Jh
bFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygp
KTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3Nh
Z2VSZWNlaXZlZDsKICAgICB3aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNz
YWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgm
d29ya2VyR2xvYmFsU2NvcGUsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IDVmZDM5YmU3YmQxNDBiZWU0MmI5
MWEyOGFmODZkZjc0YTdlNzRkNzIuLmMzYjVlM2UxZjIyOTM0MTA2NjYyNjA5YjRhMDEwMzljMjBl
OTExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKQEAgLTEzMSwxNiArMTMxLDE2IEBAIHZvaWQgTUhUTUxQYXJzZXI6OmFk
ZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2
ZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1
YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1YmZyYW1lID0gTUhU
TUxBcmNoaXZlOjpjcmVhdGUoKTsKICAgICBzdWJmcmFtZS0+c2V0TWFpblJlc291cmNlKCpyZXNv
dXJjZSk7Ci0gICAgbV9mcmFtZXMuYXBwZW5kKHN1YmZyYW1lKTsKKyAgICBtX2ZyYW1lcy5hcHBl
bmQoV1RGTW92ZShzdWJmcmFtZSkpOwogfQogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLCBjb25z
dCBTdHJpbmcmIGVuZE9mUGFydEJvdW5kYXJ5LCBjb25zdCBTdHJpbmcmIGVuZE9mRG9jdW1lbnRC
b3VuZGFyeSwgYm9vbCYgZW5kT2ZBcmNoaXZlUmVhY2hlZCkKIHsKICAgICBBU1NFUlQoZW5kT2ZQ
YXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBj
b25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwog
ICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNv
bnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0yMTEs
NyArMjExLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUg
VVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29s
dmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNv
bHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQog
ICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29s
dXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApp
bmRleCBlZTk3YjJiZDRmZDA3MjJiNWJhM2JkNWZhZWUxYmM2ZGZjMTY2NjIwLi5mODYzMTM1MmMy
MjBkZDFmYjU0NTgxMjU3YmU1Njg1OThmM2Y2ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIxNiwxMSArMjE2LDggQEAgYm9vbCBNZW1vcnlD
YWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5
IGV4aXN0cy4KIAotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBpZiAoIWJpdG1hcElt
YWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lv
bklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOworICAgIGF1dG8gY2Fj
aGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdl
LnB0cigpLCBzZXNzaW9uSUQsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hl
ZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJ
bWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTQx
LDcgKzUzOCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4o
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3Jp
Z2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOworICAgICAgICAgICAg
YXV0byByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJs
KCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKICAg
ICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMjc3Mjk1MDQ1NGIzMGI4NTIy
ODRkNmNlYjUxNTYyMjdiNmE5N2RlMi4uNjg5OTRhY2NiZGJkYmRiNTRjYWI1MWJiNDMzYzhmZjY0
ZDRiYTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4NCw3ICsxNDg0LDcg
QEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9
IGZyYW1lLT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rp
c2FibGVkKCk7CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3Rh
dGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKSB7
CiAgICAgICAgIGlmICghYWxsb3dDcm9zc09yaWdpbiAmJiAhcnVsZS0+aGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbigpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMjQ1LDcgKzIyNDUsNyBA
QCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFt
ZSBmb3IgdGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJl
bnQgZnJvbQogICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2Vz
IGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7
Ci0gICAgUmVmUHRyPEZyYW1lPiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0
aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dG
ZWF0dXJlcywgY3JlYXRlZCk7CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdp
bmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3Qp
LCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAg
cmV0dXJuIFJlZlB0cjxGcmFtZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA2ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQz
Li41MWJhODkxZmUxNzMzMzk2YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFIKIAogc3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0g
ICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwor
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1l
bnQoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UucHRyKCksIHRydWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQ
cmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4
MDdjZTFlMjNhYzA5Li4zYTQ2OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFn
ZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4g
d2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8v
IHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNh
bGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVu
LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcAppbmRleCBiNDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0
Li5iNDI4ZTUyMjFhZmUxYjJiNzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxl
bmRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBp
ZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxl
bmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7
CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3Ag
OiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9w
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBm
cm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0
ODgwMGU3MzgxNjY1ZDNkNTQ2NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNj
NTcwMmIwMjYxZmE2NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEs
MTQgKzgxLDE0IEBAIHZvaWQgRnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0
IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9y
U3ludGhlc2l6ZWREb2N1bWVudCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9j
dW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJs
KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERv
Y3VtZW50KHRoaXMsIHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERv
Y3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVu
dC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNl
dERvY3VtZW50KGRvY3VtZW50LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0g
SFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50
ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBi
b2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkg
PSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHls
ZS5pc0VtcHR5KCkpCiAgICAgICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxl
QXR0ciwgc3R5bGUpOwogCkBAIC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50
ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1h
cmtlciA6IGRvY3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8v
IEZpcnN0LCBhZGQgdGV4dCB0aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlm
IChwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcHJlY2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwg
cHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJl
Y2VkaW5nVGV4dCA9IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGF1dG8gcHJlY2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1l
bnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJp
bmcgcHJlY2VkaW5nVGV4dCA9IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwog
ICAgICAgICAgICAgICAgIGlmICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5n
VGV4dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwg
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7
Ci0gICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFu
Z2VGb3JNYXJrZXIuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJh
bmdlOjpjcmVhdGUoKmRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2Rl
LCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9k
ZSwgbWFya2VyLT5lbmRPZmZzZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0
Rm9yTWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAg
IHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFs
dGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGludGVycHJldGF0aW9uc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRl
cm1pbmUgdGV4dCBmb3IgdGhlIGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUg
dGhlIHZpc2libGUgdGV4dCwgb3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJy
YXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQog
CiAgICAgLy8gRmluYWxseSwgYWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAg
ICBSZWZQdHI8UmFuZ2U+IGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9j
dW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0
TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRv
IGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2Vk
aW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCBy
b290Q2hpbGRDb3VudCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5U
ZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RN
YXJrZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBp
bnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRB
ZnRlckxhc3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4
MGFjOTIxYjE1ZjBkMC4uYzk2YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyLm1tCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyOjpIaWdobGlnaHQ6OmZhZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21w
bGV0aW9uOmZhbHNlXTsKICAgICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFw
aGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JL
ZXkoIkZhZGVIaWdobGlnaHRJbiIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0
Zm9ybUFuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlv
bi5nZXQoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9y
bUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9y
bUFuaW1hdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6
SGlnaGxpZ2h0OjpmYWRlT3V0KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2Vs
Zi0+ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xh
eWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZh
ZGVIaWdobGlnaHRPdXQiLCAqcGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1B
bmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0
KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxh
eWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5p
bWF0aW9uLmdldCgpKTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhm
NTJhNTAwODlkMzc4NTliNzEzZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMy
ZDYwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRC
dWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIp
IHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyIFVuYWJsZSB0byBjcmVhdGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1
XG4iLCBzaXplKCksIHNpemVvZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBm
NjVjZGUzYzFhZmY0NWY2NmQ1ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5
NTZhMGMwYzViMDQ4OWRiM2I4OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVs
ZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgs
IGludCBlbGV2YXRpCiAgICAgLy8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25l
ZCBzdGFydEZyYW1lID0gaW5kZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBz
dG9wRnJhbWUgPSBzdGFydEZyYW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1
ZGlvQnVzPiBwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRl
QnVmZmVyRnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8
QXVkaW9CdXM+IHJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRp
bmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0
ZSk7CisgICAgYXV0byBwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6
Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBh
dXRvIHJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJl
U2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAg
ICAgQXVkaW9DaGFubmVsKiBsZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5u
ZWwoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1w
dWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jl
c2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmNwcAppbmRleCBlNzlkNmMxOGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3
ZjM5ODY5ZDZiNjUwMjY0MzU0NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBA
IHZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25l
ZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdy
YXAgdGhlIHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3Vy
Y2UgcHJvdmlkZXIuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRl
KDEsIG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1
czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhN
RTogRmluZCBhIHdheSB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBi
dXMtPnNldENoYW5uZWxNZW1vcnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAx
NWMxNjI3ODRjZDI3MTgwOTA3NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5
ZjRiYWE5YTViNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBA
IC0zNTIsNyArMzUyLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0
ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9j
Y3VycmVkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4g
YXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRy
dWUpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1f
Y2hhbm5lbFNpemUsIHRydWUpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxl
UmF0ZSk7CiAKICAgICBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRM
ZWZ0QnVmZmVycy5nZXQoKSwgYXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApp
bmRleCAyYWY1MThiOTYyNDgyNWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFj
Mjk2ZTgyZjMzYmU5YzJkZjIzMDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgw
LDcgKzE4MCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMo
ZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxD
b3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRl
IEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8
QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51
bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXND
aGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0
ZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkp
OyAvLyBzYXZlIGZvciBsYXRlcgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRv
TW9ubyBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
Y29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZk
ZmVjZGE3MWM2MDRjMDk1MTE1ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0
MDRjZmQyNjM0ZmQ2YzI1NGZjYjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ljb24uaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8
SWNvbj4gewogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jik7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUo
SElDT04gaEljb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBz
dGF0aWMgUmVmPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJY29uKGhJY29uKSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGUuaAppbmRleCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYy
OWE4Li4xM2YxODc4OTNiNDQwZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUg
OiBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdl
YlZUVAogICAgIH07Ci0gICAgc3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBj
cmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRU
cmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IElu
YmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0
VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCmluZGV4IGI4Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQu
LmE5MzU1MDAzODlhYmRiM2QxNGU3NmVkODdkMzNkYTQ3M2E2ZjYxNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcApAQCAtMTg5MSw4ICsxODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAg
ICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAg
ICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJ
XQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9m
KFVDaGFyKTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlND
OjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklT
aXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUs
IHRydWUpOwogCiAgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRl
KGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgs
NyArMTkwOCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBSZWZQdHI8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBh
dXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1f
b3duZXIsIGF2UmVxdWVzdCk7CiAgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQo
YXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9h
ZGluZygpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEy
ODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhhMzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1
Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5
ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMDU3ODVj
YWUzNjE2ZGZmYmU5OTM5ZTAzZGE1MTkzYzY5MTQ5NTRmLi4zMTA3ODBjM2FjYWJkODE1NTVjM2Qw
MTllM2I0OGM2Y2Y3NzdhOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyAr
MTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3QsIEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0
IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5k
IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxp
bnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihlbmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0
ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRp
Y19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0
YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5ieXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2Rh
dGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0RhdGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcs
OCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hv
dWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVz
b3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJj
ZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5h
ZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYo
KSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEyYTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2
ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUz
LDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygp
OwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJh
ZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2RmZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5
MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3By
YWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJl
ZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
OjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291
cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVu
dCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQcml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQ
cml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0
UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJu
IG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVBy
aXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZm
ZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgbmV3U291cmNlQnVm
ZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3RhbmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91
dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7CisgICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1
ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1Nv
dXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggODMwMGRjM2I2ZTM5ZThj
YWIxNDVhZWJhMjE3NmU5ODExZGZjOTg3MS4uZjE3NjI2MjM0YjliNWEwYWRlOGMyNzU0N2E0NDY1
N2E0ODJhY2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJj
ZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYTk5ZmViN2Y2NTNj
OTkxMTZkMGYzMzllYzM3NzVmYzIwY2VmMGJlZC4uMWM1NjYzNjYwZDlhZWRjYzg5ZTZiNTIzM2I4
ZmM0YWIzZDZlZDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQzMCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBN
ZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVm
PE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAg
ICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0
cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5
ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwgQ0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXIt
PmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJl
bnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlm
IChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1
YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0g
ICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9U
cmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0g
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7
CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAg
ICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAg
ICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAg
ICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwot
ICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBh
dWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0
cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAg
ICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0
byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0
ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5
UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJh
Y2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBw
ZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBh
OTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1
ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQy
LDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJl
bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0
ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA4MGNmYzRmYWMzNDVjOTJlY2Q2
MTczN2ZjOTI1NGRjZDhiNzU1YmY4Li45MWRiNjU0MWM0YjEyM2FlYjM0NmVhMzkyYWUwNDM4NDBk
MjQzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9s
bGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAq
IG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxlR3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3Qg
SW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4g
VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwg
VGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBt
X3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVS
ZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNv
bXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGls
ZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9u
KHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKaW5kZXggYWUxOWI4YzUxNzFmZDU3NDFhNTUx
NWY3NmE2OTg4NjY2MmZhZjA3Yy4uZGI5ZDQ1MzEwN2JkNDkwMDUxNjUyMGQ1YTA2NzUyMGFjMjY2
YTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIg
ZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVy
YWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIo
Y29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3Jl
YXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGls
ZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNG
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkxYWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgw
ZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMzYzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJU
cmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVy
biBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0
ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXll
clRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlmICghaG9zdCkgewogICAgICAgICBhdmFpbGFi
bGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+
IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8
Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
KCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwog
ICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5
ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlh
OWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNjMjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZk
ZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBA
IFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2
aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCog
cHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0
ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAg
ICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAg
ICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigpOwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1
ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5
QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5wdHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVs
dCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10
bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1
ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZlci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDk0NzY4ZGMxYTkyYTJmNjRi
ZjJjZTIxMjY4ODE0YWEyOWEwOWY2Y2YuLmRlNzhkYjYwN2ZhMTFmN2E1OGRlZmY0YTk4MjQyM2Ji
OGJhOGRkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAgICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVv
KQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNl
TWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAg
ICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAg
IG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgr
Kywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNr
LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdl
dCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJV
bmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5k
YXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQp
OworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9
PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFj
ayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1f
dmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3Bs
YXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZh
bGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVhbXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1h
a2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwog
ICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlv
VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwogICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9U
cmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJh
Y2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAg
ICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICBtX3BsYXll
ci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFk
ZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRy
YWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21pc3Np
bmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFs
bF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2Fs
bGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6
Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBN
ZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1Bs
dWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJh
Y2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3Jl
YXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdp
bkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJnb3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxh
dGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxheWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVz
c2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVs
aW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNz
aW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxi
YWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2Vf
Z2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2Ny
aXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSks
IFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxi
YWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJv
bVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0Uo
R1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBz
ZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0
YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBt
dC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAgaWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0g
MHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBB
dG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1iZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAg
ICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRy
YWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisg
ICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAog
ICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFj
a3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsK
IAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2lu
LT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBl
bGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4z
NTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5YzhhNTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyAr
ODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5C
ZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2Ny
aXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7
CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6
OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKKyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VH
U3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdl
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5k
ZXggMDI2YTIwNTczZWMzMmFkYjJhM2JjOGE2ODYwMjNlYTgwYWQ4MzEwOC4uZDA5MjkyMGMyNmJk
NjBlOTgzYmZhMTQzNjZkNTYzOWVmZmZjZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5r
TmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBX
ZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9w
cmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJD
b3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVz
ZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAgICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNr
SWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJlc2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAog
ICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBA
IC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShH
UmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0
c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQnVm
ZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgqbWVkaWFTYW1wbGUpOworICAgIG1fc291cmNl
QnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAK
IHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3Rl
Y3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApp
bmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQy
MDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29s
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAx
Nik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zm
c2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5yZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBA
QCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZp
ZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgICAgICAgICAgYXV0byYgY3VycmVudEtleUlE
ID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAgICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7
CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9m
ZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICghcGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgb2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAg
bWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBhcnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAg
ICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlm
IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCA8IGRhdGFTaXplKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRhID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9m
ZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBhcnNlZERhdGEpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0
YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzll
ZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBi
OWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBA
QCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZm
ZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYpOwotICAgIGlmICgha2V5SURC
dWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSAxNjsKIAogICAg
IG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
Y3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdmYzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3
NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0
aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBj
b25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlv
bnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09w
IDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9t
T3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFw
cGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNj
NThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNkZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBA
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1h
cFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCks
IG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3Rh
dGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0
dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0
dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdU
Rk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdhNThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0
ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0
aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlmIChibGVuZGVkT3BlcmF0aW9uKQogICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRp
dHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRp
b24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlv
bnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlP
cGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5
T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChm
cm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24p
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4
NjBkYTM4NjM4ZWY1MmE5MGVkMWZkODliNTJkZWU5NjU0MzAxNTNjLi4wNmMwYTE5ZjMwZDM5ZDE5
MTlkMmI0Y2ZkNDFkNDQ3ZWMwNTQyMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVj
b2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEg
c2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhN
RTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2Ug
YW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5n
RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFn
ZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOwotICAg
IG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZl
ZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5k
YXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnku
bV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0
YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTgu
LjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJkNDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAt
OTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9u
Qm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdo
aWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1
YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVr
VHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAgICAgICBh
dXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94
OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkp
OwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tz
LmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAppbmRleCAyYThiMjRiZDJmOTIxZTFjMWYzNTAwMjIyNzdhODMzODdlYzM3YWZlLi40
MjU4ODk3YmU2YmUzOTExZTYwYmVkYWMxMDFmMzNlMDk5YmNkMTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNh
bXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAK
IGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNy
ZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tN
ZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlw
dGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlh
RGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAg
Y2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlv
biB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94OwogfTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJl
bnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBA
IHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBy
ZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAg
ICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1f
aW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6
OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7
CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5w
dHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5
cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlw
ZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25C
b3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0aW9uQm94IGluaXRCb3gg
PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJ
bml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5w
dHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRC
b3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7
Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVm
ZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1Nh
bXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1w
bGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKaW5kZXggYjNmOGFmNDJhMmY0MmFlYjllZGVjZTZhYjMzYjVlODdhNTI3MjUyOS4u
MTU3NjAwNTNjYmYwZjA1Mjk0MzM4YzQ3ZjI2MTE1MjNiYTk4MjRjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMg
U291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBz
dGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNl
UHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAg
ICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tU
cmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkwZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0
YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRjNjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01
Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1Ry
YWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRU
cmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxN
b2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmly
dHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0
b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAg
Y2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJp
dmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+
IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1v
Y2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJh
Y2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9j
a1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZDdjMWU1ZmFhMGRlNTA3ODNiZmI0NzcyNGJmNTk5MTlh
YjY2ZjkxZC4uYzQ5ZjQyMTc4MTIwYTRjM2QyYjRkMzAyNjg0YjJkODNhZjFmNDZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3
IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRh
OjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5t
X2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRh
OworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRleCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZl
NGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUwZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9ic2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9y
YWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNI
VFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29v
a2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3RvcmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9i
c2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVT
dG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcxYzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUx
Y2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdl
T2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3Jh
Z2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitS
ZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShO
U0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQog
CiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29r
aWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFh
OTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEwMTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3
NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1l
c3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2Rp
ZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0g
YmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNl
RXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAg
ICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXItPmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBz
b3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAgICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXpl
KCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdl
LT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRl
cy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5h
bWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5
cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAxNjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFk
YmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBo
ZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0
aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsxNjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25E
aWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAK
ICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBz
dGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3Rh
dGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENT
dHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBj
cmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9
CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5EaWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXgg
YWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBk
Y2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdp
bihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBv
cHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1l
bnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpw
b3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3Bv
cHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXgg
ZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEzY2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNm
Zjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFy
Y2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJv
b2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9w
dXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFm
MGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4
ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBA
IC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJS
YWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFw
cGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9j
dW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAg
YXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8
aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5
bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBkb2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZh
Y3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAw
LCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFp
bnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25z
dCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9m
ZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmlu
Z1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4
ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3Io
MHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41
NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJv
a2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0
LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5Mzcs
MTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBwYWludEluZm8uY29udGV4dCgpLmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1
cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5l
clJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFy
SGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7Cisg
ICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFy
RGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAw
LjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBw
ZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRl
eHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24s
IHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwy
MCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9n
cmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jl
c3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAgICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3Np
dGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJl
Y3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkg
fSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50
OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3Np
dGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcsIDI0NykpOwogICAgICAgICBiYXJHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFy
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwg
MjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1Nywg
MTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1v
dmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3Jh
ZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmlu
Z1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ry
b2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUsIENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7
CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwg
MTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VH
cmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFk
aWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRo
OwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0
b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxl
bmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1l
bnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8g
YW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0
ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3Ro
Qm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAKQEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0
aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVu
ZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5m
by5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWljb25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAg
YXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0p
OworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJh
YjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2
OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3Jp
dGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5n
IGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAg
ICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAgICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVt
bXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIg
PSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1teUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBk
dW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJl
Y3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRl
ciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVtbXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAg
ICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1
Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIy
ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9N
V2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxT
dG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJl
YT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdp
bmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01X
aW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFn
ZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VB
cmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFy
ZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFT
U0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1fc3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vz
c0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5
ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAy
ZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0
eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVhdGUoRE9NV2luZG93Jiwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShE
T01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYpOwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdl
IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1
YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9z
dG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2UoRE9NV2luZG93Jiwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBTdG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9y
YWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFy
ZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2
NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNw
YWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBS
ZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2Up
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMw
OGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmLi41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJh
YjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1v
dmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJl
dHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBhZ2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50
IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3
ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZmLi5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRj
MjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAot
ICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBS
ZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8
U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRk
UGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDgg
QEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkg
PSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9y
aWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2Vz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMDI1Yjk2YmJjYjQ0NDg2MTFjNzM0
NWIwY2RmYzdhMTBkOTZjZTUwNi4uODVmNmZmMTJmMzg1NWU3MmYzNTE1Y2YzMjdiNTM5YjVmM2Qw
MjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAg
UmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlmICghYXR0cmlidXRlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwog
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1
dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIxNjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFh
NTZiLi5jMjQxZTMwZTM5ZTY1MDhhMjliNzU0Yzg3ODZhOWQ4ZjgwZTNhYzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVC
bGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6
OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVm
ZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZl
Q2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggNTE1ZDMyZmZi
Y2Q3ZTUzYTdiYjRmNThmZGFiODI1YmY2MWM5N2I3OS4uNzUxM2FjZTUxNzkwZjg2ZDhlOWNmOGUw
YzgxNjQ2MjkwNzIzMzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWwKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5
cGUsIGZpbHRlclZhbHVlcyk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVh
dGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmlu
ZGV4IDU3ZmFmM2I0NjMwMDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjUyYmU5NzEyYmM1
ZjYxYWI0N2UyMjY4MDAwZjJiMTk2ODBmNjY5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksNyArODksNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxT
VkdGRUZ1bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAg
Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6
Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0
ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAKaW5kZXggYTEwZTNhNzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4u
ZDM4NTU3NDc3YzE2ODliMjE4YWJkYzlmMGE5MTYzZjE0OTVjYmIzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGsz
KCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIs
IHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogICAgIEZpbHRlckVmZmVj
dFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1
dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5w
dXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKaW5kZXggYjliMDIzYWMwMDZjMDdlY2NkZDA3Nzc0OWQyNzI1OTIzZDJiZmQwNC4u
MDY3ZjEyY2I3MDM5ODJjN2VkMTQyODRmMDRjNjBkMzdjN2UxZDljOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4OSw3
ICsxODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSBy
ZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5
bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1
cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2Vy
bmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0
ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUo
KSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5n
dGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
LmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAx
ZGY2MDdjZjBiMGJkOTZhZDc3MWRiNWZmYWZkNDRmNTMuLjE0Zjc3ZjlmNmY4ODEzMTk2NGJiNDJl
YTI5NWQ5MTM3ZTY5Y2RkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXIKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2Vt
ZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0
b3IoKSwgc2NhbGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxl
KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRi
YjhlZjhjNTliLi5kNTRlNWYyYjY4NWU5OTM1NzlhZjk1MTkzNzc2NWZhMzRlYTNiMWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQs
NyArMTM0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qg
PSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0
aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBG
RURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9u
WSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA5MzMxODdlNmQw
NDlhNGZlZjdkNzE0ZTZhMzk1NjUxMTQxYTRjYTAwLi4zMjBmOTIxZmUwYWZiZWUyODJmNGRmNzg3
NzNkZWJjYzc4ODEyYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGRE
ZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJs
dXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdl
TW9kZSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAg
IHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
ZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNw
cAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkxYjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5mYjkyYTM1
ZThkNDQwMzc4YzIwYzBjNjI1ODVjN2I1ZWE5ODRkMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVt
ZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0
VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3Ig
KGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4o
KnRoaXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAKaW5kZXggZmNiYzYzYjYyZTZlMTA2ZWJiNWQ1NjIwOWUzZjUyOTlkOGIwYjZmYy4uZTNlODFh
ZmUxYWY3ZjEyNmU0ZDliMDdlODAzOWMyZThhYjhkODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgaWYgKHhSYWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywg
eVJhZGl1cyk7CisgICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIs
IHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5ODRmNDFhNWJhMmZhNjIz
NTE2YmJmNzA0MWFhZGJkMDIyMi4uYzQwMmU0MDNlYjJiOTQ0Mzk4OGM4YjBlYTk0OWIzN2ZkMDI0
ZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlmICghaW5wdXQxKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9
IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2ZlNy4uOWU0ZDdmZDQyN2Zj
YjFkMGMxYmJjZWE0MzQ1ZDVlYmU5NWRjZTUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJl
ci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5z
dmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNl
U2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVu
aXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29s
b3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQo
KSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdo
dFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAg
ICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cAppbmRleCAzZjM4NzlkN2U2NmE4YzFkZGY5OTIzMjYzYjdmZTAwNjI1NDg5MjQ0Li5hZTBkMTkx
OTgwNTdiOGYyNDIyZjFiYmZjNTE4MGY1M2QwZWE1NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgICBh
dXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFjMTVh
ZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0NzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYm
Li4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxHQ09i
c2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBjb25z
dCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4uOTkw
MTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNMVFBy
b2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5z
ZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRl
eHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5n
RnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2Rlcikp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUwYTAy
Y2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9v
bCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYg
Y2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
UmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3Jl
YXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAg
YXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0
RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0gcGFy
c2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwgZmlu
aXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2ggdGhl
IG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZy
YWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBh
cnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5ODNj
YzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyArNDks
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlvbiog
Y3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZiZjVm
MjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVhMmQ2
MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVjdGlv
bj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBmYTMz
Y2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFlZWM0
NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRNZXNz
YWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJvZHkK
IHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkgPSBX
ZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxmLl9j
b25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgpKTsK
KyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRl
KG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VO
YW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0aW9u
JilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3Zi4u
MTJiZjUzOTVmZmI3N2M3YWJkZGFmMjkwY2RjZmNhOTZhZjkxNDBmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzExMzQs
NyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0cjsK
ICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNuYXBz
aG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0KCks
IG5pbCk7CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNo
b3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAg
ICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFjZTo6
YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21wcmVz
c2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZpZXdT
bmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAg
IGF1dG8gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRy
KTsKICAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShz
dXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hv
dF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkg
ewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAgICAgdmll
d1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwpAQCAtNTkw
Miw3ICs1OTAyLDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nv
b3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBi
aXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICgh
Yml0bWFwKSB7CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEz
N2FhY2M5NWIyNWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBX
ZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVz
dGFtcCwgZG91YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQ
b3NpdGlvbiB7IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdp
dHVkZSwgYWNjdXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsK
ICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2Nh
dGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOwor
ICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92
ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRD
aGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlcjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICov
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMz
Li5iY2U4MDU4ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2Nl
cnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVy
bl9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNl
cnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+
KDApKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJv
bVVURjgoaG9zdCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNh
dGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0
aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5w
cm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRp
ZmljYXRlSW5mby5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZk
Y2EwMDU2Y2M2Y2RkZjI3Y2Y2ZDcyZDExNjFkMS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcx
NjU4YzUwZjZiODQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5j
b2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDY3ZjEyMjJhNzQ2YzY3MmM2ODdkMmFmYmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5
ZTFlODI4MDRlMTg5MWZkNTQ5OTIwZjhkN2I2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRp
b25TZXNzaW9uQ29jb2EubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aW1hZ2VEYXRhSGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUw
NmI2Mjc2NTEwYjczNDg1ZmNkNDY2MmVmNDgxLi41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNl
NGFlNTEzMmZiOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNv
bnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRh
dGVJbmZvLnZpZXdTaXplKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7Cisg
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1h
cEhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0
ZGYxODA0M2QzYjVhNjRiMTBkNGMyZTYzNzQwZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2
YjU2MGExNjc5NmJhNGJiNGI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFn
ZVByb3h5JiBwYQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJl
Y292ZXJ5QXR0ZW1wdGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJh
bWVQcm94eSwgTlNFcnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFt
ZUhhbmRsZT4gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQ
cm94eS5mcmFtZUlEKCkpOworICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxl
OjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0
dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVI
YW5kbGUpIHVybFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5n
VVJMU3RyaW5nRXJyb3JLZXldXSk7CisgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0
TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJs
U3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdF
cnJvcktleV1dKTsKIAogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5n
ZXQoKSwgX1dLUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmgKaW5kZXggOWQ3NzQxMGMwOWMxYjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4u
NjRhMzVmN2U4NzlkYjAzZGMwYmY4NzcyMjE0NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBj
bGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4g
Y3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbQppbmRleCA0YzhmY2JmOGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3
MDY3Li44Njc3YTA0MWM3MGQxMWI5NzY5OGM0N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tCkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQ6OnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQog
CiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpj
cmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQorUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdl
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
KHBhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkocGFnZSkpOwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oCmluZGV4IGE5Mjk5ZjFiNzQ2OWIwM2FkMjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5
NjhiMzUyOWUwYzM1NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
IGZpbmFsCiAKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZD
b3VudGVkPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Jik7CisgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0
ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0
dWFsIH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUy
MTJmZjM1NjEyNjQyNTZkMTYuLjRjZjMwYmYzMzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAj
cHJhZ21hIG1hcmsgLSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHko
cGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSkpOwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpp
bmRleCAxNzEwZGYxOWM0MjY1OGY2ZjU5YzdjMTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5
OTZiMWVmOWQ0YzFhOTliMTcwYmY3NjIzZDM2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5
LDggKzE1OSw4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
c2l6ZSk7Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hh
bmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZv
clR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IHVpbnQ2NF90JiBudW1iZXJPZkZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAxNTM2NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5
YTMxM2IyLi5lNDYzYWM5OTRiYjlmOGFhYzQ0ZmU4MjkzOGJlMTM2MTZiYjA1OTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCw3ICs0
Mzc0LDcgQEAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNo
b3QoKQogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8Vmlld1NuYXBzaG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1v
dmUoc3VyZmFjZSkpOworICAgIGF1dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShX
VEZNb3ZlKHN1cmZhY2UpKTsKICAgICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKICAg
ICByZXR1cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRi
YjdjZWY3MjVhOTc5ZDgwZGNlZS4uODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2
OGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWFwLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6
On5Eb3dubG9hZFByb3h5TWFwKCkKIAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6
Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxE
b3dubG9hZFByb3h5PiBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlz
LCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93
bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25s
b2FkUHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNv
dXJjZVJlcXVlc3QpOworICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9h
ZElEKCksIGRvd25sb2FkUHJveHkuY29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFBy
b3h5KTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxv
YWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElE
KCkuZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3du
bG9hZFByb3h5LmdldCgpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2
b2lkIERvd25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93
bmxvYWRQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRl
eCA3OTY1ODY4YmUwNDMzOWU3ODQ5ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3
MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCkBAIC05NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQog
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3Rp
ZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8
V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0
aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9u
OjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJp
bmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2
NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQo
KSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQo
Z2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmlj
YXRpb25zLnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlm
aWNhdGlvbklELCBub3RpZmljYXRpb24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdl
LCAqbm90aWZpY2F0aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklE
UGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5j
b3B5UmVmKCkpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24u
Z2V0KCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDI1YzljNmNmNTZjZjI1NDM0
ODc2ZmRiZDE2NmYxNGMwOGY4MTUzNC4uNDcwODgxMDBlZTMxZDA3YTY2ZDdlOTE1OGU0OTk1OGI4
ZGY4NTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0z
NjQ5LDEwICszNjQ5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQogCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0
ZUZyYW1lKGZyYW1lSUQpKTsKICAgICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3Vi
RnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8g
QWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZy
YW1lQ3JlYXRlZChmcmFtZUlELCAqc3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVh
dGVkKGZyYW1lSUQsIHN1YkZyYW1lLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYg
d2luZG93SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBmYTQzYTNkMWU3ODMwOTJiYjdjMDIxODE0N2ZkMTY0ZjgyN2IwM2MwLi45ZTNm
NDA0YmQ2ZTZhYmIzYWIyNDM5YWJhNzI3YzZiNWMzOWJlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5j
dGlvbjx2b2lkIChBUEk6OgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0
YXRpc3RpY3NSZXF1ZXN0PiByZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0
aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAg
YXV0byByZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJh
Y2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlz
dGljc01hc2sgJiBTdGF0aXN0aWNzUmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1
ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIy
LDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlz
dGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5n
U3RhdGlzdGljcyhyZXF1ZXN0LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRh
cjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRp
cGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0
TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhl
IE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVl
c3QoKTsKLSAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsK
KyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgp
OworICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0
d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwNjM0MzI0OWJhYTcyNWFmYjZjYjQ0NGM1
NTIzMjUzZDE3ZTA4MGJjLi5lNmI0NDRlOTE0MjdiOTZjYWE4ODQzYWViM2ZhMjI3Y2RkN2I1NGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0
ODcsOCBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3Jl
YXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1By
ZXdhcm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGlu
aXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKIAotICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1
ZXN0Kik7Ci0gICAgdm9pZCByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1Jl
cXVlc3QqKTsKKyAgICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNz
UmVxdWVzdCYpOworICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3Rp
Y3NSZXF1ZXN0Jik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHAKaW5kZXggNWUzZmI2NWMyMzBkYmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUx
NGIwMzdjZThmODgwNDk4YWZlMTJhMWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5j
cHAKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRh
aWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3Np
bmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBk
ZXNjcmlwdGlvbik7Ci0gICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRv
IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Ojpj
cmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgp
LmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QocmVxdWVzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJl
MTAxNDQyN2Y4NjMuLjkyZWFkMDQ1ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93
KCkKIHsKICAgICBBU1NFUlQoIW1fd2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2Vz
OjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShE
RVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdl
YiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAg
ICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJl
ZmVyZW5jZXMtPnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUp
OwogI2VuZGlmCi0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdy
b3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikp
OworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFn
ZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmln
dXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9y
TGV2ZWxGb3JQYWdlKG51bGxwdHIpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZl
cmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFn
ZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZl
cmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFn
ZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5z
cGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50
ZXIoR19PQkpFQ1QobV93ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZp
ZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0
b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwCmluZGV4IGI2NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQz
NGMuLmNhMTg3YTY0MjM0MTEyZTg1NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApA
QCAtMTM4LDcgKzEzOCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+
IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIu
IiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpj
cmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZF
TE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJ
bnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAg
cHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIg
KzE0NiwxMiBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1
bnRpbWVGbGFncyh7CiAgICAgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
ID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBh
Z2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6
OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdl
KCkpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmlu
c3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JW
aWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRp
b24ucHRyKCkpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5z
cGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7
CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxM
QkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBj
MWNmNTg3NThlY2JhOTg1N2EwYTYxYWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2Qy
YjNiNTVjZWMyMGUxNzNjMmZiNGIxM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYg
KFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0p
IHsKICAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUt
PnVybCgpKTsKICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0g
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVx
dWVzdC5vcmlnaW4uZ2V0KCkpKTsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVz
dEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7
CisgICAgICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAg
ICAgICAgICAgICBXS1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQo
KTsKICAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpm
cmFtZUluZm8uZ2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6
ZWQpIHsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KaW5kZXggMTEyMzVhMTI3ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEz
MS4uOWZlZmZkZGY0MTA0MTJlNzZkMmMwYzNkZmQ2N2JmMWUxYmQyYjBiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkg
KzM4NCw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpE
cmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFy
Y2hpdmVCdWZmZXIpCiB7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoKTsKKyAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGlt
YWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0
aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFt
ZSk7CisgICAgbV9pbXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmls
ZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5n
ZXQoKSwgcGFzdGVib2FyZE5hbWUpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVT
ZWN1cmVJbnB1dFN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmluZGV4IGNiZmUzMGU5ZTBiZTgzMjE1MTgxOTYzNTVm
Nzc5ODA4YjgyNGYyZjYuLjM3OThiZmJiNWE5YzQxNGY2MGZkYzNjYmVhOWM3YzBkYjNlMDIzMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclBy
b3h5V2luLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVj
dGVkUGFnZSgpKTsKIAotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBX
ZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsK
KyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwg
IldlYktpdDIuIiwgIldlYktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAg
IC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1
ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBh
Z2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkK
ICNlbmRpZgogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
dHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsK
LSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0
ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsK
KyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VH
cm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNv
bmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3Bl
Y3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHBy
ZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBh
Z2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHBy
ZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBh
Z2VHcm91cC5wdHIoKSk7CiAKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlv
bkNsaWVudCA9IHsKICAgICAgICAgeyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bQppbmRleCA4MjUwOTAxNzkwMGY0Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNl
YjFiYjg3MzJlYTVkM2I1NDI0YzUzMDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFu
Z2UubW0KQEAgLTUwLDggKzUwLDggQEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFu
Z2UqKWltcGwKIAogLSAoaWQpaW5pdFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3Vt
ZW50CiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdl
OjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxm
ID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdl
YkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQp
KTsKKyAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYg
KCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNm
YWY0NTBlN2NhZTZmLi44YzI5NWJhZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEz
OCw3ICsxMzgsNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6
OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2lu
Z1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2Fs
ZShzY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3Rv
cmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7
IH0pOworICAgIGF1dG8gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZh
MTU3ODhiNS4uOTUxMjMwMmIyODJlNDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4
ICsxNjgsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2Fy
ZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0g
OiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+
Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVu
ZChidWZmZXIpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERh
dGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4
YzlmZTJkMzg3NDA2NDg5ZDY2M2I4ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4
OThjYTliMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAK
QEAgLTc4LDEwICs3OCwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9j
bGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0
byBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29y
ZUhpdFRlc3RSZXN1bHQpOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAg
ICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0
VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxl
bWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlm
aWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKaW5kZXggYzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJi
NzFhMC4uODhjMGEyZDljNjMxMmQyYzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcApAQCAtNzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVT
aXplID0gbV9wbHVnaW5TaXplOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNT
Y2FsZUZhY3RvcigpKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Cisg
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5n
U3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxs
aW5nIGludG8gV0tTSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KaW5kZXggYzJjYmEwOTBmYmJkYjJkOWExOTBiMWFmZjhmZTM1NWNkNmZj
MzI2NC4uMDE5OWI4NGY4ZjRlMjhmNzY5YTc0MjE5NTE4ODkxMzFkYzg3NzRlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05
NDMsNyArOTQzLDcgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAg
UmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQ
VmVyc2lvbjooTlNTdHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJz
XSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdl
dCgpKTsKIAotICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3Vy
Y2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVk
UmVzcG9uc2UpOworICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0
aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAg
cGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJl
c291cmNlKHJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcs
NyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJ
bnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5z
Y2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNp
emUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
Y29udGVudHNTY2FsZUZhY3RvciwgLWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEg
KzE4NTMsNyBAQCB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmlu
ZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBwbGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAg
ICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3Rl
Ym9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdl
Q291bnQpLCAwKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNo
YXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAK
aW5kZXggMzE0NzlhZmMyOWFkZjRhYzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQy
Mzc4OTA0YjM0N2QwZDNhNmY0NjdlOTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
CiAgICAgaWYgKCFJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgIGF1dG8gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIs
IHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwog
CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25z
TXV0ZXgpOwpAQCAtOTQsNyArOTQsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAg
ICBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ucHRyKCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpy
ZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNh
YmI2YmM5MWQxNi4uZDY1MDUzNThkYjZmMzVjODEyMzBjYWYxOWQ5OWY0YzRjMDFiNGY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5Ojpz
bmFwc2hvdCgpCiAgICAgaWYgKHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RC
dWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKKyAg
ICBhdXRvIHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RT
dG9yZUhhbmRsZSk7CiAgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVjOTkx
MTIyZDA4NDNkYWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4NTI3
MDA2Y2VlYmM5YzM3MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZpZXc6
OnBlcmZvcm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAgLy8g
VGhpcyByZXF1ZXN0IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAgICBS
ZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCBy
ZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJlYW0o
c3RyZWFtLmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAg
IGFkZFN0cmVhbShzdHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3ZmFm
Nzg2MjU1Li43OGU2NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlCiAgICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwog
ICAgIGF1dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsK
ICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRl
bnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2Vj
dXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBj
dXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwg
ZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlk
RXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0YWJh
c2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdp
blVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7
CiAKICAgICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAg
ICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBpZiAo
bV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRl
ZCkpCisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3Bh
Z2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBkMDVmYzk5NmMxZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0YTA1
OWY5ZWY3ODFlMTQ2MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTc2NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBh
dXRvIGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJh
bWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1
bmRsZSBjbGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1l
LCB1c2VyRGF0YSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVOYW1l
LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2UpIHsKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNmMGJm
YWYzNGY2NGRhOGIzMTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYyOTk0
MjNiN2NiOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xOTUs
NyArMTk1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBh
dGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChw
YXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXku
c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0p
KSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlhYzIz
ZDhkMTNlYmRmOTNjNjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1ZWZm
ZjI0NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9T
aGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFj
ZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoaW1hZ2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGlj
c0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQppbmRleCBmZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5mODdk
OTM0NDNmN2M1OGE4MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUK
ICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0K
IAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShlbGVtZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEzOGNk
MmJmNjM3OTRjOGU5ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3NTJl
ZjgxMWExMjQ1ZWI1NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCBE
aWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShG
cmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUp
CiAgICAgICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVT
bmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJbmRp
Y2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFu
Z2UsIGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1dG8g
dGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5k
aWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0SW5k
aWNhdG9yKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZv
KGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRl
eCA3ODI0ZTVjZjcxYjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4NmY0
MmEwMWNmNDhlNWRmNjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBA
QCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQog
ICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
ICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShi
aXRtYXBTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5k
Q29udHJvbGxlci5jcHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMwOTI5
ZDFmMy4uNjNjYzI4MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApA
QCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogCiBi
b29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZy
YW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAgICBS
ZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0
aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNh
dG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmlt
YXRlID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGljYXRv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYxNzZk
NjIwYjQ1ODlkYzM2NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJlZWE1
NWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0g
YmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5w
YWdlSUQoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3Jl
Rmx1c2hlciwgcGFnZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2Jh
Y2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURd
IHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25v
dG9uaWNUaW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIyNGI2
NDQ2ZDA1MjdkZjg2NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFiNzE5
Yjc5ODJjMDJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRl
ckRldGFjaGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJl
dGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJv
b2wgeworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZy
YW1lKCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1l
KSAtPiBib29sIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGJlNmJlZmI4MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3Y2M4
NDVlNTUzMmMzYjIwNmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQgV2Vi
UGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIEludFBvaW50IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAvLyBG
SVhNRTogU2V0IG1vZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IHNldCBJc1NpbXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2
ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9z
ZWQ6OlllcywKKyAgICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1l
Ojpub3coKSwgbnVsbHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBvaW50
LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIpOwog
Ci0gICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpN
YXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9j
dW1lbnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRyKCks
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZl
cnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdl
YgogCiAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNI
YW5kbGVBcnJheVtpXSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQogICAgICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9h
ZC5hcHBlbmQoZXh0ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXgg
MGM4NGY2NGM4YzYzZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5ZmFk
MDE3MWMxODgzZjAwY2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQsNyAr
OTQsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBz
ZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0ZpbmRJ
bmRpY2F0b3IgPSBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4
dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNl
bGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNl
bnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4s
IHRvdGFsVmVydGljYWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4
dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpO
b25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2lu
KSk7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggOWRmNjE4YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uNWQ1NjUyMmI1
OTAzZGE3NTdhYzU1Y2E4NDg1NGY2MDkwNmM5ZmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsNyArMTgyMCw3
IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5w
cmV2aW91cygpOwogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24g
PSBzdGFydE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zdGFydCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkp
OwogCiAgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkg
IT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRp
Y2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dElu
ZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3Bl
Y3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJ
bmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4
UmFuZ2VzIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0
Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0
b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2Vz
IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNj
YWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKQEAgLTIxNTYsNyArMjE1
Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJ
ZGVudGlmaWVyKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURl
dGVjdG9yUmVzdWx0cyA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlv
blJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpy
ZXF1aXJlc0V4dGVuZGVkQ29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+
ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3Jk
Qm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRl
ZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRl
eHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlD
aGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9u
KCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQp
LmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsy
MTgxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdl
cyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlv
bi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24p
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRC
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNp
emUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZh
MjRjMWMxYmRkMTU2ZjJkM2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1Zjkz
ZjY0ZTQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAg
LTg1MCw3ICs4NTAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21t
aXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5z
Y2FsZShzY2FsZSk7CiAKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmll
d0FuaW1hdGlvbkNBID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFu
c2Zvcm0iKTsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1h
dGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRp
b25DQS5nZXQoKSk7CisgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICBy
ZW5kZXJWaWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gc2hhZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgRmxvYXRQb2ludAogICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9v
bVRvUGFnZShzY2FsZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24p
OworICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0
IiwgcmVuZGVyVmlld0FuaW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikg
ewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JG
cmFtZShmcmFtZVZpZXcsIHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVm
ZTllNGNiYjVkNzI2ZmYyMjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlk
MjJmNmI2MDQ0NGIxODA2MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwy
NCArNDAsMjQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRy
LCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBo
ZW1lcmFsTG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1S
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5
dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3Rv
cmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0K
IAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5
dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5
dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3Rv
cmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1
b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3Jp
Z2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1h
cCkKICAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxT
dG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUg
PT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFs
TG9jYWxTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBj
bGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBw
dWJsaWMgU3RvcmFnZUFyZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7
CiB9OwogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVy
YWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmln
aW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7
CiAgICAgYXV0byYgc2xvdCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3Vy
aXR5T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAg
ICAgICBzbG90ID0gU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpj
cmVhdGUoc2VjdXJpdHlPcmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90
LmdldCgpOworICAgIEFTU0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQ
YWdlKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBh
Z2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAt
MjAyLDcgKzIwMiw3IEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwg
bV9xdW90YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5l
d05hbWVzcGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VU
eXBlLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90
YUluQnl0ZXMpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9y
YWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7
CiAKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQog
ICAgICAgICBuZXdOYW1lc3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0
ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEz
YTIyZGNiZDIxYjY3NDBlNDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0
N2Q3MmVlNWEwNjU1ZTY3NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCAr
MzksMTAgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGlj
IFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0
b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdl
TmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5
cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBv
dmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVw
aGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jik7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VB
cmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2Vi
Q29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0
b3JhZ2VOYW1lc3BhY2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmlu
ZGV4IDQ2MmRlODZjNDkwMDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0
YWQ4NzI2NTdlYWY4NDk2ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90
LCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
CiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0
T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllcikKIHsKICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
cygpLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNs
b3QpCi0gICAgICAgIHJldHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBS
ZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgPSBhZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIp
KTsKLSAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8g
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoaWRlbnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIucHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpA
QCAtNjUsMjIgKzY1LDIyIEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJl
bW92ZShtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6
ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3Rh
KQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFn
ZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVs
T3JpZ2luLCBxdW90YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4
IDhlYTI1ZTZlNzUwOWViMmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgw
Mzg5NjgxMTRlZjk5YWMyNWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oCkBAIC0zMSwxNiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWlu
dDY0X3QgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdl
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJp
ZGU7CiAKICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQppbmRleCBjZjMwODViODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2
MzI1MmJmZTRmYThjMWUxMjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAt
MjAyLDkgKzIwMiw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgp
CiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElk
KQogewotICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwg
PSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2Rl
bC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Cisg
ICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggN2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4u
NWQ2MTEwYjc5MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KQEAgLTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52
YWxpZGF0ZSgpCiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dD4gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsK
KyAgICBhdXRvIG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSgpOworICAgIGF1dG8gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdl
ci0+YWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRM
YXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
SG9zdGluZ1Byb2Nlc3MoKSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAg
ICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
aW5kZXggMDE4MTVjMTNhYzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uODZkYjJkODcx
OGE1NGIyZjZjMjY1M2Y5M2MwYWFlOWIyYjlmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMs
MzEgQEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAg
ICAgIGNsb3NlKCk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVy
YWxMb2NhbCk7CiAKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFj
ZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3Bh
dGgsIG1fcXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAg
Zm9yIChhdXRvJiBpdGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNl
LT5tX3N0b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAog
ICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U3RvcmFn
ZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdl
QXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICAg
ICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICBzdG9yYWdlQXJl
YSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5j
TWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CiAgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2lu
LCBzdG9yYWdlQXJlYS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIHJldHVy
biBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5
NjY2MTYxMzcuLmM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CkBAIC01Nyw4ICs1Nyw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNl
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBx
dW90YSk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwor
ICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBs
Pj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3
N2M4ODRhYmQ5ZS4uODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQog
ICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3Rh
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkK
IHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsK
ICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5z
aWduZWQgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3
b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdn
eS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgKaW5kZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2Fi
Yi4uZTU4OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVh
bCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9z
ZUxvY2FsU3RvcmFnZSgpOwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlZpZXdHcm91cC5jcHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFh
NjIxM2I5ZC4uNjNjYWUyZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNw
cApAQCAtNDIsMTggKzQyLDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZp
ZXdHcm91cD4+JiB3ZWJWaWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0K
IAotUmVmUHRyPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVm
PFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAo
U3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCkpOwogCiAgICAgYXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1l
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAg
ICAgIHdlYlZpZXdHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkp
CisgICAgaWYgKCF3ZWJWaWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAg
ICAgICAgd2ViVmlld0dyb3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0Vt
cHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdl
YlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGg7CiAKLSAgICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmll
d0dyb3VwOwogfQogCiBXZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZp
ZXdHcm91cC5oCmluZGV4IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYu
LjRkNDEzN2NlMmFhYWMzYTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyAr
MzgsNyBAQCBPQkpDX0NMQVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91
cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdl
YlZpZXdHcm91cCogZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmNwcAppbmRleCBkMDg0OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5
YjFjY2MyNzJjMzQ3MjU5OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5jcHAKQEAgLTI2LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkp
KQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsK
IH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAg
cmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZv
aWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNo
UG9wdXBNZW51SU9TLmgKaW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5
YWY0Zi4uMGVmNDRiNDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNo
UG9wdXBNZW51SU9TLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9T
IDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsK
KyAgICBSZWY8UG9wdXBNZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBv
cHVwTWVudUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2
YjlhNWU2ODlmYzE5Yzg3Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMy
YTEzNjFmNjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBA
IC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRp
dmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aiA8IG1hcmtlckFsdGVybmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5T
TXV0YWJsZUFycmF5ICopKmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtl
ckFsdGVybmF0aXZlc1tqXSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3Rh
cnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+
ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICop
ZW5jbG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWFya2Vycy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1h
cmtlciogbWFya2VyID0gbWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSA8PSBvZmZzZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2Rl
LCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBu
b2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2Uu
cHRyKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2
NDk2YzJjNDQ2MDk5MmM1YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlm
MzRiOWMwOTYyOTNkYzM2Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUs
MTMgQEAgLSAodm9pZClzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAg
aWYgKCFVUkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVz
LAorICAgIGF1dG8gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBF
dmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVs
bHB0ciwgMSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRy
LCBNb3VzZUV2ZW50OjpJc1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZy
YW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUg
bWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwog
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQo
KSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIs
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6
QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZy
YW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0
cik7CisgICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxv
YWRSZXF1ZXN0KSwgZXZlbnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTS5tbQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2Fh
OGY0YWQ0Li4xYjZjODIyODU0YTA3ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdldFBy
ZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5
ICoqKXJlY3RzCiAgICAgUmVmPFJhbmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2RlKTsK
IAogICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgpLT5w
YWdlU2NhbGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRv
ciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9w
dGlvblRpZ2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5
Rml0Q29udGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9y
IHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9y
Q29tcGxleFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRl
eCAxZjMyZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li43NzRkMjFhOWZmODRm
MDFhM2MxNjliYTY3OTkyNTdhNDdjOTllZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgog
ICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQ
cm9wZXJ0eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlG
b3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwog
ICAgIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNlID0g
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3
LCBmdWxsRnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAgdWlu
dDMyX3QgcmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJuX3Jl
dHVybl90IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwgcmVx
dWVzdElELCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0
ZXNdKSksIFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAoa3Ig
PT0gTUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCmluZGV4IDg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4Yjdj
MzIuLmFiY2E2YmJlMzMwNTM1YTk4MmU2NDJkNGMyYTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJl
cXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0g
YW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxp
dmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9
IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAg
ICAKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBI
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMu
YWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBI
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMu
YWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAg
ICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1F
VHlwZTpAInRleHQvcGxhaW4iIApAQCAtNzk5LDEwICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwg
Y29uc3QgY2gKICAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5S
ZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQs
IHJlcXVlc3QpOworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQo
IW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChy
ZXF1ZXN0SUQsIHN0cmVhbSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJl
YW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KaW5kZXggOWE3NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4
MC4uMWQxZThhZWY2NzUyMzYxZjNlY2MwNDY1MDVkNDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1
Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAv
LyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRo
ZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2Vz
LgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0
IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAg
ICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmRO
b3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAg
ICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1J
TUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC0xNjc4LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxv
YWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3Qg
Y2hhciAqKWNUYQogICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQ
bHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAg
ICAgICAgIFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2VdOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJl
ZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURh
dGEpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAg
ICAgICBzdHJlYW1zLmFkZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBzdHJlYW1zLmFkZChzdHJl
YW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRi
OGQ5MTJkNTFmM2ZmYi4uMjM0NzgxYjBiZTg2YTRiZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5Q
dHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVj
dGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3Ip
LCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAg
ZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVj
dGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZWM4ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFk
MDY3NjJhNTY3ZC4uODQ2MGIwM2Y1MGM3YzJiMTNhMTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IGlmIChpc01haW5GcmFtZSAmJiBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1l
LT52aWV3KCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgIGNvcmVGcmFtZS0+c2V0Vmll
dyhudWxscHRyKTsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6
Y3JlYXRlKCpjb3JlRnJhbWUpOworICAgIGF1dG8gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0
ZSgqY29yZUZyYW1lKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoY29yZVZpZXcuY29weVJlZigp
KTsKIAogICAgIFttX3dlYkZyYW1lLmdldCgpIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1do
aWxlT2Zmc2NyZWVuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDdiOWJiODk5MDhhZTVjMWE2NTJlMzZjYzg4OWJlMDRlNTY1NGM5NDYuLjA0YmFj
NDViOTdmNTNhYWZlNzRiOGE4YzE4M2Q2YjFlMzQ3NWIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgLSAodm9p
ZClnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFk
YXRhczooTlNBcnJheSAqKikKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNl
dCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBu
b2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKICAgICAgICAgICAgIERPTVJhbmdlICpkb21SYW5n
ZSA9IGtpdChyYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtZXRh
ZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2
NDRjOWU3ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQwYzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTEzNDgsNyArMTM0OCw3IEBAIC0gKHZvaWQpX3dyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRU
eXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0
IEhUTUwgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpX
ZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKLSAgICAgICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24o
Y29yZShbc2VsZiBfZnJhbWVdKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkp
KSB7CiAgICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNo
aXZlID8gY29yZUFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAg
ICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgp
IGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5
YWE2YTQ3ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2MzkzOTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBj
OTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
NDcyOSw4ICs0NzI5LDYgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5n
ICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3Vw
TmFtZSwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCAr
ICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdv
cmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdH
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0g
ICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkw
NDliNDYzZi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAg
ICAgICAgIHJlbW92ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2Fn
ZSgqaXQsIGxhc3RNb2RpZmllZCk7CisgICAgICAgIGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2th
Z2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwogICAgICAgICBpZiAocGFja2Fn
ZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAgICAgIHBsdWdpblNl
dENoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGY4NTVkZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0
NGNjYTJmNDUuLmQzZTMzOWY3NTk0OGEzZTNlMWQ5MjlkZWU3NmQ4YzJlZDQ2ZGRmMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDEw
LDcgKzQxMCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVz
dCogcmVxdWVzdCkKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0
LCBjcmVhdGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFz
cyBpdCBvZmYgdG8gdGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2lu
U3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9u
KCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3Rh
bmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICAgICAgbV9zdHJlYW1zLmFk
ZChzdHJlYW0pOwogICAgICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1
Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3RyaW5n
LnV0ZjgoKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVh
bSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVl
c3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5v
dGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5j
cygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAgICBhdXRvIHN0cmVh
bSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVl
c3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5v
dGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5j
cygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICBtX3N0cmVhbXMu
YWRkKHN0cmVhbSk7CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVz
dFVSTCwgY3N0cik7CiAgICAgfQpAQCAtNjkwLDcgKzY5MCw3IEBAIFJlZlB0cjxKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAg
ICBhdXRvIHJvb3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRo
aXMpOwotICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6
OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAg
IGF1dG8gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3Qs
IFdURk1vdmUocm9vdCkpOwogCiAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThlZjU4ZmU0MTZmY2Jm
YjY3NWVkZTNmYzU4OTZjLi4wMzU5ZDkwMWFjY2NkOTEyNDY5MTFjZTkxZmMyM2NlMWIwYmEyNGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBS
ZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2lu
Vmlldz4gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwg
JmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFu
dWFsbHkpOworICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwg
cGx1Z2luU2l6ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVU
eXBlLCBsb2FkTWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBs
dWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7
CkBAIC0xMTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVj
dERhdGFUb1BsdWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVS
TCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUo
bV93ZWJGcmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8g
cGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5T
aXplLCAmZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRp
b24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4g
Y2FuIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkg
JiYgcGx1Z2luVmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAppbmRleCBjMDMyNDJjN2Q2YjYyZDhmYzYzNWQ5YTBkN2JkNmU1ZDdjMjU5ZmVkLi40
NWU0YTU3YjVhOGJhYzJkYTdiNDRlNGRmYmY4MjFjYWVmMGFiOGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6
bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBC
U1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0
RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJp
bmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAg
IGlmICghbWltZVR5cGUpCkBAIC02MTAsNyArNjEwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9h
ZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJT
VFIKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxh
aW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBs
YWluVGV4dCksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNoYXIqPihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4
dCkpOwogICAgIEJTdHJpbmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAx
MCk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBs
b2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVu
Y29kaW5nLCB1cmwsIG51bGxwdHIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVy
bCkKIAogdm9pZCBXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcs
IF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJp
bmdMZW4oaHRtbFN0cmluZykpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hh
cikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGlu
ZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIp
LCAwLCB1dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCAxYmFkZDAxYzNhNzY0MGNjZjExMzA0YTQzNWE3YjFl
MjQ1MTE1ZmRlLi41MDJjYTg5ZGY2YjkwZDBhMjc3ZDc5YjFiYjU5ODcxYjVkMTE0MjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBERUNM
U1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZy
YW1lIGZpbmFsIDogcAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5f
IEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJM
KTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJT
VFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZh
aWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJT
VFIgZmFpbGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21w
dXRlUGFnZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJp
bnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBX
ZWJDb3JlOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3Rlckhl
aWdodHMoZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCmluZGV4IDk0MDc3
OTEyYTk5MTY0MTE3ZDBjNjgxY2NjYzA2Njg2ZTA0YzRkZTAuLmY5YWI4M2I1MWNhMzIzZWJlNzFm
NTUwMjY3OTJkYmY2MzUzNDMzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKQEAgLTE4Nyw5
ICsxODcsOSBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIG1lc3NhZ2VXaW5kb3cgPSBudWxscHRy
OwogfQogCi1SZWZQdHI8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24g
ZGVzdGluYXRpb24pCitSZWY8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRp
b24gZGVzdGluYXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQVZpZXcoZGVzdGlu
YXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsK
IH0KIAogdm9pZCBDQVZpZXc6OnNldENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayhDb250ZXh0RGlk
Q2hhbmdlQ2FsbGJhY2tGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogaW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
Vmlldy5oCmluZGV4IDQ1YjY0ZWMwMTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMuLjcy
OTYzYmUzZGJiYzQzMjhmNTU3OWE2ZGE1NzBjNjJjNWY0ODkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZp
ZXcuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDQVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxD
QVZpZXc+LCBwcml2YXRlIENWRGlzcGxheUxpbmtDbGllbnQgewogCiAgICAgY2xhc3MgSGFuZGxl
OwogCi0gICAgc3RhdGljIFJlZlB0cjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24p
OworICAgIHN0YXRpYyBSZWY8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKICAg
ICB+Q0FWaWV3KCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpDb250ZXh0RGlkQ2hhbmdlQ2FsbGJh
Y2tGdW5jdGlvbikoQ0FWaWV3Kiwgdm9pZCogaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRp
c3BsYXlMaW5rLmNwcAppbmRleCBiMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5
ZmM1Li5hYWJkMTk4YjExMTVlZDdlNjVhZDgzMDg1NDE2MTljZDQxNTg0MGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlz
cGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ1ZEaXNwbGF5
TGluazo6fkNWRGlzcGxheUxpbmsoKQogICAgIDo6Q2xvc2VIYW5kbGUobV93YWtldXBFdmVudCk7
CiB9CiAKLVJlZlB0cjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNw
bGF5TGlua0NsaWVudCogY2xpZW50KQorUmVmPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6
OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENWRGlzcGxheUxpbmsoY2xpZW50KSk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAppbmRleCAwYWUwMmYxNjllYzgyODkx
MjY2MWVmYTczOGM4NGZiN2M0NDQyMjgzLi5jYTAyNmFmZWFjNDE1ZDcxODc0NzhlODczNzVhMjcx
MDk5ZjQwY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBDVkRpc3BsYXlMaW5rQ2xpZW50OwogLy8gRklYTUUgODc2OTE4MTogUmVw
bGFjZSB0aGlzIHdpdGggQ1ZEaXNwbGF5TGlua1JlZgogY2xhc3MgQ1ZEaXNwbGF5TGluayA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDVkRpc3BsYXlMaW5rPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCop
OworICAgIHN0YXRpYyBSZWY8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGll
bnQqKTsKICAgICB+Q1ZEaXNwbGF5TGluaygpOwogCiAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9J
bWFnZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCmluZGV4IGRjNjY3MGQ0MzNmZjA5ZTBk
MTE2NjVkYzA1NTNiMjE2ZGZiMjYwMGMuLmNmOTIxODVhMTBkYjk0NmQwNmJiNGJkNDgwYzY5ZmRl
YzM0NjA0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgc3RhdGljIEhSRVNVTFQgZ2V0SW1hZ2VDb3B5KElEaXJlY3QzRFN1cmZh
Y2U5KiBzeXN0ZW1NZW1vcnlTdXJmYWNlLCBSZWZQdHI8SW1hZ2UKIAogICAgIENTaXplIHN1cmZh
Y2VTaXplKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0KTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKKyAgICBhdXRvIGltYWdlID0gSW1hZ2U6
OmNyZWF0ZShzdXJmYWNlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlOGJkZGViZjI2MjZm
NWNjYWQ4ZDRhY2VkNTczM2U3MjcyMmFlZWI3Li5mYmMwNGRlNjU5Nzg5OGIwNWQyMmE0ZTU3M2Ey
NGVkNTYxOTc5ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjkxMiw4
ICs2OTEyLDYgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJT
VFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91
cCwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgaWYgKCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02OTQx
LDggKzY5MzksNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChf
SW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdy
b3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357554</attachid>
            <date>2018-12-18 01:37:36 -0800</date>
            <delta_ts>2018-12-18 02:02:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218183735.patch</filename>
            <type>text/plain</type>
            <size>391287</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uOGM0NGFkNDIyMjExN2FmOGQ2OTBmNGUxNGNlNWQ5ZDA4ZjIzYzU0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5MCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3Vy
Y2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnJ1bGVzKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnVuaWNvZGVSYW5nZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0KToKKyAgICAgICAg
KiBjc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyk6CisgICAg
ICAgICogY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRD
b2xvciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlbmRlcmVkUmVjdHNG
b3JNYXJrZXIpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCk6CisgICAg
ICAgICogZG9tL1BvaW50ZXJFdmVudC5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRU
b1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJl
c3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0
ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZX
b3JkKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2Rl
KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJl
c2VydmluZ01hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBs
eUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVBbmRJbXBs
aWNpdFN0eWxlT2ZFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdFByb3BlcnRpZXNOb3RJbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5
UGFyYWdyYXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvbkxlZnRUb1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtl
VGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCk6CisgICAgICAgICogZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5k
Ojpmb3JtYXRSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09w
ZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0Fw
cGx5KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBodG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpVUkxVdGlsczxUPjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGVOZXdDdWUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdU
YWIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFzQ1NTUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5UGF0aCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdl
VG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2Vz
V2l0aE9yaWdpbik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uv
aW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxl
SFRNTERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNG
b3JDdXJyZW50Um9vdCBjb25zdCk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OkhpZ2hsaWdodDo6ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVs
c0ZvckF6aW11dGhFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZp
bGxSZXF1ZXN0V2l0aEtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRh
bC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UGxheWVyT2ZWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdU
c1NlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tF
bmNyeXB0aW9uQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1RyYWNrRW5jcnlwdGlvbkJv
eDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5RmlsdGVyQW5pbWF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRl
eCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9u
Qm94KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFw
cGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrVmlkZW9UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVT
dG9yYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVN0b3JhZ2VPYnNl
cnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkQmxvYkl0ZW1U
b1NvdXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVw
ZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGVOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okh5cGhlbmF0aW9u
RGljdGlvbmFyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNo
UG9wdXBNZW51V2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6cG9w
dXBNZW51KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlDb21tb25CdXR0b25QYWRkaW5nVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRBdHRhY2htZW50SWNvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIp
OgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6U3RvcmFnZSk6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjphcmVh
IGNvbnN0KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
ZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHRlc3RpbmcvR0NPYnNlcnZhdGlvbi5oOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNv
dXJjZSk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToK
KwogMjAxOC0xMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
IAogICAgICAgICBbV2luXVtDbGFuZ10gRml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOTZhZTg1NWFjNzU3Nzcx
YTEzZjJlOGRkYzk0ZDBhMDNlNDY1YzkuLjc3Njg0ZThiY2FkYjQ4NGUyN2FjOTk4NGFkNGI3NzY1
NjFiOWIyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE4LTEyLTE4ICBZdXN1a2Ug
U3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+
IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb25uZWN0aW9uIHNl
bmRNZXNzYWdlV2l0aE5hbWU6Ym9keTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rh
a2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50
b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
dEJhc2U2NEVuY29kZWRQTkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9j
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tp
bmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292
ZXJ5QXR0ZW1wdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBz
aG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnNob3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Z2V0U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQ
cm94eUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAg
ICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkdyYW50ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIGluaXRXaXRoRG9jdW1lbnQ6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6
OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6cGVyZm9ybVVSTFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVy
dENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhSW1wbDo6ZGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJ
bmRpY2F0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OndlYkFyY2hp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorCiAyMDE4LTEyLTE3
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gTGF5
b3V0IFRlc3QgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLWhpZC5odHRwcy5odG1sIGFuZCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYXJlIGZsYWt5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IGFkNmZhODA1ZTZjNzE3MjVkMTI0Yzk3NzVmMThjYTRiODc2YjM5YzkuLjMx
MmRjMDMyNGM1MTFhMmE2NTAzYmE2MTNiNDA4OWM2ZWI4OWI1MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2Vz
dXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3Nz
aWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
ODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmg6CisKIDIwMTgtMTIt
MTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbl1bV2ViS2l0TGVnYWN5XVtDbGFuZ10gV2ViS2l0Lmggd2FybmluZzogJ0lXZWJFZGl0aW5n
RGVsZWdhdGUyOjpzaG91bGRJbnNlcnROb2RlJyBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVu
Y3Rpb24gWy1Xb3ZlcmxvYWRlZC12aXJ0dWFsXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGU4NDRmOTA1MTNjMzM2YzI0ZTYzOWZlZjY5OGJkODM4MWI2NDRhYzIuLmQyYzYxYzhlNTMz
YTJmMWFiZDc1ZTRlNWE0NWJhMTdmYmFiOThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1
enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1
cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyk6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJ
T1M6OnBvcHVwTWVudSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgor
ICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9u
UGhyYXNlQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5j
bG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xk
ZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0pOgorCiAyMDE4LTEyLTE3ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTI0Mzg5YzMxZTdjNzA2N2ZmZTQ1YmM2NDEw
YmI0YTVmZTQxOWFkYS4uODk4N2E2MmMxOWQxZGQyYmMwMDc2YjhjOWM1NDQ0ZGMwYzA2NDhhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTE4
ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAg
VXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBn
ZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAo
LVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpd
KToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0
OndpdGhOb3RpZnlEYXRhOnNlbmROb3RpZmljYXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNs
aWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRp
b25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF93cml0ZVNlbGVjdGlvbldpdGhQYXN0
ZWJvYXJkVHlwZXM6dG9QYXN0ZWJvYXJkOmNhY2hlZEF0dHJpYnV0ZWRTdHJpbmc6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9u
VGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxl
U2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rl
ZEZyYW1lczpdKToKKwogMjAxOC0xMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBvZmZzZXRMZWZ0IGFuZCBvZmZzZXRQYXJlbnQgc2hvdWxkIGFkanVzdCBh
Y3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0
MGFjMDUzODFmYjdkMDY5NDZkYmI0NGEwZTFlNDYxOTE4YjJjMDNmLi5kNjEwZWRhZTlhY2ExMDdh
NDY4MzVhN2U4MmQxN2FjOWJhZmU5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpy
ZWZyZXNoKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6
bG9hZERhdGEpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgor
ICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAg
KFdLUUNBOjpDQVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlz
cGxheUxpbmsuY3BwOgorICAgICAgICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAg
ICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAg
ICAgICAoV0tRQ0E6OmdldEltYWdlQ29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3Ojph
ZGRVc2VyU3R5bGVTaGVldFRvR3JvdXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAg
PEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRM
ZWdhY3ldIHdhcm5pbmc6IGV4cGVjdGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1l
JyBvZiBDT01FbnVtVmFyaWFudCBhbmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEz
MzIxMTBjZWNhZDhmM2E4Li40YTk1ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUs
NyArMTg1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05v
Q29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9t
Qnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1d
KHZvaWQqIHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVj
dG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5
OWNmYWZiMzFiNzE1ZjZhMGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0
MmQ5YjUxMjhlNDhmNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZm
ZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50
ID0gY29tbW9uLndhdGNocG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBv
aW50LT5zZXQoKS0+YWRkKHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNl
dCgpLmFkZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmlu
Z1dhdGNocG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdh
dGNocG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCmluZGV4IDZiMGYzMTkzODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBi
MzRmNDZjZTI2MThkNzJhNDZhOWViOGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBt
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRp
bWVyKHRoaXMpKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihu
ZXcgSW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGlt
ZXIoYWRvcHRSZWYobmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVw
ZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9w
SWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkp
CiAgICAgLCBtX2RlZmVycmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1f
ZGVsYXllZFJlbGVhc2VSZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NB
Y3Rpdml0eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVu
dGFsU3dlZXBlciYgSGVhcDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7Cisg
ICAgcmV0dXJuIG1fc3dlZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29s
bGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAppbmRleCBjOGFlZDRhMzZhNTg4MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEz
YWJkMWMyZTcyZWE4OTU5N2MzYmVmOWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCkBAIC02MjksOCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRy
PEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVm
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQ
dHI8SW5jcmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vz
c2FyeVRpbWVyPiBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3
ZWVwZXI+IG1fc3dlZXBlcjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElm
TmVjZXNzYXJ5VGltZXI7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYy
MGRkMTU5ODA2N2U4YzA0YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5
YWE1YzBmMTBjZGQ2ZTliYjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkK
ICAgICAgICAgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQog
Ci1SZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6
cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UoKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRC
bG9jazo6SGFuZGxlKigpPiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxO
b3RFbXB0eU1hcmtlZEJsbwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsK
ICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFy
a2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9j
a0luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2Yzlj
YmIyYjdjMzI5NzQyN2Q4NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4
ZmExYTY3MmI2YzZjMGI3ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFw
Q2VsbCogY2VsbCkgY29uc3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRC
bG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsK
ICAgICAKICAgICAvLyBUaGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVy
IHdoYXRldmVyIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91
ciBtX2Jsb2Nrc1dpdGhCaXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVh
Y2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNs
b3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXRJbmxpbmVzLmgKaW5kZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNm
Yi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xv
dFZpc2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2Vs
bFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewog
ICAgIHB1YmxpYzoKQEAgLTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
U2xvdFZpc2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChj
CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1Nv
dXJjZTsKKyAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1f
YmxvY2tTb3VyY2U7CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNw
cAppbmRleCBkMzc3ZjlhZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0
OTIyN2Y3NDY3NjBhYThhNDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IFN1YnNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJh
bGxlbERpcmVjdG9yeVNvdXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAt
MTEyLDEwICsxMTIsMTAgQEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBT
dWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0
b3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFj
ZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1h
cmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
b2NrU291cmNlKCkKIHsKICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJs
b2NrRGlyZWN0b3J5KiwgTWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXgg
YmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3
ODY3NWM5MjM0ODA0NzczZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAg
ICAgCi0gICAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpOworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4g
cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogICAgIHZvaWQgZm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcg
Kzc4LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAg
ICAgdm9pZCBmb3JFYWNoTm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxl
bE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBA
IC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRD
ZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAg
IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3Qg
RnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaApp
bmRleCBlODNiMzgyZGY4MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQz
ODQzZWI2MTRlMGIxYTZjZjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNl
Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3Bh
Y2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMg
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMg
KzEyMSwxMyBAQCBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFj
ZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICBTdWJzcGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAg
ICBGdW5jIG1fZnVuYzsKICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVk
VG9WaXNpdExhcmdlQWxsb2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUYXNrKCp0aGlzLCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRh
NzQwOGMuLjBiOTk2MWI4YWMzOWYzZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhl
YwogICAgICAgICBtZXNzYWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0K
ICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUobWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZl
cj4gbmF0aXZlQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29u
dGVudHMoKSk7CiAgICAgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2
ZUJ1ZmZlci0+c2hhcmluZ01vZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5k
ZXggNGU1ZWYxNTQxYjRiNDYyZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUx
NTIzNWQzNDVkOTQyOGEzNTM5M2EzYzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBj
bGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAor
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUg
ZW5kKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNs
YW1wSW5kZXgoZW5kKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGRvdWJsZSBiZWdpbikgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGRvdWJsZSBiZWdpbikgY29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5k
ZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5z
aWduZWQgZW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBl
bmQgLSBiZWdpbiA6IDA7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNp
emUpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1
bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5
Yzk0NWFlNDA0ZTJlMGJiZDdjZmJjNWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIz
OWYxNjdjYTJlNDRjMDAxYmYyNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1
YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNp
emVfdCBnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBj
b25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRv
dWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVy
PiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAK
ICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0
LDcgKzE1NCw3IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3Vu
dGVkPEFycmF5QnVmZmVyPiB7CiAgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50
ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAg
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWdu
ZWQgZW5kKSBjb25zdDsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBi
ZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJh
MWFjYTgyNTRjMTI4Li42NGZmZjRhODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludChWTSYgdm0pCiAgICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2lu
dFNldChJc1dhdGNoZWQpKSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNl
dChJc1dhdGNoZWQpKSkKIHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9p
ZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgp
LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0
LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2
OGNjMTk0NmEwZDc5MzYxMWUwNTJiZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgx
NTU0NGE1YTU4ZmM0MjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0
ICs0NCwxNCBAQCBjbGFzcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mKTsKICAgICAKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5n
ZXQoKTsgfQorICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9
CiAgICAgCiAgICAgdm9pZCBmaXJlQWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+IG1fc2V0OworICAgIFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3
YjU0MjFhMjYzNmYxYTRhZjJlMDdlLi43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFj
MGRlODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5i
eXRlTGVuZ3RoKCk7CiAgICAgCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVy
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVj
dC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3
QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4
MGNlOGJhYWFkMDdhMWQ1YmNhNjE0MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJi
NDNiNjI2NWU4NzRkNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2
aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjCiAgICAgICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1l
bnRhdGlvbiBiZSB0aGUgaW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQ
dHI8Q0RNPiBpbXBsZW1lbnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0p
OworICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7CiAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUo
aW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKaW5kZXggMDdhNGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJm
MC4uMmNlM2M4YTBmODczOTk0MTliOWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAg
dm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGlu
Z1N1Y2NlZWRlZCgpOwogfQogCi1SZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0
YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRh
OjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNCbG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9y
bURhdGE6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7
CiAgICAgICAgIGJvZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJl
dHVybiBib2R5OwogICAgIH0KQEAgLTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0Jv
ZHkoKS5iYXNlQWRkcmVzcygpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9j
YXN0PEZvcm1EYXRhKj4oJmZvcm1EYXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBi
b2R5ID0gbWFrZVJlZihjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAg
ICAgICAgYm9keS0+Z2VuZXJhdGVGaWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsK
ICAgICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25z
dW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NF
UlQoZGF0YSk7CisgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogfQogCiBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3
OWIxYTQwNjk1ZDBmMTUwZDdmOWY0Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4
MzU5MjY1ZjQ2MGU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFp
bGVkKCk7CiAgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBS
ZWY8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25z
dDsKIAogICAgIHVzaW5nIFRha2VuRGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxG
b3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApp
bmRleCA5ZDI1MDY3NWZkZTdjMmVjMWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFj
ZTFmOTM1Mzk2N2FiMmEzZDRiYjdkNzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxi
YWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6
Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxs
YmFjayksIFdURk1vdmUob3B0aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQo
KSk7CisgICAgYXV0byBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRp
b25zKSk7CisgICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hv
dHMuYWRkKG5vdGlmaWVyKTsKKyAgICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7
CiB9CiAKIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFj
az4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJy
b3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0
IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4m
JiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmll
cjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JD
YWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5n
ZXQoKSk7CisgICAgYXV0byBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdU
Rk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShv
cHRpb25zKSk7CisgICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3
YXRjaElEOwogICAgIC8vIEtlZXAgYXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBn
aXZlbiBvbmUgdGhhdCB3ZSBkb24ndCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3
YXRjaElEID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgp
OwotICAgIH0gd2hpbGUgKCFtX3dhdGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVy
KSkpOworICAgIH0gd2hpbGUgKCFtX3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5
UmVmKCkpKTsKICAgICByZXR1cm4gd2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4
YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRlN2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1
NTY5MDczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKQEAgLTk3LDExICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVy
c2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8
RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewog
ICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkK
ICAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3Jl
TmFtZXMtPnNvcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCmluZGV4IDc2YTEyODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2Uu
LjE1ZGFjYjEyODExZDAzMWI3MGUxZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRh
YmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNv
bnN0IFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0Owot
ICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAg
UmVmPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVj
dCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+IGtleVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4
YWQ2NGU5NC4uOGUwNzJhODM2ODI0YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cApAQCAtMTIyLDExICsxMjIsMTEgQEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
SURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0
aCgpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFt
ZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVz
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4
TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7
CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBl
ZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5
ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURC
T2JqZWN0U3RvcmUgZmluYWwgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0
IFN0cmluZyYpOwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgo
KSBjb25zdDsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0Owor
ICAgIFJlZjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKCk7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAppbmRleCBjZTcyOGZjZTI2Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzVi
ZGRhNzI3MWI1MDE2YzE5YjI3ZTgyNWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMg
KzM3MiwxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3Bl
cmF0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlu
cyhvcGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3Bl
cmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25P
cGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2Fj
dGlvbk9wZXJhdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAog
ICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjky
ZWZlYTk5OWNlZjExMDZhNzZiMTMxMTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3
MGQzOGNmNDI5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlv
biA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBF
dmVudAogICAgIHZvaWQgZmluaXNoQWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblBy
b2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9w
ZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAg
dm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJik7CiAgICAgdm9pZCBwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQg
Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oCmluZGV4IGU4NTUxMjUzMWI0NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1
NmUxNzhiNzJlZjIxYTY2NmViMTY5ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5oCkBAIC0xODEsNDAgKzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlv
bkltcGwgZmluYWwgOiBwdWJsaWMgVHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAK
LWlubGluZSBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAoraW5saW5lIFJlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQg
KElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2
b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7
Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJh
bnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0
aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAg
ICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiks
CiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlv
biYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRp
b24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9u
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAx
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
Mj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9u
KAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2Fj
dGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJh
bnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAg
ICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAg
ICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAzLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAg
ICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiks
CiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlv
biYsIE1QMSwgTVAyLCBNUDMpLApAQCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYg
cGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJh
dGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNh
Y3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0
ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rp
b24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIz
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0
RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8g
b3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9u
LCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+
IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEy
ICsyNDIsMTEgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFy
YW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlv
bkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwg
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwg
TVAyPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEs
IHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitS
ZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAg
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJ
REJSZXN1bHREYXRhJiksCkBAIC0yNjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1l
dGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9
IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24s
IHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJh
bWV0ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNh
Y3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIy
LCBwYXJhbWV0ZXIzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4
IDE0YmI5Nzc1MzZiYmZiZmYyZWFjNjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgx
YzhmYzBkZjUxNmNiY2VhNmZiNDE4NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2
b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBj
b25zdHJhaW50cywgUHJvbWlzZSYmCiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVs
dFZpZGVvQ29uc3RyYWludHMoKTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVl
c3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVk
aWEsIFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykg
fSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3Qt
PnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEy
Myw4ICsxMjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlN
ZWRpYShjb25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJN
ZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBl
OjpEaXNwbGF5TWVkaWEsIHsgfSwgY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52
aWRlbykgfSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJl
cXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIz
NjgxOTNjLi5hMWNiNzRiYTYxOWJiNzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVk
PElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1
ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0
cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1l
ZGlhU3RyZWFtPj4mJiBwcm9taXNlKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3
IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJv
bWlzZSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVz
dChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJl
c3VsdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgK
aW5kZXggZGU1MWZkOWZjNDNlYjI5N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1Yzhk
N2JhNDEzZTIwMzY4ZTU0MDI3ODA3NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUo
RG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVz
dD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZl
cnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVk
aWFSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgw
YmM1NGNhYTg3YTk3M2UwOGVmLi43NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDli
YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFs
dWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8g
Tm93IHN1bSBhbGwgb2YgdGhlIGF1ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5
LWdhaW4gc3VtbWluZyBqdW5jdGlvbikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdv
dWxkIG5vcm1hbGx5IGJlIG1vbm8sIGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2Fy
eS4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEs
IG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENo
YW5uZWxNZW1vcnkoMCwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8m
IG91dHB1dCA6IG1fcmVuZGVyaW5nT3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0
YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIwZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3
MDMwNmUxMDQxMjg0N2IyMDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZv
aWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJs
ZSBidWZmZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhl
c2UgQXVkaW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhy
ZWFkIGJ5IEphdmFTY3JpcHQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkg
ewotICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklu
cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVm
ZmVyPiBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZl
cjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVS
YXRlKSA6IDA7CisgICAgICAgIGF1dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFu
bmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZl
clNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1f
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91
dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBt
X2lucHV0QnVmZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZl
cnMuYXBwZW5kKG91dHB1dEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4Mzlk
MGJjNjdmMDU4NjYzYjY3NGFkMS4uN2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYz
NWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVj
dXRlKERhdGFiYXNlJiBkYikKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1
bHRTZXQ+IHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1
bHRTZXQgPSBTUUxSZXN1bHRTZXQ6OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4g
ZmV0Y2ggdGhlIGNvbHVtbiBuYW1lcy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpA
QCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBk
YikKICAgICAvLyBGb3Igbm93LCB0aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQt
PnNldFJvd3NBZmZlY3RlZChkYXRhYmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0
U2V0ID0gcmVzdWx0U2V0OworICAgIG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcAppbmRleCAzZDE1NGFjNWEyMWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0
MTFhZTMwM2U0YjA4NmVkYmY5Zjg2OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdl
YkdQVTo6Y3JlYXRlKCkKIHZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVB
ZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZl
cnJlZCkgY29uc3QKIHsKICAgICBhdXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUo
ZGVzY3JpcHRvcik7Ci0gICAgaWYgKCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3Qo
KTsKLQotICAgIGRlZmVycmVkLnJlc29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29s
dmUoYWRhcHRlci5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRk
ZjY4YzYyZTQxN2Q0ZGIzYjcxMTIyMzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRi
OTI2NzQ4ZWFhYmFiYmQ1MTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29u
c3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRl
cj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIC8vIEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2Vi
R1BVQWRhcHRlcjo6V2ViR1BVQWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0
ZXIuaAppbmRleCA0YjhlZmY1MjEzYjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0
ZTU0YmYyYTY0MDhlOWU4ODI1NGM4MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVj
dCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwor
ICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yJik7CiAKICAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5k
ZXggMzQ5NDFkMGVhNWY3OTI1MWNiNDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYy
NGFmNjQyNDhkOTk5ZGMzMWM0ZTQyMGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUo
UmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6
V2ViR1BVQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0
MjhhNDAwNmUyM2Y0OTIzODc1Li41MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNi
MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNv
bnN0IEdQVUJ1ZmZlciYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcAppbmRleCBkYmI4MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQy
Li5iNmVjYWFhMTVlNDJhZGM4ZTJlNTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApA
QCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVD
b21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRC
dWZmZXI+JiYgYnVmZmVyKQorUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CiB9CiAKIFdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFz
cyhXZWJHUFVSZW5kZQogICAgICAgICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNv
bG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVh
ckNvbG9yIH0pOwogICAgIH0KIAotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NE
ZXNjcmlwdG9yKSk7Ci0gICAgcmV0dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1h
bmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaAppbmRleCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQz
N2JkMWVmLi45OGVlNDBjZGRkNDQ0YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAog
Y2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1h
bmRCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZm
ZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAg
Y29uc3QgR1BVQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tbWFuZEJ1ZmZlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5
NDEyODZjNDM4Li5lNDBlYTk4Mjc3OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2
LDggKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAg
IGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRl
ciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNl
ID8gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVs
ZWFzZU5vbk51bGwoKSkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZp
Y2U6OmNyZWF0ZSgpKSAvLyBGSVhNRTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNy
ZWF0aW5nIG1fZGV2aWNlLgorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmlj
ZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRh
cHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwx
NyBAQCBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BV
RGV2aWNlOjpjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/
Ci0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJu
IGJ1ZmZlciA/IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihH
UFVCdWZmZXJEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0p
KQorICAgICAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4g
YmUgdmFsaWRhdGVkIGhlcmU/Ci0gICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hh
ZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7
Ci0gICAgcmV0dXJuIG1vZHVsZSA/IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5y
ZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZp
Y2UtPmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3Jp
cHRvci5jb2RlIH0pKQorICAgICAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
bW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRD
b252ZXJ0UGlwZWxpbmVTdGFnZShjb25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKQEAgLTg5LDE0ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+IFdlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9k
ZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7
IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0
b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1
cm4gcGlwZWxpbmUgPyBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVh
c2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNl
LT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZN
b3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnBy
aW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVy
biBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
V2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNv
bW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVy
biBjb21tYW5kQnVmZmVyID8gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZm
ZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZm
ZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2
aWNlOjpnZXRRdWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRh
NmRiNzY1N2IyY2U4MWQ2YTA3MDgxYS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4
NjQ3YjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5k
QnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29k
ZXI+JiYgZW5jb2RlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNv
bW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4m
JiBjcmVhdG9yLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCmluZGV4IDMxMjk2ZTNlOWU4MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdl
YWYxOWYwOTkwNzFkYjdkM2FmMGE4ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBXZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVh
dGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAg
ICAgLy8gRklYTUU6IExhc3QgYXJndW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25n
Pi4gV2h5IGlzIHRoZSBnZW5lcmF0ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURM
IHdhbnRzIGEgc2VxdWVuY2U8dW5zaWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZl
cnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8
dW5zaWduZWQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJh
NDg4ZWMwYzMxZWE5ZmEuLjEwNmM1NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVh
dGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGlu
ZT4mJiBwaXBlbGluZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBp
cGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVy
UGlwZWxpbmU6OldlYkdQVVJlbmRlclBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBw
aXBlbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oCmluZGV4IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBm
OTdkMjIuLjM5MTdmYWQ3NjdmY2NiMGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJl
bmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUo
UmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVS
ZW5kZXJQaXBlbGluZT4gcmVuZGVyUGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5l
LmNvcHlSZWYoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmNwcAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4
ZTU5NmI4NjFiOThlLi45OTRjMmVjYTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1v
ZHVsZS5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BV
U2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNo
YWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1v
ZHVsZSkpKTsKIH0KIAogV2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVm
PEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5
YTZlYjRjNmY3NDU3YTBhYzQxOGQuLjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMz
Mzc4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9k
dWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRl
ck1vZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BV
U2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmlu
ZGV4IGM2NzgwZWY2MWIwMjk5ZmVlMTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2Jk
MmU5MTU3ZDg1Y2RkMzdjMTgzMDllMjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRl
eHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRy
PFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZp
ZXcoKQogewotICAgIGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCk7Ci0gICAgcmV0dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6
Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChh
dXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQor
ICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5jcHAKaW5kZXggMDQ1OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUx
Yy4uNzI2NTk0NWEyM2U5YzEwZDI2YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAt
MzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0
dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3
KQorUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxH
UFVUZXh0dXJlPiYmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0
dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
VGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2Vi
R1BVVGV4dHVyZVZpZXcoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIw
ODFkZmNkYzkxYmVmNTM4MmFkM2Y3OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNm
ODc5MWJlY2EwOTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4
dHVyZVZpZXc+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3
PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVy
ZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4g
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0
YmE5NDliMGIzMmQwZjZlNjg5MjEyZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJi
NmJmNjU3YjdmZDBhYzJhMzAwZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdl
PiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4g
b3JpZ2luYWxSYW4KICAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBv
c2l0aW9uID0gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29u
dGFpbmVyKCkpOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAo
IXNlYXJjaFJhbmdlIHx8IHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJj
aFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbik7CisgICAgaWYgKHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNl
YXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5h
bFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBm
aW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRh
cmdldE9mZnNldCk7CiB9CiAKIHN0YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmpl
Y3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcAppbmRleCA2ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2Qw
OWYwLi5mN2NkM2FhOGFkZGE2YTRiY2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cApAQCAtMzM3LDggKzMzNyw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8v
IENvbnNpZGVyIHByZXZpb3VzIHRleHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9y
CiAgICAgICAgIC8vIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3
ZSBlbWl0IHRoZQogICAgICAgICAvLyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQg
YXJlYXMpLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCwgbm9kZS0+cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9F
bWl0ID0gb2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnRO
b2RlKCksIDAsIG5vZGUsIDApOworICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0
VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcAppbmRleCBhNmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRh
NjA3Li5iYzE2ZTRiMjkwMzExMzlkYzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSHlwZXJsaW5rLmNwcApAQCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAg
ICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5n
ZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQo
KSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUobm9kZSkpOworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVj
dChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCAr
Mjg2LDggQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4
KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9z
aXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JP
YmplY3QoY29yZU9iamVjdCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJl
bnROb2RlKSwgbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdl
dFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3Rh
dGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGlu
ayogbGluaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTli
NTc5N2M5OTE2ZDI2MjVhOWZiNDBjNjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVk
NTdiNDRmZjJkNzlhYmNjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CkBAIC00MDYsMTMgKzQwNiwxMyBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9y
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8g
Q2FsY3VsYXRlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVj
dC4KICAgICBQb3NpdGlvbiBwYXJlbnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5vZGUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdl
OjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdl
U3RhcnQpOworICAgIGF1dG8gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8g
U2V0IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2Ug
bGVuZ3RoLgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBj
b3ZlciBzcGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRr
T2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVu
dC5nZXQoKSwgdHJ1ZSkpOwotICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShub2RlLT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAg
ICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5n
ZXQoKSwgdHJ1ZSk7CisgICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQo
Y29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigp
LCB0cnVlKSk7CisgICAgYXV0byBub2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3Vt
ZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0
aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAog
ICAgIC8vIFNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcg
d2l0aCAqX0VORCBib3VuZGFyaWVzLgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBV
UFNUUkVBTSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4
YzdiMWNmMzhiOWNiODhkYjc4YzY5OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNl
Y2FlNzAyYTQzOTU2MmZjMWM1YzAyMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjQwMSwxMiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKXJhbmdlCiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0g
c2NvcGUgJiYgIXJhbmdlLT5lbmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAg
ICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxS
YW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUs
IDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAg
IGF1dG8gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUs
IDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAg
IEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQg
c3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgp
KTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVz
dFJhbmdlLnB0cigpKTsKICAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVy
KCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
VGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwCmluZGV4IDlmYzMwNmNjZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1
NDVkNWQ1MTFmZjg2ODE5OGIxOTM1MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgs
OCArNzgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpT
R2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWlj
cm90YXNrPiYmIHRhc2spCiAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkK
IHsKLSAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2tdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1
dG8gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxs
KCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCmluZGV4IGYyZWIyZjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIu
LmU3ZDkzN2VlYTc0YzE2YmY5ZDFhZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4
IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9i
amVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJl
ZlB0cjxKU01pY3JvdGFza0NhbGxiYWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6
OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9
IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1
ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90
YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IDM4MGFkNWJkMTUyMDEzZTg5NmI4N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3
ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMs
OSBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihv
YmplY3QpOwogCi0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNN
aWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAg
IGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwg
V1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2td
KCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2
ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4
YzM1NjZhMzFjMGNjMjQ5Li5kZjk0NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW0KQEAgLTg1LDEwICs4NSwxMCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+
IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAg
ICBOUE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxl
T2JqZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6
Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAg
ICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmpl
Y3QsIFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0
YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4
cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5z
dGFuY2UpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3
M2NiNmYxMzM1OTM2MzViYzNmYWE1Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcw
MmI2OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJp
YWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUg
aW1hZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxl
bmd0aCB8fCAoaW1hZ2VTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0g
ICAgICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShp
bWFnZVNpemUpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShp
bWFnZVNpemUpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBm
YWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1
OCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZm
ZXJzLT5hdChpbmRleCkpOwotICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG1fc2hhcmVkQnVmZmVycy0+YXQoaW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGdldEpTVmFsdWUoYnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kV2l0aENyYXNoT25PdmVyZmxvdyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTM0ODQsNyArMzQ4NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IHRvSlMoZXhlYywgYXBpVmFsdWUpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2
YWx1ZSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgqZXhlYywgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0
b1JlZihleGVjLCBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0
NDk2NWRhNjQwNDE1NGViNC4uMWI3ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBPYmpjQ2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1Ymxp
YyBJbnN0YW5jZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNy
ZWF0ZShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMg
UmVmPE9iamNJbnN0YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYpOwogICAgIHZpcnR1YWwgfk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2
b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRp
b25FbnZpcm9ubWVudCA9IDApOyAvLyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMg
dGhlIGV4Y2VwdGlvbiBzaG91bGQgcHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1l
bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAw
YWVjMGNlZWFmOWM2YzJhNjJlMmIwODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3
MjQyY2M0NjAxY2QzMmE1YzExN2ZmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KQEAgLTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2Jq
Y0luc3RhbmNlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQog
ewogfQogCi1SZWZQdHI8T2JqY0luc3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0
YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+
IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiBy
b290T2JqZWN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2Jy
aWRnZSBDRlR5cGVSZWYpaW5zdGFuY2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBSZWZQdHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYo
bmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3
cmFwcGVyID0gYWRvcHRSZWYoKm5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9v
dE9iamVjdCkpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRy
KCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAg
ICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9i
amNJbnN0YW5jZSgpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5k
ZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJhOS4uMDk1MjdmMWIxMjZj
N2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBDU1NGb250RmFjZVNvdXJj
ZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgaWYgKG1faW1t
ZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYnVmZmVy
KTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmluZygpLCB3cmFwcGluZyk7
CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVm
ZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHdo
ZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwgb3Igbm90LiBMdWNraWx5
LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMWVjYzViYTM3
MDg3OTJmYTYzN2YxNmIxMmNkNzNlMTFlZmIwNGE2Mi4uMGEwMTdkYjQ0ZGJlZGRiMDc2OWI3MTY0
ODczYWJmMWFkOWE0MWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
MjU5LDcgKzI1OSw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMo
KQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgLy8gSUUgYmVoYXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBydWxlTGlz
dCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVMaXN0ID0gU3Rh
dGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCA9IGxlbmd0
aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7ICsraSkKICAgICAg
ICAgcnVsZUxpc3QtPnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUzNzFiYjhiOC4uZTM0OTE3
MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBj
b25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9i
YWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAiVSswLTEwRkZGRiJfczsK
LSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fYmFja2luZy0+cmFuZ2Vz
KCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUo
cmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVzLT5jc3NUZXh0KCk7CkBA
IC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MoKSBjb25z
dAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGlmICghbV9iYWNr
aW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAibm9ybWFsIl9z
OwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1fYmFja2luZy0+ZmVhdHVy
ZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVhdHVyZVZhbHVlOjpj
cmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1ZSgpKSk7CiAgICAgcmV0
dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NP
TVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBiODNjMzdlYjc0M2M4ZmU2
MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3NzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBAIC03OSw5ICs3OSw5
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0Q29u
dGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAg
ICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0eWxlU2hlZXRXcmFwcGVy
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAgICBtX3N0eWxlU2hlZXRD
U1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAgICBjb2xsZWN0KHN0eWxl
U2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5
bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBw
ZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7CisgICAgY29sbGVjdChzdHls
ZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6
Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0NTNmYzFlN2Q1NTM5ZTA5
ODA2ZmIxMzUyLi4yYjc1ZWJiZjc4NmE5ZDY0M2ZmYjFjN2QzYjkzOTE4YjkyODA4NjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VE
YXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdQogUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJl
bnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewogICAgIGlm
IChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
dXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAgICAgaWYg
KHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NGZhM2Y1Mzk4ZmU2ZmJl
NDI0NmNlNmMxMGQzOGQ1OWY4ZTJiM2E2Li42YTIwMzYwYTU0NjAyNmExY2ZmODEyN2FlODE1MWVh
ZjIzMzAwNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTgwLDgg
KzE5ODAsOCBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29u
c3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdAogICAgICAgICAgICAgU3RyaW5nIGNz
c1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJs
ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwogCi0gICAgICAgICAgICBSZWZQdHI8
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAg
ICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICAgICAg
ICAgIGF1dG8gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3Nz
VXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCkuYXBwZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDBkYzEwOThm
NTRmODRiYmYyYmE3YmJhMzU5NzFiNjhkNWE5ZGJiZWMuLjFlZWZlYjhiZDEwYzI1NGI4MjRiYzA2
Y2Q1YjhhZWYwNjYwMjE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC00NSwxMiAr
NDUsMTIgQEAgc3RydWN0IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVm
Q291bnRlZEJhc2UgewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxlQmFzZSkgPT0g
c2l6ZW9mKFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9zaG91bGRfc3Rh
eV9zbWFsbCk7CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5
bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0
KSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIocGFyZW50U2hlZXQsIG51
bGxwdHIpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01X
cmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxl
QmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7IAog
ICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIobnVsbHB0ciwgcGFyZW50UnVsZSk7CiB9CkBA
IC0xMzEsNyArMTMxLDcgQEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHko
KSBjb25zdAogICAgIENSQVNIKCk7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNl
OjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUq
IHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogewogICAgIFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0eWxlUnVsZUJhc2Um
IHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBAIC0xNjksMTEgKzE2
OSwxMyBAQCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDUwogICAgIGNhc2UgQ2hhcnNldDoKICAgICBj
YXNlIEtleWZyYW1lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBBU1NFUlQocnVsZSk7CisK
ICAgICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShwYXJlbnRS
dWxlKTsKLSAgICByZXR1cm4gcnVsZTsKKyAgICByZXR1cm4gcnVsZS5yZWxlYXNlTm9uTnVsbCgp
OwogfQogCiB1bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmgKaW5kZXggNjgwNzE0MWZlZWE3MWIwNzZhZmE5YTRhNjlhM2NkMjZmYzUzMjI4
OC4uNzE4MDUyMzEzODQ0MDMyZjc1YzljNmNkMWU1YWE5M2RiZWRkNDJhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaApAQCAtODQsOCArODQsOCBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGlj
IFdURjo6UmVmQ291bnRlZEJhc2UgewogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91
bGRuJ3QgYmUgYW55IG5lZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFJlZlB0
cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQg
PSBudWxscHRyKSBjb25zdDsKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVy
KENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKKyAg
ICBSZWY8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5cGUsIGJvb2wgaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZhbHNlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNz
IFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAgIFJlZlB0cjxDU1NS
dWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1
bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0
OwogCiAgICAgdW5zaWduZWQgbV90eXBlIDogNTsKICAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVk
IHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IDBmZWU4NGNkN2ViMjY3OTJlM2RmNmQ0Njdl
OTBhNjJmMWZkMGNjNTQuLjY2ODRhOGFlYTE0YmViZDZkMzg1MzI2YTRiNGRhZWU5Nzc3ZTdhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6fkNoaWxkTGlzdE11
dGF0aW9uQWNjdW11bGF0b3IoKQogICAgIGFjY3VtdWxhdG9yTWFwKCkucmVtb3ZlKG1fdGFyZ2V0
LnB0cigpKTsKIH0KIAotUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxk
TGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdl
dCkKK1JlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFj
Y3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiB7CiAgICAgQWNj
dW11bGF0b3JNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBhY2N1bXVsYXRvck1hcCgpLmFkZCgmdGFy
Z2V0LCBudWxscHRyKTsKICAgICBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4g
YWNjdW11bGF0b3I7CkBAIC03MCw3ICs3MCw3IEBAIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFj
Y3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDCiAg
ICAgICAgIGFjY3VtdWxhdG9yID0gYWRvcHRSZWYobmV3IENoaWxkTGlzdE11dGF0aW9uQWNjdW11
bGF0b3IodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hp
bGRMaXN0TXV0YXRpb24odGFyZ2V0KSkpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gYWNjdW11bGF0b3IuZ2V0KCk7CiAgICAgfQotICAgIHJldHVybiBhY2N1bXVsYXRvcjsKKyAg
ICByZXR1cm4gYWNjdW11bGF0b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wg
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNo
aWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXgg
OWI5NDM3MTZkYmM4NGM5M2IyNmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcx
NDc0MmUzNmJjZTViNjEwODY5NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRM
aXN0TXV0YXRpb25TY29wZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOwogLy8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3Qg
bWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUg
cHVibGljIGludGVyZmFjZS4KIGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBw
dWJsaWMgUmVmQ291bnRlZDxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFj
Y3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11
dGF0aW9uQWNjdW11bGF0b3IoKTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1
NWM1NmYxMzY5MzI1OGI3MmRmY2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5
MDJmYTdiY2JlMjJkNmUxYzJjNjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQg
dXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJr
ZXIsIE5vZGUmIG4KICAgICBBU1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUu
ZG9jdW1lbnQoKS52aWV3KCktPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZWZhY3RvciB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdl
IG9ubHkgaGF2ZSBvbmUgTm9kZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVU
ZXh0UXVhZHMoKS4KLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShub2RlLmRvY3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1h
cmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJu
OworICAgIGF1dG8gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwg
Jm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsK
ICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJh
bmdlLT5hYnNvbHV0ZVRleHRRdWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0
YzU4MzE2MGE3MThjYjU4NzRkMGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRj
NGUwYTZkMWMyNzU0MDBlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcApAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0
T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50
LnVybCgpLCBtX3N0YXJ0VGV4dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJp
ZXMgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQoZG9jdW1lbnQpKTsKKyAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNy
ZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAg
TWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1l
ZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1l
ZGlhUXVlcmllcywgIklubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGlu
ZyBxdWVyaWVzIik7Ci0gICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMp
ICYmICFwcmludEV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5F
dmFsLmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSht
ZWRpYVF1ZXJpZXMuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNj
b3BlKQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVh
dGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlm
IChhdXRvKiBjYWNoZWRTaGVldCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVL
ZXkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwog
ICAgICAgICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVk
U2hlZXQsIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVl
dC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwog
ICAgICAgICAgICAgaWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAg
ICAgbV9zaGVldC0+c2V0VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3
IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRD
b250ZW50czo6Y3JlYXRlKFN0cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50
KSk7CiAKICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRz
LmdldCgpLCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRN
ZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQt
PnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVu
dC5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRp
dGxlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJi
MTM5MmVhOWZjOTdkYzhlMDA1ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdi
ODA5OGZkMmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBA
QCBjbGFzcyBQb2ludGVyRXZlbnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAg
IGJvb2wgaXNQcmltYXJ5IHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQ
b2ludGVyRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0
aWFsaXplcikKKyAgICBzdGF0aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUG9pbnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBj
ZjhlMzkzYjg2M2Y3ZTQ5OTNjZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMx
MGE5YTI2ZWRkNDNlODM4YjA1MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1
cmVJbmRpY2F0b3IuaApAQCAtNDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlw
ZSB7IEVzY2FwZUtleSwgT3RoZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBz
dGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdl
c3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2Vy
R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAg
ICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDU4MmJlMGRlNTkzMmM1Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1
MDY4NDNmMzIxYzBkNmM0MjQ5MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3
IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRU
b1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQg
cG9zaXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0
YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRl
ciB0byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UK
ICAgICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0
YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4g
Y29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShw
YXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3Vt
ZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsK
KyAgICBSZWY8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0
YXJ0UG9zaXRpb24oKSk7CiAKICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRp
b25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAs
NyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRh
a2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4g
YWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29y
cmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50
IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAg
ICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1h
eSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdl
V2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIg
QEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVs
bENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2Zy
YW1lKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNl
bGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpT
cGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmVuZCgpKTsKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2Vy
cyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFy
a2VycyhyYW5nZS5nZXQoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQg
fSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01h
cmtlcik7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3Vt
ZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1h
cmtlcnMocmFuZ2UucHRyKCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4g
eyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVk
IH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdN
YXJrZXIpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lk
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRp
dENvbW1hbmRDb21wb3NpdGlvbgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0Nv
bW1hbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9u
KCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYg
KCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQo
KSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5w
dHIoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtl
cihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwog
fQogCiBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFs
dGVybmF0aXZlVGV4dENsaWVudCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9j
b3JyZWN0aW9uQQogICAgIGlmIChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQ
b3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdD
aGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2Vk
aW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5n
ID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgp
LCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmlu
ZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShz
dHJpbmdbc3RyaW5nLmxlbmd0aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBN
YXJrIHRoaXMgd2hpdGVzcGFjZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2Nv
cnJlY3Rpb24gZm9sbG93aW5nIHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNl
ciB0eXBlcyB0aGUgc2FtZSBvcmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdl
CiAgICAgLy8gd29uJ3QgYXV0b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9y
TGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJr
ZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1h
cmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0
ZWRBdXRvY29ycmVjdGlvbik7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tp
bmdSZXN1bHQmIHJlc3VsdCwgUmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJp
bmcmIHN0cmluZ1RvQmVSZXBsYWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9j
dW1lbnRNYXJrZXImCiAgICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZX
b3JkUG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgTm9kZSogbm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9j
dW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZz
ZXQoKSk7Ci0gICAgaWYgKCF3b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBT
dHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRv
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5n
IGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJy
ZW50V29yZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxU
ZXh0ID0gY3VycmVudFdvcmQ7CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2Fz
ZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAg
IHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdT
dWdnZXN0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJl
cGxhY2VtZW50OgotICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOwor
ICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAg
ICAgICBtX2RldGFpbHMgPSBtYXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAg
ICBicmVhazsKQEAgLTU5OSw3ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAg
ICAgICBhdXRvJiBtYXJrZXJEYXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlv
bkRhdGE+KG1hcmtlci5kYXRhKCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2Vy
RGF0YS5vcmlnaW5hbFRleHQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtl
ckRhdGEuY29udGV4dDsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVy
bmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2
YWY4Njk2ODhiZmMyY2ExYjc5Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5
NzFmYzhjZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5
QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFu
Z2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5O
b2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpKTsKLSAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3Bl
KSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0
UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAg
IFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVT
dGFydCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJh
Z3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkK
ICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwot
ICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdl
KQotICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVu
ZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJ
bmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAg
ICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRF
bmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKKyAgICB9CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0
eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5
ICsxMDUzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUoRWRpdGluZ1N0eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRz
VG9QdXNoRG93bi5hcHBlbmQoKnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVh
dGUoKTsKKyAgICAgICAgYXV0byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgpOwogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAg
IHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50
PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAg
ICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIo
KSk7CiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVu
IG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5s
aW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNo
aWxkIHNlcGFyYXRlbHkuCkBAIC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBO
b2RlKgogICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcg
dGFyZ2V0Tm9kZSBhbmQgdGhlaXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAg
ICAgICAgICAvLyBCdXQgaWYgd2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlz
IGFwcGx5IHRoZSBzdHlsZS4KICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8
fCBzdHlsZWRFbGVtZW50KQotICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5
SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAg
ICAgICAgICAgICAvLyBXZSBmb3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAo
Y29udGFpbnMgdGFyZ2V0Tm9kZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXRO
b2RlLCBzdG9wIHRoZSBvdXRlciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJl
bnQgaW5uZXIgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAppbmRleCBhYzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgz
Li4zMGIzNzJmYjU0ZWFlOWI5NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4
Miw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
dGFyZ2V0UmFuZ2VzKCkgY29uc3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNy
ZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAg
ICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9
OwogfQogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OnRhcmdldFJhbmdlc0ZvckJpbmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtl
cnMoVGV4dCYgbm9kZSwgdW5zaWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJDb250cm9sbGVyID0gZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0g
Y29weU1hcmtlcnMobWFya2VyQ29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3Vt
ZW50TWFya2VyOjphbGxNYXJrZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBv
ZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZz
ZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBs
YWNlbWVudFRleHQubGVuZ3RoKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFy
a2VycykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNE
aWN0YXRpb24oKSkgewotICAgICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3
UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIu
YWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNv
bnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIu
ZGVzY3JpcHRpb24oKSwgbWFya2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtl
ckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJr
ZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5l
d1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAg
fQogfQogCkBAIC0xNDE0LDE0ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYg
KHN0YXJ0SW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2Uu
Z2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlm
IChlbmRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAg
ICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRy
dWUpOworICAgICAgICAgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJh
Z3JhcAogICAgIC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVh
dGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0
YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAg
ICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlh
bnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRl
ZE5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBs
aWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdl
Q29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRo
ZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwg
c2luY2UgbW92ZWQgcGFyYWdyYXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1
c2UgYSB0ZXJuYXJ5IGZvciBpbml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2
ZXJzaW9ucyBvZiBHQ0MsIHNlZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRv
TW92ZSAhPSBlbmRPZlBhcmFncmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFw
cGVhcmFuY2UoKnJhbmdlLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNl
cnZpbmdWaXN1YWxBcHBlYXJhbmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmco
KSk7CiAKICAgICAvLyBBIG5vbi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVu
IHdlIGNvcHkgYW5kIG1vdmUgaXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlm
IHdlJ3JlIGdpdmVuIGFuIGVtcHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBj
YW4gaGF2ZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5
NzVhNi4uYTZkMTc2MGMyYjBjZjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02
OTMsOSArNjkzLDkgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFw
aHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhU
b01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOwotICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxk
TW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgp
KSkKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFy
YWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCks
IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOworICAgIGF1dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCkt
PnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNl
ZC5wdHIoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3
aWxsIGluc2VydCBwbGFjZWhvbGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCBy
ZXF1aXJlIHRoZWlyIHVzZSwgZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmNwcAppbmRleCBjY2E0ZWRlMWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQw
MjFkMThhNDc5MTNlZWEwYjc2NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKQEAgLTExMTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGlu
CiAgICAgaWYgKGluZGV4IDw9IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZSgmbm9kZSksIERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRl
bnRzKG5vZGUpOwotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFj
dGVySXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsK
ICAgICByZXR1cm4geyBpdC5hdEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5n
ZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwCmluZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRi
NDczOGEuLmIzOGMxNTA5ZWU5NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lk
IEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2Rl
JiBub2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gcGFyZW50U3R5bGUgPSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUu
cGFyZW50Tm9kZSgpLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGlu
Z1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxl
LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyogc3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCAr
ODI4LDggQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxl
bWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0
cmlrZVRocm91Z2ggPSBzdHJpa2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFu
Z2U6OlJlbW92ZTsKICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92
ZVN0cmlrZVRocm91Z2gpIHsKICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
TGlzdCA9IHRleHREZWNvcmF0aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgp
OwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBu
ZXdWYWx1ZUxpc3QgPSB2YWx1ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFj
dGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAg
ICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsK
ICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNW
YWx1ZSh1bmRlcmxpbmUucHRyKCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5n
U3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBl
bGVtZW50LCBSZWYKICAgICAgICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgp
KSB7CiAgICAgICAgICAgICAgICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBp
ZiAobmV3VmFsdWVMaXN0LT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5l
U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlz
dCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24sIFNob3VsZFByZXNlcnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVt
b3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2Rp
ZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRo
ZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZShwb3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVk
aXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBv
c2l0aW9uID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAg
c3RhdGljIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3Bl
cnRpZXMoY29uc3QgU3R5bGVQcm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5l
QW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9w
ZXJ0eU92ZXJyaWRlTW9kZSBtb2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0lu
Y2x1ZGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZSgpOwogICAgIHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9y
U2VyaWFsaXphdGlvbihlbGVtZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkp
CkBAIC0xMjg4LDcgKzEyODgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21S
dWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUg
cHJvcGVydHkgdmFsdWUsIGlmIGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhl
IGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVp
Z2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6
IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+
IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVk
U3R5bGUoJmVsZW1lbnQpOwogCiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0
aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRh
YmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7
CisgICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21w
dXRlZFN0eWxlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5
bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVu
dCYgZWxlbWVudCwgTm9kZSoKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVz
Tm90SW4oKm1fbXV0YWJsZVN0eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8v
IDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5
IG1hdGNoZWQgcnVsZXMuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3Qp
OworICAgIGF1dG8gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQs
IEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211
dGFibGVTdHlsZSkgewogICAgICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAg
ICAgICAgIGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4
MDIsNyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFBy
b3BlcnRpZXNOb3RJbihTdHlsZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRp
ZXMsIFQmIGJhc2VTdHlsZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAg
YXV0byByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJv
cGVydGllcyk7CiAgICAgcmVzdWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5
bGUpOwogICAgIEFTU0VSVChyZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIz
ZDMuLjU5YTRiODFhYTE3MTc2MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHls
ZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0
VG9SaWdodCA/ICJsdHIiIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9M
ZWZ0ID8gInJ0bCIgOiAiaW5oZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxl
VG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24p
OworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFj
dGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9y
OjpiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMs
OCArMjAyMyw4IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2ln
bmVkIHN0YXJ0ID0gc3RkOjptaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRP
ZmZzZXQpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3Rh
cnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+
ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgp
LCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAg
ICAgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRv
Y3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwg
RE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDU2Y2E1YmYwYTdmODkzNDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5
NTM4YWNlM2Q0YmY4YzBlZTMxNzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVRvZ2dsZVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVk
aXRBY3QKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZy
YW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAg
IFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3Bl
cnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlW
YWx1ZSk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVu
IHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAg
IHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6
Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3Jh
cGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01X
aXRoVXNlckludGVyZmFjZToKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhT
dHlsZShzdHlsZS5nZXQoKSk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBo
U3R5bGUoc3R5bGUucHRyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlSnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9u
KTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9u
OjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRy
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0
ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NW
YWx1ZU5vcm1hbCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwg
RWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlTdHlsZShzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdE
aXJlY3Rpb25SaWdodFRvTGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZy
YW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCks
IEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXgg
NmY1MzIwOGZlNmMyMTQ4YTAyNTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIy
MDM0YjU5YzViOTUyODlmYTNjZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0Qmxv
Y2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0
aW9uJiBlbmQsCiAgICAgUmVmUHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRl
ZE5vZGUoKSA9PSBub2RlVG9TcGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxp
dFRyZWVUb05vZGUoKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAg
ICBSZWZQdHI8Tm9kZT4gbm9kZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwog
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnQsIGVuZE9mU2VsZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBl
bmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRh
YmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1l
bnRzIHdpdGggY29udGVudGVkaXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9k
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZO
b2RlLT50YWdRTmFtZSgpKSAmJiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAg
ICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRo
aW4oKnJlZk5vZGUsICpyYW5nZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQp
IHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkK
ICAgICAgICAgJiYgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVm
Tm9kZSkpIHsKICAgICAgICAgLy8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5
IGNvbnRhaW5zIHRoZSBjdXJyZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFz
VGFnTmFtZSh0YWdOYW1lKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVGb3JtYXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9y
bWF0Q29tbWFuZC5jcHAKaW5kZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFj
Y2FjMi4uNGVjMGI0ZTU1YzNlYWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyAr
ODMsMTMgQEAgdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQg
dGhlIGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUg
dGhhdCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcg
b24uCiAgICAgTm9kZSogcm9vdCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShyb290KTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHJvb3QpOwogCiAgICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQg
dHJhbnNwYXJlbnQgYmFja2dyb3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2Vz
cyBzdHlsZSgpLgogICAgIGRlZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlD
b21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBk
ZWZhdWx0U3R5bGUuZ2V0KCksIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRp
bmdBY3Rpb24oKSkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JS
ZW1vdmVGb3JtYXRDb21tYW5kLCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3Bw
CmluZGV4IDUwMmJjMDRkMzUzYjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDEx
N2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDgg
Kzg5LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
OjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNS
YW5nZT4+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZy
b21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsK
KyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9C
ZVJlcGxhY2VkKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRl
OTBhOGUyMjljYjk4NGQ2ZjRjNzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUx
NzZlYTBmNTM2NmEyNjBkOTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bh
bklubGluZShJbnNlcnQKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0
PFN0eWxlZEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogaW5saW5lU3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlu
bGluZVN0eWxlKTsKKyAgICAgICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKGlubGluZVN0eWxlKTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAg
ICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZl
Y3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRp
YyBib29sIGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVu
dCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdy
YXBwaW5nU3R5bGVTcGFuID0gdG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHls
ZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwogICAgIFN0cmluZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgp
LT5hc1RleHQoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEg
bmFpdmUgd2F5IG9mIGNvbXBhcmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2Rl
cyYgaW5zZXJ0ZWROb2RlcykKICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkp
OwogICAgIENvbnRhaW5lck5vZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50
Tm9kZSgpOwogCiAgICAgLy8gSWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3Rl
IGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVv
dGVkIHJlZ2lvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMz
NmFmMzc4M2IuLjdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
LmNwcApAQCAtMTI0LDggKzEyNCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
OjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJl
ZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1f
cmFuZ2VUb0JlQ29ycmVjdGVkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVy
biB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQp
IH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6
OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcy
ZjFhOWYzNTdhZDc3M2EuLmU4OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTMzNyw4ICszMzcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5T
YW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVu
ZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBv
ZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVu
ZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRv
IGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
ZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9y
YW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsK
ICAgICAgICAgICAgIGxhc3RJdGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChjdXJyZW50U3RhcnRPZmZzZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3
LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3Nw
ZWxsZWRXb3JkLmlzRW1wdHkoKSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNl
LmlzRW1wdHkoKSB8fCBzcGVsbGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikp
IHsKICAgICAgICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2Nh
dGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJz
dEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJh
Z3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFw
aFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxp
bmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1Jh
bmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGlu
ZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVs
bGluZ09mZnNldDsKQEAgLTQwOCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgog
ICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
Z3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFy
YWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVk
Y2E5OGEyMmNlNWEyYThkNjEuLjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDgg
KzI2NSw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWZQdHI8VHlwaW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRl
KGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUp
OwotICAgIGFwcGx5VGV4dEluc2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVj
dGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBp
bmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMs
IGNvbXBvc2l0aW9uVHlwZSk7CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5n
ZXQoKSwgY21kLmdldCgpLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24p
OwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9j
dW1lbnQsIE9wdGlvbnMgb3B0aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0Nv
bW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRU
eXBlLCBUZXh0RwogICAgIGlmICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1
dCgpKQogICAgICAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0
aGlzLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAK
LSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0
ZUZyb21SYW5nZSgqcmFuZ2UpOwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBs
eUVkaXRpbmcoKnRoaXMsIHsgMSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCku
ZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRl
RnJvbVJhbmdlKCpyYW5nZSkgfSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRk
ZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1
OTE0ZGRkZDMyMzQzYmE3ODhiMzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcx
OWM5NjJjZGZhYzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApA
QCAtMTg5MywxMCArMTg5MywxMCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wg
dGhpc0lzU3RhcnQgPSAodnAgPCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmly
c3QgaW4gdGhlIFJhbmdlIGNvbnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1l
bnQoKSwKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgp
LmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwot
ICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkp
OworICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRy
KCkpOwogCiAgICAgcmV0dXJuICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVj
Y2Y0NDYyNDA5NjgxM2U4NjkyN2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5
Yzg1ZjA5NjZiYTI5M2JmYWJiMjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9FZGl0b3JDb2NvYS5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNl
bGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkK
IHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICgh
YXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5k
ZXggNzVmNTRhMTMxMDRhMzRmMzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMz
MTExNWNiOTEyYzcwZWQ5ZmNjNWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9p
ZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0
ZXJSZXN1bHRzLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhl
IHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJl
IGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVx
dWl2YWxlbnQoKSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZVRvRW5kLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJv
b3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAg
ICBpbnQgc3RhcnRJbmRleCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0
YXJ0SW5kZXggPj0gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmlu
ZGV4IGYzN2ZkZTdmZjQ1ZGJiNTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3
MzJiMWU2Mjg0NTA5ZDE0NDU1ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGln
bm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIK
ICAgICAvLyBJZiB0aGUgdGV4dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVm
dC0+cmlnaHQgYW5kIHJpZ2h0LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcu
CiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHls
ZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkp
OworICAgIGF1dG8gc2VsZWN0aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rp
b25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVj
dGlvblN0eWxlIHx8ICFzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsK
IApAQCAtMTM4LDE3ICsxMzgsMTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JD
aGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHls
ZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0QWxpZ24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxl
KHN0eWxlLmdldCgpKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0K
IAogdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiByZW1vdmVzIHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkg
YXBwbHlpbmcgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVu
dCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29w
eSgpOworICAgIGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFt
ZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9
IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0
IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVy
dHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjApIik7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVu
Y2hhbmdlYWJsZVN0eWxlcygpCiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRl
cmxpbmUKIAogICAgIC8vIEZJWE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8v
cHJvYmxlbS85MTU2NTA3PiBVbmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hv
dWxkIHNheSAiVW5kbyBNYXRjaCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVm
YXVsdFN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBs
eVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VB
dHRyaWJ1dGVzKTsKIH0KIAogc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVt
ZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAg
LTIwOSw4ICsyMDksOCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24g
YmVmb3JlSW1hZ2VQb3NpdGlvbigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvcik7CiAgICAgUG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1l
bnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4g
aW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9y
ZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENs
aWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZElt
YWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBp
bWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3Jl
SW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1h
Z2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3Rl
Ym9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQppbmRleCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJm
MjVmLi4zZmU2ZjRlN2U0NTIxMjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90
ZWN0b3IobV9mcmFtZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7Ci0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRp
b246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNl
dEZvY3VzKTsKIAogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAK
QEAgLTE3Niw5ICsxNzYsOSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2Fy
ZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAg
ICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7Cisg
ICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9t
UGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQp
KSB7CiAgICAgICAgIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZy
YWdtZW50KTsKLSAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3Vs
ZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlv
bjo6UGFzdGVkKSkKICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNl
Tm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFs
c2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJk
KE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCmluZGV4IDc5NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQu
LjU3NDcyMGU3NDMzYjNhZTcyOWQzZDQzYzNjMTVmYTQyNDM2MzZkNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
RWxlbWVudD4obm9kZSk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5t
ZXJnZVN0eWxlRnJvbVJ1bGVzKGVsZW1lbnQpOwogICAgIHJldHVybiBzdHlsZTsKIH0KQEAgLTEy
MTEsOCArMTIxMSw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZv
clRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8vIEJhc2Vk
IG9uIHRoZSBkb2N1bWVudGF0aW9uIEkgY2FuIGZpbmQsIGl0IGxvb2tzIGxpa2Ugd2Ugd2FudCB0
byBzdGFydCBwYXJzaW5nIHRoZSBmcmFnbWVudCBpbiB0aGUgSW5Cb2R5IGluc2VydGlvbiBtb2Rl
LgogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0
YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVy
ZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZy
YWdtZW50LgotICAgICAgICBSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBmYWtlQm9keSA9IEhUTUxC
b2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhU
TUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5nZXQoKSk7CisgICAgICAgIGF1dG8gZmFrZUJvZHkg
PSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOworICAgICAgICBmcmFnbWVudC0+
cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAo
c291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAgICBmcmFnbWVudC0+cGFyc2Vy
QXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CiAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRl
eCAwNDM0MTI5MDJhNDBmZTQxNzFiNzY1MmQ5OGIwYTNlMmUyOGQ1MTU3Li44OTcxNTVhMTIyOTFk
YzRlNTM1MjM0ZTA4OGE4YzQyZWZhMDliNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTIxNyw5ICsyMTcsNyBAQCB2b2lkIEZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
dm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCiB7
CiAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4gbV9ieXRlc0xvYWRl
ZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPSBtX3Jhd0RhdGEtPnNs
aWNlKDAsIG1fYnl0ZXNMb2FkZWQpOwotCi0gICAgICAgIG1fcmF3RGF0YSA9IG5ld0RhdGE7Cisg
ICAgICAgIG1fcmF3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7CiAg
ICAgICAgIG1fdG90YWxCeXRlcyA9IG1fYnl0ZXNMb2FkZWQ7CiAgICAgfQogICAgIGNsZWFudXAo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXgg
ZDdlMmI3NWE0NTMxMjBiMDJkN2M3NDJkNDYwZjQ2YTRkZDU5OTQ4ZS4uZDc4MTEwY2M5ZWRiOWRh
MDA0ZDQxNTg0YWM0OWRiYWUwMDI0ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1
dExpbmUpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERp
cmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQ
LCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggMGRjYzg4OTA1MDYzZDJlYjI3MDllNjJlMzRlOTVlYTA3M2IyODhh
NC4uMTgxMGU3MjVlMTgzNDlhYjM2NjU2OGVlMTg1MGNkYmJiZWY5OWY2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQo
Y29uc3QgTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50PiBl
dmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMp
OwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3
aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBp
dCBoZXJlCiAgICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFz
IGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KQEAgLTY0NDUsNyArNjQ0NSw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAgICAgaWYgKGhhc01lZGlhQ29u
dHJvbHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
cz4gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAg
ICBhdXRvIG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1lbnQoKSk7
CiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGZmOTZmNGYyNDM1YjA5OGUw
NjY2MmYzM2NjMjA1ZTAwMGIzNzkxNmQuLjJhNmE5YzYxMjE0NTRmMzI2MTEzNmQxNThlOGY1OWUw
OWJlMTRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAt
NDczLDkgKzQ3Myw5IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVs
ZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1S
ZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxs
U3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hh
cmVkQ2VsbFN0eWxlKCkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKICAgICBhdXRvJiBjc3NWYWx1ZVBv
b2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoY2VsbEJvcmRlcnMo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2Nh
NGQ0MzQzMGE4NzkzYWVkOTdhMTk4MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2Ji
Njc0ZGM5NTIxZTkzY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApA
QCAtODYsNyArODYsNyBAQCBjbGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIAogICAgIENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAg
ICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxz
LmgKaW5kZXggNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0
MTNmOTMxNDhlMTNmNDlmOTY4NTUwNjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoaHJlZigpKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
aHJlZigpKTsKICAgICByZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXgg
YWNhNTFhNzdmMDMxNTMzOTI2NjJmNDBjM2Q0ZTI1NzliZGRkMDRiMi4uZTJiNDNkZDVlM2IxNTk5
ZmVkZjg0MDQ1YjJmMjgxZjA2ZDAzMTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJl
ZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZp
bmRDdXN0b21FbGVtZW50SW50ZXJmCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNj
cmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1l
bnQgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBs
YXRlRWxlbWVudCA9ICFvd25lckRvY3VtZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5h
bWUsIG93bmVyRG9jdW1lbnQsIGluc2lkZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3Jt
KCksIHRydWUpOworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRl
S25vd25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVt
ZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50
KSkgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKG93bmVyRG9jdW1lbnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlm
ICghbV9pc1BhcnNpbmdGcmFnbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggMDhjNmU1MGI1ODU0
OGRjODc3MTNlMjBjMjA4NDA5NjY0MmExM2ZhNC4uZTExOTJhZmY3MGFlOTdiMDNlMWI3YzI2YzFj
MDU0MWEwMmQyNDZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RkOjpv
cHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmUKICAgICAgICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3Rl
IHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRo
ZSBlbGVtZW50J3MKICAgICAgICAgLy8gc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNp
bmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVs
bHB0cgogICAgICAgICAvLyBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRl
ciB2aWV3LgotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAg
ICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19FTVMpOwogICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRl
TGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBu
dWxscHRyLCBudWxscHRyLCAxLjAsIGZhbHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0Rmxl
eEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2Nl
MTFiMmMzYjYxN2UyMDkwZDguLjM1YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVm
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUw
MiwxNCArNTAyLDE0IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0
ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJz
ZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdl
YlZUVEN1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3Jl
YXRlKCk7CiAgICAgY3VlLT5zZXRTdGFydFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBj
dWUtPnNldEVuZFRpbWUobV9jdXJyZW50RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1f
Y3VycmVudENvbnRlbnQudG9TdHJpbmcoKSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7
CiAgICAgY3VlLT5zZXRTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxp
c3QuYXBwZW5kKGN1ZSk7CisgICAgbV9jdWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRk
NzlhNWZlMTgyZTNmM2M5MWQyOTQyYmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3
YzliNTk2ZWMxMWMyMjI3YjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9N
UGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAp
CiAKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBub2RlLnByZXZpb3VzU2libGluZygpOwog
ICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQq
IGluIG1hcmt1cC5oCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBE
b2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQu
aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5v
ZGUucGFyZW50RWxlbWVudCgpID8gbm9kZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCgpKTsKICAgICBlbHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9u
T3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgbWFya3VwKQogCiAgICAgaWYgKGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwg
b2xkTGlzdCwgbmV3TGlzdCkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNr
IHRvIHRvdGFsIHJlcGxhY2UuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVw
bGFjZUNoaWxkKCpwYXJlbnROb2RlLCAqZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IG1fZG9tRWRpdG9yLnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0
KCksIG5vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZjM4YWEyMDA0YjI1NzM0
ODhiMTYwZDczOWNmZTk2MzNlZmM2ZWM1Li5jMGVjM2Y4YjcyNTg1NTE5NTczYjJiYzRjZTBkZWFl
ZmU3MDJhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRp
bmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYg
KGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0KSkgewogICAgICAgICBhdXRv
JiBjb250ZXh0MmQgPSBkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4
dCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0
cmluZ0luZGV4Rm9yS2V5KCJzZXRUcmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJh
bnNmb3JtKHN0YXRlLnRyYW5zZm9ybSkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXRE
b3VibGUoc3RyaW5nSW5kZXhGb3JLZXkoImdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2Jh
bEFscGhhKCkpOwpAQCAtNTMzLDcgKzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAg
ICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KSkgewog
ICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93
bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0QXR0cmli
dXRlcyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewotICAgICAg
ICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB3
ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxwaGEiX3MsIHdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMtPmFscGhhKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJp
YnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRl
cy0+ZGVwdGgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNl
dEJvb2xlYW4oInN0ZW5jaWwiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPnN0ZW5jaWwpOwpA
QCAtNjQzLDggKzY0Myw4IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVj
dG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgYWN0aW9uLT5h
ZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RG
TW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHRyYWNl
ID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRT
dGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2Fw
dHVyZSk7Ci0gICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZNb3ZlKHRyYWNlKSkp
OworICAgIGF1dG8gdHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4
ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhD
YWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRh
KHRyYWNlLnB0cigpKSk7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IDhlMWM0ODI5ZGZmNWJlYWMxZDZmYzAzMjA5Y2ViZmQwYzQ1MDU3NzQuLmEwYzM4ODdh
NmVmYzJhMDUxYzNhMzUzMTQ3ZDcxMzZjZjhhYzhhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLCB7IH0sICJfYmxhbmsiX3MsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd24gfTsKIAogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0g
V2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOworICAgIGF1dG8gZnJhbWUgPSBXZWJDb3JlOjpj
cmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCksIHsgfSwgY3JlYXRlZCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggM2NkZWM4NTA1MWVkMGMzMTRlN2U0MmM0OWJmYmEwODU1NTUzNzdjNy4uOTQ5OGU3NjBiZDk2
NDJhOTdkNjVlM2U5YzVhMzM0MDM0MjExOTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCogc3R5bGVT
aGVldCkKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gbGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKICAg
ICBWZWN0b3I8UmVmUHRyPENTU1J1bGU+PiYgbGlzdFJ1bGVzID0gbGlzdC0+cnVsZXMoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIGxpc3RSdWxlcy5hcHBlbmQoc3R5bGVTaGVldC0+aXRlbShpKSk7
CkBAIC02MzYsNyArNjM2LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KIAogICAgICAgICBh
dXRvIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UHJvcGVydHlTdGF0dXM6OkRpc2FibGVkIDogSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQ
cm9wZXJ0eVN0YXR1czo6QWN0aXZlOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNl
dE5hbWUobmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICAgICAgICAgLnNldFZh
bHVlKHByb3BlcnR5RW50cnkudmFsdWUpCiAgICAgICAgICAgICAucmVsZWFzZSgpOwpAQCAtNjk2
LDExICs2OTYsMTEgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZl
UHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29weVJlZigpKTsK
IAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5h
bWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91
c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5LmNvcHlS
ZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBib29sIGltcGxpY2l0ID0gbV9zdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0KG5hbWUp
OwpAQCAtMTMzMiwxMiArMTMzMiwxMiBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3Vy
ZVNvdXJjZURhdGEoKQogICAgIGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG5l
d1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOworICAgIGF1dG8gbmV3
U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgYXV0byBydWxl
U291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0Pigp
OwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9j
dW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVl
dEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVT
aGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7Ci0gICAg
Q1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0eWxlU2hlZXQu
Z2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKKyAgICBDU1NQYXJz
ZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVldC5wdHIoKSwg
bV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fcGFyc2VkU3R5bGVT
aGVldC0+c2V0U291cmNlRGF0YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAg
cmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcAppbmRleCBmMmVkNWVmODc2NmQwNDc5YWU0N2QwZDIzMzRkZDk3YTQ5MDMwZTlkLi5jYWQ2
NjY5M2E3ZTc1MzhmMjljYzIxYTk5OWZjMTY3MmM3NTExMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApA
QCAtNDM4LDggKzQzOCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUNh
bnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAKICAgICBjb250ZXh0
LmNhbnZhc0Jhc2UoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9y
Q2FudmFzPiBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0
KTsKLSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFz
LT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcyk7CisgICAgYXV0byBpbnNwZWN0b3JDYW52
YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBtX2lkZW50aWZpZXJU
b0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3Bl
Y3RvckNhbnZhcy5jb3B5UmVmKCkpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRD
cmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleAogICAgIGlm
IChtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCkgewogICAgICAgICBSZWNvcmRpbmdP
cHRpb25zIHJlY29yZGluZ09wdGlvbnM7CiAgICAgICAgIHJlY29yZGluZ09wdGlvbnMuZnJhbWVD
b3VudCA9IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50LnZhbHVlKCk7Ci0gICAgICAg
IHN0YXJ0UmVjb3JkaW5nKCppbnNwZWN0b3JDYW52YXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhdG9yOjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25z
KSk7CisgICAgICAgIHN0YXJ0UmVjb3JkaW5nKGluc3BlY3RvckNhbnZhcy5nZXQoKSwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3Zl
KHJlY29yZGluZ09wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5k
ZXggYWUzYWNhZmQwOTBiMGFjMTVjN2VmZDZmZWI4OTU5NDY0OGQ4OTk1MC4uZGVhNWM5YTMxZDRj
OTI4YmIzNGUxOGNiZGQ0NTQ5NGFlYjFhYmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAg
LTE3NiwxNCArMTc2LDE0IEBAIHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAgIHJldHVy
biBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51bGwpLnJlbGVhc2Uo
KTsKIAogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgU3RyaW5n
JiBzdHJpbmcpIHsKLSAgICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpj
cmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOworICAgICAg
ICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6
OlN0cmluZykucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRTdHJpbmcoc3RyaW5nKTsK
ICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVjdG9yPFN0cmluZz4m
IHZlY3RvcikgewogICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+Ojpj
cmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3IpCiAgICAgICAgICAg
ICBhcnJheS0+YWRkSXRlbShzdHJpbmcpOwotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0
aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVh
c2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShL
ZXlQYXRoOjpUeXBlOjpBcnJheSkucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRBcnJh
eShXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IGVlNDRlYWNhYmRlNWFhMTA3MzI0NTU5NDgyNWNhNzZkZDIzMTE3ZDUuLmMw
ZWMzZWY2OGJiZTdjMTI5ZDk2YTAyMWVkYzQ4YjU2MjQxMWQ3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAg
LTg5Miw3ICs4OTIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJ
VkUpICYmIFVTRShDRikKICAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShm
cmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGZyYW1l
KTsKICAgICBpZiAoIWFyY2hpdmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90
IGNyZWF0ZSB3ZWIgYXJjaGl2ZSBmb3IgbWFpbiBmcmFtZSJfczsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZjY1YWViYzlkZjZhNjVi
ZDJmZjQ4N2RmYTM2N2I3YzNlZGZiOTYyLi41NjBjM2E1MDYwY2FlNjJlMDBjNjI4NGUyNTk3Mzc4
MjEwMzllY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzgz
LDE0ICszODMsMTQgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwg
OiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9OwogCiAgICAgc3RydWN0
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsK
LSAgICAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEp
OyB9Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAg
UmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBm
aW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CisgICAgICAg
IFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCi0gICAgUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQp
IGZpbmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CisgICAg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQp
IGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CiB9OwogCiBj
bGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQ
cm92aWRlciB7CkBAIC01MTMsMjIgKzUxMywyMiBAQCB2b2lkIEVtcHR5RWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKIHsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggNTUzNTQ3OTExNDdlNTg4YTA5NGViNmNiYWMxYjQyN2ExN2VmZGRhZS4u
YTg3M2IxZDBlYWM3MjhkOGZlZjZkMGIyNTgwZTJmODU0ZTczNGFhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHJlZgogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAgICAgaWYg
KCFyZWZlcnJlci5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
cmVmZXJyZXIpOwotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZmVycmVyT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOworICAgICAgICBh
dXRvIHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVm
ZXJyZXIpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgcmVmZXJyZXJP
cmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIH0KICAgICBpZiAoJm1fZnJhbWUudHJlZSgpLnRvcCgp
ICE9ICZtX2ZyYW1lKQpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBj
b24KIAogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFhGcmFtZU9wdGlvbnNT
YW1lT3JpZ2luOiB7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHRvcEZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVl
KCkucGFyZW50KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKQEAg
LTM2MzksNyArMzYzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVu
dEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdU
Rk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRl
bS5mb3JtQ29udGVudFR5cGUoKSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVy
cmVyKCkpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKICAgICAgICAgYWRkSFRUUE9yaWdpbklm
TmVlZGVkKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKICAgICAgICAgYWRk
SFRUUFVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzSWZOZWVkZWQocmVxdWVzdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBlMWQ2
MGViOTBlN2I3MzQ5N2MxYWFkYzFiMzRlZDdjMzVjNDZhZTZlLi40YmFkMTgzZTA4NTQ4YzQ3ZGRk
OTgyMjllZTllNjJiNGViNDliNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyCiAgICAgU3RyaW5nIG1vZGUgPSBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9k
ZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlk
KCkpKTsKIAotICAgIFJlZlB0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgbW9k
ZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAgIGF1dG8gbG9hZGVy
ID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGll
bnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKICAgICBNZXNz
YWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsK
ICAgICB3aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJt
aW5hdGVkKQogICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2VyR2xvYmFs
U2NvcGUsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IDVmZDM5YmU3YmQxNDBiZWU0MmI5MWEyOGFmODZkZjc0
YTdlNzRkNzIuLmMzYjVlM2UxZjIyOTM0MTA2NjYyNjA5YjRhMDEwMzljMjBlOTExMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5j
cHAKQEAgLTEzMSwxNiArMTMxLDE2IEBAIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9B
cmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSoKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1YmZyYW1lID0gTUhU
TUxBcmNoaXZlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpj
cmVhdGUoKTsKICAgICBzdWJmcmFtZS0+c2V0TWFpblJlc291cmNlKCpyZXNvdXJjZSk7Ci0gICAg
bV9mcmFtZXMuYXBwZW5kKHN1YmZyYW1lKTsKKyAgICBtX2ZyYW1lcy5hcHBlbmQoV1RGTW92ZShz
dWJmcmFtZSkpOwogfQogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFy
c2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLCBjb25zdCBTdHJpbmcmIGVu
ZE9mUGFydEJvdW5kYXJ5LCBjb25zdCBTdHJpbmcmIGVuZE9mRG9jdW1lbnRCb3VuZGFyeSwgYm9v
bCYgZW5kT2ZBcmNoaXZlUmVhY2hlZCkKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnku
aXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
YXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBjb25zdCBib29sIGNo
ZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5k
T2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0yMTEsNyArMjExLDcgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3Qg
TUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29k
aW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBN
SU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQg
aXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBo
dHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFu
ZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBlZTk3YjJi
ZDRmZDA3MjJiNWJhM2JkNWZhZWUxYmM2ZGZjMTY2NjIwLi5mODYzMTM1MmMyMjBkZDFmYjU0NTgx
MjU3YmU1Njg1OThmM2Y2ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKQEAgLTIxNiwxMSArMjE2LDggQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBh
cnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAot
ICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBpZiAoIWJpdG1hcEltYWdlKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lvbklELCBkb21haW5G
b3JDYWNoZVBhcnRpdGlvbik7CisgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNz
aW9uSUQsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRD
bGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVj
b2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTQxLDcgKzUzOCw3IEBA
IHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgm
cmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOworICAgICAgICAgICAgYXV0byByZXNvdXJj
ZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOwogICAgICAg
ICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKICAgICAgICAgICAgICAg
ICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMjc3Mjk1MDQ1NGIzMGI4NTIyODRkNmNlYjUxNTYy
MjdiNmE5N2RlMi4uNjg5OTRhY2NiZGJkYmRiNTRjYWI1MWJiNDMzYzhmZjY0ZDRiYTMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgUmVmUHRyPENT
U1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9IGZyYW1lLT5zZXR0
aW5ncygpLmNyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKCk7CiAK
LSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxp
c3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGlm
ICghYWxsb3dDcm9zc09yaWdpbiAmJiAhcnVsZS0+aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigp
KQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxv
b2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAg
IC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVs
YXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRy
PEZyYW1lPiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9w
ZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3Jl
YXRlZCk7CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZl
RnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0
dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0
cjxGcmFtZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCA2ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUx
NzMzMzk2YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAog
c3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3Np
dGlvbiYgZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0
YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQs
IGVuZCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCks
IHRydWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2lu
Z2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5
Li4zYTQ2OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxl
U2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5p
c2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhl
IGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdo
ZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApp
bmRleCBiNDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFh
ZmUxYjJiNzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEg
KzE5MSwxMSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVy
YXRpb25zKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9w
KQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0
eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAg
YXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZN
b3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1
ZDNkNTQ2NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2
NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBA
IHZvaWQgRnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5
bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWRE
b2N1bWVudCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRv
IGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMs
IHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0
aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9N
V2luZG93KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRv
Y3VtZW50LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJv
ZHlFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkp
CiAgICAgICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUp
OwogCkBAIC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25z
Rm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQg
dGV4dCB0aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdU
ZXh0U3RhcnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1
dG8gcHJlY2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2Vk
aW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5n
VGV4dCA9IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAg
ICAgIGlmICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAg
ICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIu
Z2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUo
KmRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0
YXJ0T2Zmc2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5l
bmRPZmZzZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0g
cGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRl
cnByZXRhdGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygp
LnNpemUoKSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJl
dGF0aW9uc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBm
b3IgdGhlIGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUg
dGV4dCwgb3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjpp
bnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmlu
YWxseSwgYWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFu
Z2U+IGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJl
Y2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290
LCByb290Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxh
aW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1h
cmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3Vu
dCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFz
dE1hcmtlclJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlv
bnMpCiAgICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJr
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBk
MC4uYzk2YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBA
IC0xNTYsOCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGln
aHQ6OmZhZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNl
XTsKICAgICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+
KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdo
bGlnaHRJbiIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlv
biA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Cisg
ICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+
YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5n
ZXQoKSk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpm
YWRlT3V0KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNo
RmFkZU91dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRP
dXQiLCAqcGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRv
d25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFu
aW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgp
KTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4
NTliNzEzZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBw
b3NpdGlvbikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKCkpLCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0
byBjcmVhdGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCks
IHNpemVvZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0
NWY2NmQ1ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4
OWRiM2I4OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2Fs
Y3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRp
CiAgICAgLy8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1l
ID0gaW5kZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBz
dGFydEZyYW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJl
c3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxl
UmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0
byBwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVy
RnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFu
bmVsKiBsZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6
OkNoYW5uZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNl
ID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBl
NzlkNmMxOGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUw
MjY0MzU0NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jl
c2FtcGxlcjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNv
dXJjZUZyYW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3Zp
ZGVkIGJ1ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIu
Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9m
U291cmNlRnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEs
IG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdh
eSB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5u
ZWxNZW1vcnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3
MTgwOTA3NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUy
LDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1
dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUs
IHRydWUpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAg
ICBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5n
ZXQoKSwgYXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThi
OTYyNDgyNWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5
YzJkZjIzMDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBA
IFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxl
UmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRv
TW9ubyA/IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdo
ZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1
ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVz
KTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQs
IG51bWJlck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZv
ciBsYXRlcgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRj
MDk1MTE1ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2
YzI1NGZjYjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAt
NTEsNyArNTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQ
TEFURk9STShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24p
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPElj
b24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29u
KSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUu
aAppbmRleCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4
OTNiNDQwZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJh
Y2tQcml2YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07
Ci0gICAgc3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9y
bWF0IGZvcm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUo
Zm9ybWF0KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0
ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFj
a1ByaXZhdGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRl
KCkgPSBkZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmlu
ZGV4IGI4Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmE5MzU1MDAzODlh
YmRiM2QxNGU3NmVkODdkMzNkYTQ3M2E2ZjYxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5
MSw4ICsxODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRl
IGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5
dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1
bnNpZ25lZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAg
ICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4g
aW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlS
ZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5p
dERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAg
ICAgICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAg
ICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAg
ICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVm
ZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsNyArMTkwOCw3IEBA
IGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBhdXRvIHJlc291cmNl
TG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2UmVx
dWVzdCk7CiAgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0LCBy
ZXNvdXJjZUxvYWRlcik7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNl
MTQwODA0NTUwZDlhZWVjMzhhMzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNh
YzFjMmQ5MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNs
YXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMDU3ODVjYWUzNjE2ZGZmYmU5
OTM5ZTAzZGE1MTkzYzY5MTQ5NTRmLi4zMTA3ODBjM2FjYWJkODE1NTVjM2QwMTllM2I0OGM2Y2Y3
NzdhOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0
YXRpYyB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3QgKnJlcXVlc3QsIEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJl
cXVlc3RlZEtleURhdGEgPSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwg
c3RhdGljX2Nhc3Q8aW50PihlbmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0g
a2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4o
ZW5kKSk7CiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpy
ZXF1ZXN0ZWRLZXlEYXRhLT5ieXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJl
c3BvbmRXaXRoRGF0YTpuc0RhdGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7Cisg
ICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdl
IENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVz
b3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4
IDBjMDRhZjkwNDMwMjkxZjEyYTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFl
ZmNmNDhiZWYxYTQzNjRkNTg0YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7
CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3BsYXllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5
ZTkzNzNjYy4uMmIzN2VjN2RmZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1t
CkBAIC00NCwxMCArNDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0K
ICNwcmFnbWEgbWFyayBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCogY2xpZW50KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9
IGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7
Ci0gICAgY2xpZW50LT5zZXRQcml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAg
ICBhdXRvIG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9w
ZW4obWVkaWFTb3VyY2VQcml2YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNl
UHJpdmF0ZTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0
YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1J
bnN0YW5jZShtX2NkbUluc3RhbmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBu
ZXdTb3VyY2VCdWZmZXI7CisgICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVm
KCk7CiAgICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikp
OwogCiAgICAgcmV0dXJuIE9rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggODMwMGRjM2I2ZTM5ZThjYWIxNDVhZWJhMjE3
NmU5ODExZGZjOTg3MS4uZjE3NjI2MjM0YjliNWEwYWRlOGMyNzU0N2E0NDY1N2E0ODJhY2QxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
RXJyb3JDbGllbnQgewogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6
IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQyopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0
ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMoKTsKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRp
YVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYTk5ZmViN2Y2NTNjOTkxMTZkMGYzMzll
YzM3NzVmYzIwY2VmMGJlZC4uMWM1NjYzNjYwZDlhZWRjYzg5ZTZiNTIzM2I4ZmM0YWIzZDZlZDZj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTQzMCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBj
bGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0
aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
PiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3Jp
cHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBz
dGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVy
UmVmLCBjb25zdCB2b2lkKiwgQ0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0Nv
bnN1bWVkKCk7CiB9CiAKLVJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCitSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMo
cGFyZW50KSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEs
MTYgKzU1MSwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAg
ICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6
OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBp
bmZvLnRyYWNrID0gdmlkZW9UcmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5k
KHZpZGVvVHJhY2spOworICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAg
ICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVv
VHJhY2tzLmFwcGVuZChXVEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVz
Y3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAg
ICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2Ug
aWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1
ZGlibGVdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAg
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7
Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVk
aW9UcmFja3MuYXBwZW5kKGF1ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNr
ID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhp
cyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAg
ICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAg
ICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRl
KHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJk
ZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5
MWYzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3Mg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMp
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA4MGNmYzRmYWMzNDVjOTJlY2Q2MTczN2ZjOTI1NGRj
ZDhiNzU1YmY4Li45MWRiNjU0MWM0YjEyM2FlYjM0NmVhMzkyYWUwNDM4NDBkMjQzOWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1h
cmdpbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRn
ZXMucmlnaHQoKSkgLyB0aWxlR3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QsIFRpbGVHcmlkJiBncmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xs
ZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdy
aWQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxh
eWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7
CisgICAgYXV0byBsYXllciA9IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXll
ck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGls
ZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0Lmxv
Y2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKaW5kZXggYWUxOWI4YzUxNzFmZDU3NDFhNTUxNWY3NmE2OTg4NjY2
MmZhZjA3Yy4uZGI5ZDQ1MzEwN2JkNDkwMDUxNjUyMGQ1YTA2NzUyMGFjMjY2YTRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5oCkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgVGlsZWRCYWNraW5nIHsKIAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVj
dCYsIFRpbGVHcmlkJik7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVy
KGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVH
cmlkKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggMmE5ZDkxYWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFi
YTQ2ZjRjM2JjYTVkMWIyYWMzYzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3QuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7
CiAgICAgfQogCi0gICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVy
VHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0Ojpj
cmVhdGUoKTsKIAogICAgIGlmICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsK
QEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRy
ZWVIb3N0OjpjcmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJl
ZUhvc3Q+IGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0
byBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9z
dCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0
IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQnVmZmVyTWV0YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5
MzFmNDY4YTRmOTc5NS4uZmNjMjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJ1ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVC
dWZmZXI+IEdQVUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZm
ZXJEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVz
KHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAg
YXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWdu
ZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNh
Z2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAg
YXJyYXlCdWZmZXItPnJlZigpOwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRz
ID0gYXJyYXlCdWZmZXIuZ2V0KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVu
dHMgPSBhcnJheUJ1ZmZlci5wdHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJl
c291cmNlT3B0aW9ucy4KICAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFk
b3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRl
c05vQ29weTphcnJheUJ1ZmZlci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDk0NzY4ZGMxYTkyYTJmNjRiZjJjZTIxMjY4ODE0
YWEyOWEwOWY2Y2YuLmRlNzhkYjYwN2ZhMTFmN2E1OGRlZmY0YTk4MjQyM2JiOGJhOGRkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03
MzQsOSArNzM0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRy
YWNrcygpCiAgICAgICAgICAgICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9
IGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2Up
IHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1f
dGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5h
ZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsK
KyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7
CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRp
ZgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNr
IHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
ODk0LDEwICs4OTQsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlm
eVBsYXllck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVm
UHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBh
dXRvIHRyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0
cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQo
KSk7Ci0gICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
IG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3Mu
YWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlk
ZW9UcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFj
a3ModmFsaWRWaWRlb1N0cmVhbXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4g
dHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0
aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NF
UlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChz
dHJlYW1JZCwgdHJhY2spOwogICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2sp
OwpAQCAtMTAyOSw5ICsxMDI5LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVGV4dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0
VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRy
YWNrKCp0cmFjayk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJl
YW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0
cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRl
eHRTdHJlYW1zKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBH
U1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21l
c3NhZ2UobWVzc2FnZSkpIHsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1
cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNr
KSB7CisgICAgICAgICAgICAgICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBs
YXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdTVF9JTkZPKCJnb3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFj
ayBpbiBkZXN0cm95ZWQgcGxheWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NU
X1NUQVRFX1JFQURZKTsKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVs
aW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2Fs
bGJhY2spOworICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxl
cl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVz
Y3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3Nh
Z2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxN
aXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJv
bVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAg
ICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
cyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3Jp
cHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01Q
RUdUUykKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAg
ICAgICAgICBjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNv
bnN0IEdzdE1wZWd0c1BNVFN0cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywg
aSkpOwogICAgICAgICAgICAgaWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJl
YW0tPnN0cmVhbV90eXBlID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcg
cGlkID0gU3RyaW5nOjpudW1iZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0
cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAg
ICAgYXV0byB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRh
ZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAg
ICAgIC8vIDQuNy4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExv
Y2F0aW9uKCkKICAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7
CiAgICAgICAgIGNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShtX3VybCk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG1fdXJsKTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0
KG5ld1VybCkpIHsKICAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3
IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRl
eCA4OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1
NTE5Nzk5OGZlNzE4MWI5YzhhNTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVk
KQogICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQ
dHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KG1fc2FtcGxlLmdldCgpKTsKKyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNy
ZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMDI2YTIwNTcz
ZWMzMmFkYjJhM2JjOGE2ODYwMjNlYTgwYWQ4MzEwOC4uZDA5MjkyMGMyNmJkNjBlOTgzYmZhMTQz
NjZkNTYzOWVmZmZjZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAg
LTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdS
ZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRp
YVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25T
aXplLCB0cmFja0lkKCkpOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNh
bXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXpl
LCB0cmFja0lkKCkpOwogCiAgICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVz
IERUUz0lcyBEVVI9JXMgcHJlc2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRp
YVNhbXBsZS0+dHJhY2tJRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2
LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRp
YVRpbWU6Onplcm9UaW1lKCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+
ZGlkUmVjZWl2ZVNhbXBsZSgqbWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZS0+ZGlkUmVjZWl2ZVNhbXBsZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5k
UGlwZWxpbmU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRl
YjNjMzVlYTEzOWMwZTcwNjI5ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4
NzdiYzk2YjUxMmQ1NTFmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVk
JiBvZmZzZQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0
byBzeXN0ZW1JRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYg
KCFzeXN0ZW1JRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2Owog
CiAgICAgbV9zeXN0ZW1JRC5yZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZQogICAgICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNb
a2V5SURdOwogICAgICAgICAgICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAg
ICBhdXRvIHBhcnNlZEtleUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsK
LSAgICAgICAgICAgIGlmICghcGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgb2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJl
bnRLZXlJRC5kYXRhKCksIHBhcnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAt
NzYsOSArNzEsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6
cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5
dGVMZW5ndGgoKSAtIG9mZnNldCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgYXV0byBwYXJzZWREYXRhID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFT
aXplKTsKLSAgICBpZiAoIXBhcnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSBkYXRhU2l6ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5j
cnlwdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
VHJhY2tFbmNyeXB0aW9uQm94LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIz
MDZiYzVjNzVhMDRmLi4yYzk0ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tF
bmNyeXB0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1Ry
YWNrRW5jcnlwdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXIt
PnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJ
RC5yZXNpemUoMTYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2
N2YyMzAxNzIzNTkxNDYzMTdmYzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIy
MmI4Y2ViMmNhNjBhMzFmYzk0ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZp
bHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAg
ICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQo
YmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgp
OworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlP
cCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRv
T3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0
eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3Ag
PyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXgg
YzY2ZTQ2MzYyMDAyODY1MGI0NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3
OTdmMDcyNzI1ZTBjNmQ3ODNkZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1h
cFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCks
IG1faW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6
Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxG
b3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0
bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVy
ZUlEKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5j
b3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVy
ZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMu
Y3BwCmluZGV4IGY5NDRmMDdhNThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUy
ZmUyYjY2N2JkZWYzMWE4YmM5Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlv
bnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBU
cmFuc2ZvCiAgICAgICAgIGlmIChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24g
PSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRv
IGlkZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgp
OwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0
eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQo
dG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFw
cGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9u
ID8gZnJvbU9wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NjBkYTM4NjM4ZWY1
MmE5MGVkMWZkODliNTJkZWU5NjU0MzAxNTNjLi4wNmMwYTE5ZjMwZDM5ZDE5MTlkMmI0Y2ZkNDFk
NDQ3ZWMwNTQyMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0
NCw4IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVj
dG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlz
IGNvcHkgYnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBv
cHRpb25hbCBvZmZzZXQuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1f
ZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2Rl
cnNbaW5kZXhdLT5zZXREYXRhKCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBh
dXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50
cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNl
dCk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNB
bGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6
ZV90IGluZGV4LCBib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmlu
ZGV4IGU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkz
MzNmYzNlYmMzM2M1MTdiYjJkNDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDEx
IEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVm
ZmVyKiBkYXRhKQogICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQg
PCBtX2xlbmd0aCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRh
dGEtPnNsaWNlKG9mZnNldCk7Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZm
ZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZl
ciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShz
dWJCdWZmZXIucHRyKCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7Cisg
ICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBv
ZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFj
a0JveCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRl
eCAyYThiMjRiZDJmOTIxZTFjMWYzNTAwMjIyNzdhODMzODdlYzM3YWZlLi40MjU4ODk3YmU2YmUz
OTExZTYwYmVkYWMxMDFmMzNlMDk5YmNkMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01l
ZGlhU2FtcGxlOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tN
ZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBN
b2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0
aW9uKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRl
KGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRp
YURlc2NyaXB0aW9uKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24o
KSA9IGRlZmF1bHQ7CiAKICAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2JveC5jb2RlYygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01l
ZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9j
a1RyYWNrQm94IG1fYm94OwogfTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBh
cmVudCkKK1JlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAog
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRp
YVNvdXJjZVByaXZhdGUqIHBhcmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQog
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9p
bnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6
OkFwcGVuZFN1Y2NlZWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIu
c2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgo
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNp
emVfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAg
ICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRy
KCkpOwogICAgICAgICBpZiAodHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkg
ewotICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlh
bGl6YXRpb25Cb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlv
bkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAg
ICAgICAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAg
ICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsK
KyAgICAgICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OlBhcnNpbmdGYWlsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5k
ZXggYjNmOGFmNDJhMmY0MmFlYjllZGVjZTZhYjMzYjVlODdhNTI3MjUyOS4uMTU3NjAwNTNjYmYw
ZjA1Mjk0MzM4YzQ3ZjI2MTE1MjNiYTk4MjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAog
Y2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVy
UHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwog
ICAgIHZpcnR1YWwgfk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFy
TWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4
IGI0NmNhNmI2MDExYjAyMjkwZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFh
NGZhZWYxYzBkZjc1MjA4MzRjNjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBA
IGNsYXNzIE1vY2tBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7
CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+
IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1v
Y2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNr
UHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1Rl
eHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1Rl
eHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNz
IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25z
dCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNr
UHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBj
cmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9j
a1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQ
cml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKaW5kZXggZDdjMWU1ZmFhMGRlNTA3ODNiZmI0NzcyNGJmNTk5MTlhYjY2ZjkxZC4uYzQ5
ZjQyMTc4MTIwYTRjM2QyYjRkMzAyNjg0YjJkODNhZjFmNDZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9y
bURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4KIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEtPm1fYWx3YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zMTksNyArMzE5LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVy
biBXVEZNb3ZlKGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9y
YWdlT2JzZXJ2ZXIuaAppbmRleCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2Fl
ZTY5Li44ZTc3MzNjNTdhZDUwZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
U3RvcmFnZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q29va2llU3RvcmFnZU9ic2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxD
b29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAg
IHN0YXRpYyBSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3Rv
cmFnZSAqKTsKICAgICBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAq
KTsKICAgICB+Q29va2llU3RvcmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2
ZXIubW0KaW5kZXggOTE4MTcxYzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQy
NWFlMTBkMmYxYWJhNzM4M2I3MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdl
T2JzZXJ2ZXIubW0KQEAgLTc0LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6
Y3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3Rv
cmFnZU9ic2VydmVyPiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVT
dG9yYWdlICpjb29raWVTdG9yYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2ll
U3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9y
YWdlT2JzZXJ2ZXI6OkNvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpj
b29raWVTdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJk
MTRmMTliYTIxYjkyMmNjYjEwMTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4
NDk1N2IwMGQyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
c3RhdGljIHVpbnQ2NF90IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNv
dXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1l
LT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmls
ZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNv
bmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5m
aWxlKCktPnBhdGgoKSkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkg
Y29uc3QKICAgICAgICAgICAgICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAg
ICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2Jv
ZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwog
ICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0
YSYgZmlsZURhdGEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEu
ZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5j
cHAKaW5kZXggYzkwODY5MzAxNjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2
ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVu
LmNwcApAQCAtMTY5LDE0ICsxNjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDog
cHVibGljIFJlZkNvdW50ZWQ8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFs
IH5IeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRy
PEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQ
YXRoKQorICAgIHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3Qg
Q1N0cmluZyYgZGljdFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5
cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBo
ZW5EaWN0KiBsaWJoeXBoZW5EaWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4
YTI3MThiYWM3ZGYxNmU2YmM0OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNl
NjdiM2NlN2NlMTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTZWFyY2hQb3B1cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihj
bGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50
KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQog
ewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwog
fQogCiBib29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5
ZmVhZjM1YmZiOGIzN2IxOWEzY2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZj
NTdiNTlkYzE1NDNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVX
aW4gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVm
PFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2
YjJkNGIwYTliLi5lZTFlMjI2ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYy
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVy
U3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0
dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1l
bnQucmVuZGVyVmlldygpLCBkb2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAg
ICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsK
IH0KQEAgLTkxNywxMiArOTE3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jl
c3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29u
dGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBS
ZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
cHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwog
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwg
MHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhl
ZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBD
b2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChz
dHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdy
YWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEkKICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENv
cm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwog
CiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47
Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmlu
Z1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBl
ckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0
UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhl
aWdodCAtIDEuNSkgfSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29s
b3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVu
dCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUodXBwZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChG
bG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgo
KSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAg
ICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24o
KSwgMC4wLCAxLjApOwogICAgICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qu
d2lkdGgoKTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGlj
YWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAg
IGF1dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRh
IHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSks
IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVz
c0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAu
MCwgQ29sb3IoMTk1LCAyMTcsIDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuNDUsIENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsK
LSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGll
bnQpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAg
YXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwg
RmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNz
QmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjUsIENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3Zl
KGJhclN0cm9rZUdyYWRpZW50KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBp
bnQgbGVmdCA9IHJlY3QueCgpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0
eWxlJiBzdHkKICAgICAvLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5
IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAg
Ly8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5k
ZXIgdmlldy4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAg
YXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8
aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwg
MS4wLCBmYWxzZSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiAKQEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWlu
dEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVu
dEluZm8mCiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0
cjxJbWFnZT4gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKLSAgICBpZiAoIWljb25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4
dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRl
eHQuZHJhd0ltYWdlKGljb25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5k
ZXJBdHRhY2htZW50SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2Vh
YmRlNGMwNmE5OWRmYmZlMzY5NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0
ZGMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJj
ZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXImCiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xk
ZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRS
ZWN0IGR1bW15UmVjdDsKLSAgICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBT
VkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3Qs
IGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVp
bGRQcmltaXRpdmVzKCpkdW1teUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9
IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVj
dCwgZHVtbXlSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5i
dWlsZFByaW1pdGl2ZXMoZHVtbXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3Ry
ZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0
ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlLmNwcAppbmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQy
NWRmZjc2Li5jMjY5YTg1NTk0NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5k
b3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9y
YWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdl
QXJlYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92
ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRv
dywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShE
T01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDog
RE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShz
dG9yYWdlQXJlYSkpCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3Jh
Z2VBcmVhKTsKIAogICAgIG1fc3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEz
Zjc1MGExY2IzNzgyMDEuLjk4M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3Jh
Z2VBcmVhOwogCiBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBS
ZWY8U3RvcmFnZUFyZWE+JiYpOwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdDsKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0Owog
Ci0gICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsg
fQorICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5n
ZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiYmKTsKKyAgICBTdG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7
CiAKLSAgICBjb25zdCBSZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29u
c3QgUmVmPFN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0
MDlhNDMzZTFkNWMxZjZlMmQ3ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJj
MDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
OwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1l
c3BhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZh
dWx0OwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFy
ZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4
NTY1M2UxNmE2Yzk3NTk1YzRmLi41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1
ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwog
fQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgLy8gVGhpcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9t
IHRoZSBEb2N1bWVudCdzIFBhZ2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIg
c3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0
MjRmMDA2OTgyOTYyYjFhNzZmLi5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdh
ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWdu
ZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFn
ZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+
IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7
CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiB7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNl
KCk7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFNlY3VyaXR5T3JpZ2luJik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZp
cnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkIHF1b3RhKSA9IDA7CiAKICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMDI1Yjk2YmJjYjQ0NDg2MTFjNzM0NWIwY2RmYzdhMTBk
OTZjZTUwNi4uODVmNmZmMTJmMzg1NWU3MmYzNTE1Y2YzMjdiNTM5YjVmM2QwMjNiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJl
Y2F0ZWRDU1NPTVZhbHVlPiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJgogICAgIGlmICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3Bl
cnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJp
YnV0ZS0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmli
dXRlLT52YWx1ZSgpKTsKICAgICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNw
cAppbmRleCA4YzY2ZDJjMjIxNjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi5jMjQxZTMw
ZTM5ZTY1MDhhMjliNzU0Yzg3ODZhOWQ4ZjgwZTNhYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRl
KGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShmaWx0
ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7
CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggNTE1ZDMyZmZiY2Q3ZTUzYTdiYjRm
NThmZGFiODI1YmY2MWM5N2I3OS4uNzUxM2FjZTUxNzkwZjg2ZDhlOWNmOGUwYzgxNjQ2MjkwNzIz
Mzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZh
bHVlcyk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBm
aWx0ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBw
ZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0
NjMwMDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjUyYmU5NzEyYmM1ZjYxYWI0N2UyMjY4
MDAwZjJiMTk2ODBmNjY5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksNyArODksNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxl
bWVudD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRl
ciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25l
bnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5k
ZXggYTEwZTNhNzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uZDM4NTU3NDc3YzE2
ODliMjE4YWJkYzlmMGE5MTYzZjE0OTVjYmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZQogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6
OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9y
KCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5w
dXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVz
ZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggYjliMDIzYWMwMDZjMDdlY2NkZDA3Nzc0OWQyNzI1OTIzZDJiZmQwNC4uMDY3ZjEyY2I3MDM5
ODJjN2VkMTQyODRmMDRjNjBkMzdjN2UxZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5
bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHls
ZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qg
PSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgp
LCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0
aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNl
TGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNv
bnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1v
dmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1
dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJk
OTZhZDc3MWRiNWZmYWZkNDRmNTMuLjE0Zjc3ZjlmNmY4ODEzMTk2NGJiNDJlYTI5NWQ5MTM3ZTY5
Y2RkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIK
ICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVh
dGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUo
KSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwg
eENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOwogICAgIEZp
bHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsK
ICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5h
cHBlbmQoaW5wdXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcAppbmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi5k
NTRlNWYyYjY4NWU5OTM1NzlhZjk1MTkzNzc2NWZhMzRlYTNiMWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFk
b3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgp
LCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6
OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBk
eSgpLCBjb2xvciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQo
aW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA5MzMxODdlNmQwNDlhNGZlZjdkNzE0
ZTZhMzk1NjUxMTQxYTRjYTAwLi4zMjBmOTIxZmUwYWZiZWUyODJmNGRmNzg3NzNkZWJjYzc4ODEy
YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpCiAgICAgaWYg
KHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNz
aWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCks
IGVkZ2VNb2RlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShm
aWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZl
Y3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJh
OTkxOTNjODliMGY3ZTkxYjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5mYjkyYTM1ZThkNDQwMzc4YzIw
YzBjNjI1ODVjN2I1ZWE5ODRkMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1l
cmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0
ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJn
ZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdl
Tm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggZmNi
YzYzYjYyZTZlMTA2ZWJiNWQ1NjIwOWUzZjUyOTlkOGIwYjZmYy4uZTNlODFhZmUxYWY3ZjEyNmU0
ZDliMDdlODAzOWMyZThhYjhkODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkCiAgICAgaWYgKHhSYWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTW9ycGhv
bG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7Cisg
ICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9y
KCksIHhSYWRpdXMsIHlSYWRpdXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFh
ZGJkMDIyMi4uYzQwMmU0MDNlYjJiOTQ0Mzk4OGM4YjBlYTk0OWIzN2ZkMDI0ZWFkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0Ojpj
cmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0Ojpj
cmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFw
cGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggM2EyZjRkMjNm
OTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2ZlNy4uOWU0ZDdmZDQyN2ZjYjFkMGMxYmJjZWE0
MzQ1ZDVlYmU5NWRjZTUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5j
b2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxp
Z2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNw
ZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3Bl
Y3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5p
dExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwog
ICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVm
ZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCAzZjM4
NzlkN2U2NmE4YzFkZGY5OTIzMjYzYjdmZTAwNjI1NDg5MjQ0Li5hZTBkMTkxOTgwNTdiOGYyNDIy
ZjFiYmZjNTE4MGY1M2QwZWE1NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpCiAgICAgaWYg
KCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgICBhdXRvIGVmZmVjdCA9
IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBl
bmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dD
T2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFjMTVhZWEwYmE2NTFiYjRm
YjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0NzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
cz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxHQ09ic2VydmF0aW9uPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBjb25zdCB7IHJldHVybiAh
bV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXgg
YTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4uOTkwMTdhYmViNTk5MzNj
MzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3Jl
YXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nCiAgICAgICAg
IGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNy
ZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5zZXRFbmNvZGluZyhz
b3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhz
b3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVhNTEhlYWRl
cik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2RlcikpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmMjhh
OGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUwYTAyY2ViZjkwZTJhY2Mz
ZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBYTUxEb2N1bWVu
dFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3Vt
ZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFhNTERv
Y3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50
LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byBwYXJzZXIg
PSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFy
c2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0gcGFyc2VyLT5hcHBlbmRG
cmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwgZmluaXNoKCkuIFRoZSBm
aW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2ggdGhlIG1haW4gZG9jdW1l
bnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50IGNhc2Uu
CiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0byBhc3Nl
cnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDZkNGEw
ZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5ODNjYzBiZWE1ODM4NjNh
N2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyArNDksNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlvbiogY3VycmVudENvbm5l
Y3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZiZjVmMjhkMDdlZDJkZDY0
NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVhMmQ2MmNhMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
CkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNs
YXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBmYTMzY2E1NmY5YTY1MDlm
NmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFlZWM0NzcyNjllM2FlOGNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0
aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdLQ29u
bmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRNZXNzYWdlV2l0aE5hbWU6
KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJvZHkKIHsKLSAgICBSZWZQ
dHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNP
YmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxmLl9jb25uZWN0aW9uLnBv
c3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBhdXRvIHdr
TWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5
KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3Nh
Z2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0aW9uJilfY29ubmVjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3Zi4uMTJiZjUzOTVmZmI3
N2M3YWJkZGFmMjkwY2RjZmNhOTZhZjkxNDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzExMzQsNyBAQCAtICh2b2lk
KXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAq
KXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdl
ID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgUmV0
YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNuYXBzaG90V2lkdGgsIGlt
YWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0KCksIG5pbCk7CkBAIC0y
MDYzLDcgKzIwNjMsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmll
d1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFjZTo6YWxsb3dDb252ZXJz
aW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21wcmVzc2VkRm9ybWF0KSkg
ewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZpZXdTbmFwc2hvdCA9IFdl
YktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAgIGF1dG8gdmlld1Nu
YXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRyKTsKICAgICAgICAg
V2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2Vi
Q29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAgICAgICAg
ICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBzaG90LT5z
ZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwpAQCAtNTkwMiw3ICs1OTAyLDcg
QEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGlu
dG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICghYml0bWFwKSB7CiAg
ICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5
M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBXZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91Ymxl
IGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHN0
YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKICAgICBjb3JlUG9z
aXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgUmVmUHRyPFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1hbmFnZXIt
PnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOworICAgIGF1dG8gcG9z
aXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRp
b24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6
bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMzLi5iY2U4MDU4ZTU5
ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTQ1NSw4ICsx
NDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zv
cl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVybl9pZl9mYWlsKEdf
SVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCho
b3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5m
byA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhj
ZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7Ci0gICAg
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRl
Rm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkp
OworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVh
dGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2FzdDxHVGxz
Q2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+
YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5w
dHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lv
bkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2Vi
QXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZkY2EwMDU2Y2M2Y2Rk
ZjI3Y2Y2ZDcyZDExNjFkMS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcxNjU4YzUwZjZiODQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNSw3
ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEo
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDY3ZjEyMjJh
NzQ2YzY3MmM2ODdkMmFmYmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5ZTFlODI4MDRlMTg5
MWZkNTQ5OTIwZjhkN2I2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRF
bmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRhSGFu
ZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFn
ZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUwNmI2Mjc2NTEwYjcz
NDg1ZmNkNDY2MmVmNDgxLi41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNlNGFlNTEzMmZiOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUlu
Zm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRhdGVJbmZvLnZpZXdT
aXplKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0ZGYxODA0M2QzYjVh
NjRiMTBkNGMyZTYzNzQwZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2YjU2MGExNjc5NmJh
NGJiNGI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiBwYQog
CiBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgTlNF
cnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFtZUhhbmRsZT4gZnJh
bWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFtZUlE
KCkpOworICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2Vi
RnJhbWVQcm94eS5mcmFtZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFk
b3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdp
dGhXZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVIYW5kbGUpIHVybFN0
cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJy
b3JLZXldXSk7CisgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9h
ZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZp
ZXcgZnJhbWVIYW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5nOm9yaWdp
bmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1dKTsK
IAogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5nZXQoKSwgX1dLUmVj
b3ZlcnlBdHRlbXB0ZXJFcnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKaW5k
ZXggOWQ3NzQxMGMwOWMxYjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4uNjRhMzVmN2U4Nzlk
YjAzZGMwYmY4NzcyMjE0NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAg
LTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6
IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBjbGFzcyBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBh
Z2VQcm94eSYpOworICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBj
cmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQppbmRleCA0YzhmY2JmOGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3MDY3Li44Njc3YTA0
MWM3MGQxMWI5NzY5OGM0N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tCkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6
OnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogCiAjcHJhZ21hIG1h
cmsgLSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlKQorUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkp
OwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IGE5
Mjk5ZjFiNzQ2OWIwM2FkMjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5NjhiMzUyOWUwYzM1
NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xMTks
NyArMTE5LDcgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAKIGNs
YXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBj
cmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CisgICAg
c3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUyMTJmZjM1NjEyNjQy
NTZkMTYuLjRjZjMwYmYzMzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAjcHJhZ21hIG1hcmsg
LSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVBy
b3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkp
OwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYg
cGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzEwZGYx
OWM0MjY1OGY2ZjU5YzdjMTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5OTZiMWVmOWQ0YzFh
OTliMTcwYmY3NjIzZDM2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5LDggKzE1OSw4IEBA
IHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci0gICAg
bmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1
ZmZlckZvclR5cGUoYnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNo
YXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVy
LnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBu
dW1iZXJPZkZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQppbmRleCAxNTM2NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5YTMxM2IyLi5lNDYz
YWM5OTRiYjlmOGFhYzQ0ZmU4MjkzOGJlMTM2MTZiYjA1OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCw3ICs0Mzc0LDcgQEAgUmVm
UHRyPFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkp
OworICAgIGF1dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZh
Y2UpKTsKICAgICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKICAgICByZXR1cm4gc25h
cHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5
ZDgwZGNlZS4uODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
TWFwLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFBy
b3h5TWFwKCkKIAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxv
YWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5
PiBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9v
bCwgcmVzb3VyY2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+
ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBE
b3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3Qp
OworICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25s
b2FkUHJveHkuY29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2Fk
UHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBt
X3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJ
RCgpLCBkb3dubG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5Lmdl
dCgpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2Fk
UHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUw
NDMzOWU3ODQ5ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQy
MDU3MjBiYjg5MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwCkBAIC05NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGlyZWN0aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9
IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0
aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwg
aWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9u
SUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0
bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5v
dGlmaWNhdGlvbklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmlj
YXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlm
aWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZp
Y2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChu
b3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBu
b3RpZmljYXRpb24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0
aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjpt
YWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsK
KyAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQog
CiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDI1YzljNmNmNTZjZjI1NDM0ODc2ZmRiZDE2NmYx
NGMwOGY4MTUzNC4uNDcwODgxMDBlZTMxZDA3YTY2ZDdlOTE1OGU0OTk1OGI4ZGY4NTljNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ5LDEwICszNjQ5
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1l
SUQpKTsKICAgICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFt
ZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJG
cmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFt
ZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChm
cmFtZUlELCAqc3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQs
IHN1YkZyYW1lLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRv
dyh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBm
YTQzYTNkMWU3ODMwOTJiYjdjMDIxODE0N2ZkMTY0ZjgyN2IwM2MwLi45ZTNmNDA0YmQ2ZTZhYmIz
YWIyNDM5YWJhNzI3YzZiNWMzOWJlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChB
UEk6OgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1
ZXN0PiByZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJh
Y2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0
ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBT
dGF0aXN0aWNzUmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVu
dFN0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhy
ZXF1ZXN0LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRl
bnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0v
MTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nl
c3NlcyB3b3JrLgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0
YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0
ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9j
ZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50
NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBt
X3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRf
dCByZXF1ZXN0SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3Rh
dGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NT
dGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAwNjM0MzI0OWJhYTcyNWFmYjZjYjQ0NGM1NTIzMjUzZDE3ZTA4
MGJjLi5lNmI0NDRlOTE0MjdiOTZjYWE4ODQzYWViM2ZhMjI3Y2RkN2I1NGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFz
cyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdl
YlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdX
ZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZv
aWQgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAg
dm9pZCByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOwor
ICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7
CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUz
ZmI2NWMyMzBkYmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgw
NDk4YWZlMTJhMWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDgg
KzM0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7
Ci0gICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMs
IGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGlj
eUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5n
ZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlHdGsuY3BwCmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMu
LjkyZWFkMDQ1ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
R3RrLmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBB
U1NFUlQoIW1fd2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3Ry
aW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9E
RSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3Ig
aW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5j
ZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNl
dExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0g
ICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUo
aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRp
ZmllckZvclBhZ2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdl
KG51bGxwdHIpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5wdHIoKSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQobV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rl
c3Ryb3llZCksIHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qo
bV93ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CmluZGV4IGI2NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0
MjM0MTEyZTg1NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJv
bnRlbmRQYWdlKCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIu
Iik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkK
ICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4g
ZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMt
PnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBX
ZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7
CiAgICAgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdy
b3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVk
UGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNw
ZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAg
IGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nl
c3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBy
ZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0
UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBy
ZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0
UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJ
REdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsK
ICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWdu
YWxfY29ubmVjdChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0
b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2Jh
OTg1N2EwYTYxYWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUx
NzNjMmZiNGIxM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lk
KWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAg
ICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAg
ICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4u
Z2V0KCkpKTsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9u
QXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAg
ICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBX
S1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAg
ICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0
KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
aW5kZXggMTEyMzVhMTI3ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEzMS4uOWZlZmZkZGY0
MTA0MTJlNzZkMmMwYzNkZmQ2N2JmMWUxYmQyYjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRl
bSwgY29uc3QgU2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIp
CiB7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRh
KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0
YUZvckltYWdlKGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2
aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9p
bXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVu
c2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVi
b2FyZE5hbWUpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9y
UHJveHlXaW4uY3BwCmluZGV4IGNiZmUzMGU5ZTBiZTgzMjE1MTgxOTYzNTVmNzc5ODA4YjgyNGYy
ZjYuLjM3OThiZmJiNWE5YzQxNGY2MGZkYzNjYmVhOWM3YzBkYjNlMDIzMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApA
QCAtMTkyLDcgKzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsK
IAotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHBy
ZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwg
IldlYktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRl
dmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0
aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAg
IHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAg
cHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8
V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQ
YWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZp
ZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24g
PSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgp
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdl
dCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQo
KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0
cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIo
KSk7CiAKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsK
ICAgICAgICAgeyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUw
OTAxNzkwMGY0Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVk
M2I1NDI0YzUzMDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUw
LDggKzUwLDggQEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAog
LSAoaWQpaW5pdFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldl
YktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2lu
aXRXaXRoSW1wbDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdl
OjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxm
ID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAg
ICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZm
Li44YzI5NWJhZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9
IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rv
cik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1
dG8gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2lu
Z1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAKaW5kZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUx
MjMwMmIyODJlNDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVu
ZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXkt
PmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRl
bS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOwor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRl
cygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2
NDg5ZDY2M2I4ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3
OCwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVy
RWxlbWVudChXZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVz
dWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1
bHQpOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5t
b3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5n
ZXQoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShw
YWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2Vy
RGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFk
b3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKaW5kZXggYzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEy
ZDljNjMxMmQyYzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcApAQCAtNzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBl
UGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVn
aW5TaXplOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcigp
KTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7
IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tT
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KaW5kZXggYzJjYmEwOTBmYmJkYjJkOWExOTBiMWFmZjhmZTM1NWNkNmZjMzI2NC4uMDE5OWI4
NGY4ZjRlMjhmNzY5YTc0MjE5NTE4ODkxMzFkYzg3NzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcg
QEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNT
dHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAg
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBs
aWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwor
ICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0
cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygp
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tp
bmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50
c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7Cisg
ICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5n
U3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2Fs
ZUZhY3RvciwgLWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2
b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBw
bGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpk
YXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0
eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6
SGFuZGxlIGhhbmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAg
ICAgbWVtY3B5KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0Nzlh
ZmMyOWFkZjRhYzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2Qw
ZDNhNmY0NjdlOTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
Y3BwCkBAIC04NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJ
UEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3ND
b25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRo
aXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25z
LmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAt
OTQsNyArOTQsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0Fu
ZENvbm5lY3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7
CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKaW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4u
ZDY1MDUzNThkYjZmMzVjODEyMzBjYWYxOWQ5OWY0YzRjMDFiNGY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDcgKzI0
Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAg
ICAgaWYgKHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKKyAgICBhdXRvIHNuYXBz
aG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7
CiAgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVjOTkxMTIyZDA4NDNkYWIw
Yzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4NTI3MDA2Y2VlYmM5YzM3
MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1VUkxS
ZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAgLy8gVGhpcyByZXF1ZXN0
IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAgICBSZWZQdHI8U3RyZWFt
PiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1
ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJlYW0oc3RyZWFtLmdldCgp
KTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJl
cXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgIGFkZFN0cmVhbShz
dHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3ZmFmNzg2MjU1Li43OGU2
NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAgYXV0
byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwogICAgIGF1dG8gY3Vy
cmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsKICAgICB1aW50NjRf
dCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+
c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVV
SUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4u
Z2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEs
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBl
Y3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9y
aWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBu
ZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJh
c2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0YWJhc2VOYW1lLCBkZXRh
aWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRh
aWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAgICBpZiAo
IW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAKIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAgICBSZWZQdHI8QVBJ
OjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBpZiAobV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgm
bV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRlZCkpCisgICAgYXV0
byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
b3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5
T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkMDVmYzk5NmMx
ZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0YTA1OWY5ZWY3ODFlMTQ2
MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc2
NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUo
bV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBhdXRvIGFjdGlvbiA9
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRp
b25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQu
Ci0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBh
Z2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7
CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBh
Z2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7
CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKICAgICAg
ICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNmMGJmYWYzNGY2NGRhOGIz
MTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYyOTk0MjNiN2NiOGYzNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1lcywgc2Fu
ZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFtZXMuc2l6
ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAg
ICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlhYzIzZDhkMTNlYmRmOTNj
NjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1ZWZmZjI0NGYyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRt
YXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50U2l6ZSBp
bWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXpl
LCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBm
ZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5mODdkOTM0NDNmN2M1OGE4
MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAg
IHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAotICAgIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGVs
ZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShlbGVt
ZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCku
bnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEzOGNkMmJmNjM3OTRjOGU5
ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3NTJlZjgxMWExMjQ1ZWI1
NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUs
IFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCiAgICAgICAgIGlu
ZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhT
ZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJ
bmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGluZGljYXRv
ck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1dG8gdGV4dEluZGljYXRv
ciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5kaWNhdG9yT3B0aW9u
cywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKSB7CiAg
ICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA3ODI0ZTVjZjcx
YjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4NmY0MmEwMWNmNDhlNWRm
NjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIERyYXdp
bmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIEludFNpemUg
Yml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBT
aXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7
IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
Yml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMwOTI5ZDFmMy4uNjNjYzI4
MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMzQzLDcgKzM0
Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogCiBib29sIEZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlz
U2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAgICBSZWZQdHI8VGV4dElu
ZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbklu
RnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJh
bmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50
YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNp
dGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVX
aXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5j
bHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGljYXRvcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYxNzZkNjIwYjQ1ODlkYzM2
NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJlZWE1NWJmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpA
QCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNo
TGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3Jl
Rmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKLSAg
ICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciwgcGFn
ZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZs
dXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAg
YmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNUaW1lIHRp
bWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIyNGI2NDQ2ZDA1MjdkZjg2
NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFiNzE5Yjc5ODJjMDJhYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRlckRldGFjaGVkKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJldGFpblB0cjxDRkRh
dGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxi
YWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSwg
W3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJvb2wgeworICAgIGF1
dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCktPmRvY3Vt
ZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBib29sIHsK
ICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJlNmJlZmI4
MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3Y2M4NDVlNTUzMmMzYjIw
NmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6bmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50
IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAvLyBGSVhNRTogU2V0IG1v
ZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHNldCBJc1Np
bXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZ
ZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKKyAg
ICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBF
dmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVs
bHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBvaW50LCB7IH0sIHsgfSwg
MCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIpOwogCi0gICAgbWFpbkZy
YW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+Y29tcGxldGVVUkwo
dXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNlbmRSZWZl
cnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAg
IG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRyKCksIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVT
ZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
CkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogCiAgICAgICAg
IG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQogICAgICAg
ICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5hcHBlbmQoZXh0
ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGM4NGY2NGM4YzYz
ZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5ZmFkMDE3MWMxODgzZjAw
Y2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQsNyArOTQsNyBAQCBib29s
IEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1l
LCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0b3IgPSBm
YWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9
IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUs
IGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGlj
YWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9w
dGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNp
emUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CiAgICAgaWYg
KCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggOWRmNjE4
YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uNWQ1NjUyMmI1OTAzZGE3NTdhYzU1
Y2E4NDg1NGY2MDkwNmM5ZmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsNyArMTgyMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0
cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwog
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9j
dW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9z
aXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCiAgICAgaWYg
KHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQ
b3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiBy
ZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlv
blRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3Ig
fCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRp
b25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0
bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VC
b3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5J
ZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBt
YXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKQEAgLTIxNTYsNyArMjE1Niw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRl
Y3RvcklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKCpl
bGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0
cyA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpyZXF1aXJlc0V4dGVu
ZGVkQ29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlu
a1JhbmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5n
dGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9y
LCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRBZnRlciA9IHBs
YWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5E
aXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRhdGFEZXRl
Y3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpLCBUZXh0
SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsyMTgxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBu
ZWVkIHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNl
LmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBD
b25maWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRo
KCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZhMjRjMWMxYmRkMTU2
ZjJkM2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1ZjkzZjY0ZTQxMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg1MCw3ICs4NTAs
NyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7
CiAKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNB
ID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKLSAg
ICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7
CisgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5p
bWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
c2hhZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2lu
dAogICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShzY2Fs
ZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5
KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOworICAgIHpvb21M
YXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmll
d0FuaW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAgICAgICBG
bG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShmcmFtZVZp
ZXcsIHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVmZTllNGNiYjVkNzI2
ZmYyMjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlkMjJmNmI2MDQ0NGIx
ODA2MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwyNCArNDAsMjQgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0
ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9
CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2Fs
LCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWws
IGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3Jh
Z2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6Okxv
Y2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRy
YW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUlu
Qnl0ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0
b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAot
UmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFsTG9jYWxTdG9yYWdl
QXJlYShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBjbGFzcyBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBwdWJsaWMgU3RvcmFn
ZUFyZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CiB9OwogCi1SZWZQ
dHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3Rv
cmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVh
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgYXV0byYg
c2xvdCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAgICAgICBzbG90ID0g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpjcmVhdGUoc2VjdXJp
dHlPcmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90LmdldCgpOworICAg
IEFTU0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2Up
CiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAtMjAyLDcgKzIwMiw3
IEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0
ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9
IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0b3Jh
Z2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMpKTsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNl
SUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3Ig
KGF1dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdO
YW1lc3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVy
LnZhbHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEzYTIyZGNiZDIxYjY3
NDBlNDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0N2Q3MmVlNWEwNjU1
ZTY3NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCArMzksMTAgQEAgY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExl
dmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdp
biwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1w
bCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJD
b3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9y
YWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAg
ICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3Zl
cnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2Fs
U3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgUmVm
PFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U3RvcmFn
ZVR5cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3Bh
Y2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDQ2MmRlODZj
NDkwMDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0YWQ4NzI2NTdlYWY4
NDk2ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyCiAgICAgcmV0dXJu
IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWlu
dDY0X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikK
IHsKICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmFkZChpZGVu
dGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNsb3QpCi0gICAgICAg
IHJldHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWZQdHI8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJl
ZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKLSAgICBzbG90
ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIo
aWRlbnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIucHRyKCk7
CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpAQCAtNjUsMjIgKzY1
LDIyIEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2lkZW50
aWZpZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBw
YWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBh
Z2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3Rh
KQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgp
LCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
IHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBx
dW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDhlYTI1ZTZlNzUw
OWViMmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5
YWMyNWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0z
MSwxNiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVm
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRp
Zmllcik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90
IGlkZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJp
ZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJy
aWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBj
b25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBjZjMw
ODViODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2MzI1MmJmZTRmYThj
MWUxMjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjAyLDkgKzIwMiw5
IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJl
ZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50
KCppbnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmFk
ZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShX
VEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5k
ZXggN2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4uNWQ2MTEwYjc5MDlm
MzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTE1MCwx
MiArMTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAK
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBhdXRvIG1v
ZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1
dG8gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0
aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50
Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdD
b250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nl
c3MoKSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBtb2RlbC0+YWRk
Q2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdU
Rk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDE4MTVj
MTNhYzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uODZkYjJkODcxOGE1NGIyZjZjMjY1
M2Y5M2MwYWFlOWIyYjlmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMsMzEgQEAgU3RvcmFn
ZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAgICAgIGNsb3NlKCk7
CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29w
eShQYWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29w
eShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9p
c1NodXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vz
c2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CiAK
LSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVm
KG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEp
KTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAgZm9yIChhdXRvJiBp
dGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0b3JhZ2VB
cmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAogICAgIHJldHVybiBu
ZXdOYW1lc3BhY2U7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBz
dG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQo
b3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICAgICAgcmV0dXJuIHN0
b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VB
cmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQo
KSwgbV9xdW90YSk7CiAgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJl
YS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIHJldHVybiBzdG9yYWdlQXJl
YS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9z
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5NjY2MTYxMzcuLmM4
OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01Nyw4ICs1
Nyw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3Jl
OjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOworICAgIFJlZjxXZWJD
b3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29y
ZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3RvcmFnZUFy
ZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3N2M4ODRhYmQ5ZS4u
ODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogICAgIHJldHVybiBz
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90
YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEp
CiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUg
YSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9m
ZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
aW5kZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2FiYi4uZTU4OWZlZTdh
NWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9zZUxvY2FsU3RvcmFn
ZSgpOwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYs
IHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91
cC5jcHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFhNjIxM2I5ZC4uNjNj
YWUyZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcApAQCAtNDIsMTgg
KzQyLDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3
ZWJWaWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0KIAotUmVmUHRyPFdl
YlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlZpZXdHcm91
cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogCiAgICAg
YXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1lLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAgICAgIHdlYlZpZXdH
cm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0Vt
cHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCisgICAgaWYgKCF3
ZWJWaWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFdlYlZp
ZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgd2ViVmll
d0dyb3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYg
d2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlZpZXdHcm91cC0+
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiAK
LSAgICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmlld0dyb3VwOwogfQog
CiBXZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3Vw
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCmlu
ZGV4IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYuLjRkNDEzN2NlMmFh
YWMzYTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyArMzgsNyBAQCBPQkpD
X0NMQVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlld0dyb3Vw
PiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdlYlZpZXdHcm91cCog
Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCBk
MDg0OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5YjFjY2MyNzJjMzQ3
MjU5OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKQEAg
LTI2LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNlYXJjaFBvcHVw
TWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAg
IDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQorICAgIDogbV9w
b3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsKIH0KIAogUG9wdXBN
ZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9w
dXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZvaWQgU2VhcmNoUG9w
dXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmgKaW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5YWY0Zi4uMGVmNDRi
NDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVibGljIFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKKyAgICBSZWY8UG9w
dXBNZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUlPU19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJW
aXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2YjlhNWU2ODlmYzE5
Yzg3Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMyYTEzNjFmNjY4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBAIC0gKERPTVJhbmdl
ICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihOU0FycmF5
ICoqKWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1hcmtlckFs
dGVybmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJsZUFycmF5
ICopKmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtlckFsdGVybmF0aXZl
c1tqXSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwg
bm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdl
LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkp
OworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFu
Z2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFy
a2Vycy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2Vy
ID0gbWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8PSBvZmZz
ZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0
YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0
dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIt
PmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2NDk2YzJjNDQ2MDk5
MmM1YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlmMzRiOWMwOTYyOTNk
YzM2Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUsMTMgQEAgLSAodm9p
ZClzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAgaWYgKCFVUkwpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAgIGF1dG8g
ZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21w
b3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwgMSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBNb3VzZUV2ZW50
OjpJc1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBi
ZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwogICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5v
LCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChX
VEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgZnJh
bWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwg
ZXZlbnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TS5tbQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2FhOGY0YWQ0Li4xYjZj
ODIyODU0YTA3ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hv
dEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAg
ICAgUmVmPFJhbmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2RlKTsKIAogICAgIGNvbnN0
IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgpLT5wYWdlU2NhbGVGYWN0
b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlG
aXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8
CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwKICAgICAgICAg
VGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAgICAgICBUZXh0SW5kaWNh
dG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdl
cyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCAxZjMyZGM5NDk4
YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li43NzRkMjFhOWZmODRmMDFhM2MxNjliYTY3
OTkyNTdhNDdjOTllZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0K
QEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgogICAgIE5TRGF0YSAq
ZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6
cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBv
cHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwogICAgIAotICAgIFJl
ZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNlID0gTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUp
OworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0
ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAgdWludDMyX3QgcmVxdWVz
dElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJuX3JldHVybl90IGtyID0g
X1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwgcmVxdWVzdElELCBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0ZXNdKSksIFtkYXRh
IGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAoa3IgPT0gTUFDSF9TRU5E
X0lOVkFMSURfREVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CmluZGV4IDg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4YjdjMzIuLmFiY2E2YmJl
MzMwNTM1YTk4MmU2NDJkNGMyYTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdp
blJlcXVlcwogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0
cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlz
IHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAg
UmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBw
bHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+
c3RyZWFtSUQoKSwgc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBw
bHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+
c3RyZWFtSUQoKSwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5Q
dHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQv
cGxhaW4iIApAQCAtNzk5LDEwICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gKICAg
ICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAg
ICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3QpOwor
ICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUo
dGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5j
b250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0
cmVhbSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0uY29weVJlZigp
KTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
aW5kZXggOWE3NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4MC4uMWQxZThhZWY2
NzUyMzYxZjNlY2MwNDY1MDVkNDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE1
MTcsNyArMTUxNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDoo
V2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAvLyBEb24ndCBjYWxs
IE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpT
IHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBO
U0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
PiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmlj
YXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAgICAgYXV0byBzdHJl
YW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25d
LCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAgICAgICAgIFJldGFp
blB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4
dC9wbGFpbiIgCkBAIC0xNjc4LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihO
U011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3QgY2hhciAqKWNUYQog
ICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0
Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAgICAgICAgIFtwbHVn
aW5SZXF1ZXN0IHJlbGVhc2VdOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0
ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOworICAgICAg
ICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwg
cGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAgICAgICBzdHJlYW1z
LmFkZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigp
KTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0KaW5kZXggOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRiOGQ5MTJkNTFmM2Zm
Yi4uMjM0NzgxYjBiZTg2YTRiZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KQEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4g
V2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2Vy
SXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9z
aXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihu
b2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgZnJhbWVWaWV3LT5m
cmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSks
IEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJBbmNob3IpKTsKKyAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RT
ZXRGb2N1cyk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlv
ciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggZWM4ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFkMDY3NjJhNTY3ZC4u
ODQ2MGIwM2Y1MGM3YzJiMTNhMTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGlmIChpc01haW5G
cmFtZSAmJiBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1lLT52aWV3KCktPnNl
dFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgIGNvcmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsK
LSAgICBSZWZQdHI8RnJhbWVWaWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3Jl
RnJhbWUpOworICAgIGF1dG8gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1l
KTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoY29yZVZpZXcuY29weVJlZigpKTsKIAogICAgIFtt
X3dlYkZyYW1lLmdldCgpIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVu
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDdi
OWJiODk5MDhhZTVjMWE2NTJlMzZjYzg4OWJlMDRlNTY1NGM5NDYuLjA0YmFjNDViOTdmNTNhYWZl
NzRiOGE4YzE4M2Q2YjFlMzQ3NWIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgLSAodm9pZClnZXREaWN0YXRp
b25SZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJh
eSAqKikKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBt
YXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIt
PmVuZE9mZnNldCgpKTsKICAgICAgICAgICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5n
ZS5nZXQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2
aW91c01ldGFkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCA5YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2NDRjOWU3ZGI4MTQy
Li40YTg2Yzc5NDU1ZmIzNmQwYzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEzNDgsNyArMTM0
OCw3IEBAIC0gKHZvaWQpX3dyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJh
eSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0IEhUTUwgb24gdGhl
IHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJv
YXJkVHlwZV0pIHsKLSAgICAgICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBf
ZnJhbWVdKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CiAgICAgICAg
ICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNoaXZlID8gY29yZUFy
Y2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGZvclR5cGU6V2Vi
QXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3ZWQ3MGMw
NWU3ZDVlZi4uNGY5MGY2MzkzOTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBjOTFmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDcyOSw4ICs0NzI5
LDYgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1l
IHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgU3RyaW5n
KCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXdv
cmxkKQogICAgICAgICByZXR1cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCArICh2b2lkKV9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3Jp
cHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZp
ZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3
R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKaW5kZXggNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkwNDliNDYzZi4uYmM3
OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAgIHJlbW92
ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5Q
YWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RN
b2RpZmllZCk7CisgICAgICAgIGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBh
Y2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBhZGQocGFj
a2FnZS5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5nZWQgPSB0
cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IGY4NTVkZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0NGNjYTJmNDUuLmQz
ZTMzOWY3NTk0OGEzZTNlMWQ5MjlkZWU3NmQ4YzJlZDQ2ZGRmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDEwLDcgKzQxMCw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkK
ICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVhdGUgYSBz
dHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFzcyBpdCBvZmYgdG8g
dGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgp
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3Qt
Pm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1
Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6
Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVl
c3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1
ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBt
X3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOwog
ICAgICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDU0LDcg
KzQ1NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCog
cmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3RyaW5nLnV0ZjgoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9h
ZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigp
LCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5j
ZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9h
ZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigp
LCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5j
ZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7
CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwgY3N0cik7
CiAgICAgfQpAQCAtNjkwLDcgKzY5MCw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5j
ZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRvIHJvb3Qg
PSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwotICAgIFJl
ZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpD
SW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8gaW5zdGFu
Y2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9v
dCkpOwogCiAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThlZjU4ZmU0MTZmY2JmYjY3NWVkZTNmYzU4
OTZjLi4wMzU5ZDkwMWFjY2NkOTEyNDY5MTFjZTkxZmMyM2NlMWIwYmEyNGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgRnJhbWUq
IGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1Z2lu
VmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIHVy
bCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOworICAg
IGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwg
JmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFu
dWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0YXR1c0xv
YWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0xMTgwLDcg
KzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdp
bihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhU
TUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxQbHVn
aW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSks
IHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJh
cHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luVmlldyA9
IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxlbWVu
dCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFw
cGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxvYWRl
ZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2luVmll
dy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRl
eCBjMDMyNDJjN2Q2YjYyZDhmYzYzNWQ5YTBkN2JkNmU1ZDdjMjU5ZmVkLi40NWU0YTU3YjVhOGJh
YzJkYTdiNDRlNGRmYmY4MjFjYWVmMGFiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3Qo
X0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
LXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkws
IEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVT
dHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5
cGUpCkBAIC02MTAsNyArNjEwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29w
dF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKIAogSFJFU1VM
VCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5f
IEJTVFIgdXJsKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNp
emVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFp
blRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwogICAgIEJT
dHJpbmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAgICAgQlN0
cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5nLCB1cmws
IG51bGxwdHIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFp
blRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIAogdm9pZCBX
ZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8gQlNUUiBi
YXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0
cmluZykpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJp
bmdMZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYt
MTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1dGYxNkVu
Y29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuaAppbmRleCAxYmFkZDAxYzNhNzY0MGNjZjExMzA0YTQzNWE3YjFlMjQ1MTE1ZmRlLi41
MDJjYTg5ZGY2YjkwZDBhMjc3ZDc5YjFiYjU5ODcxYjVkMTE0MjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7
QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIGZpbmFsIDog
cAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5n
LCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lk
IGxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUs
IEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwor
ICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1l
VHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VS
TCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3Rz
KEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
b3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1
c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQq
LCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCmluZGV4IDk0MDc3OTEyYTk5MTY0MTE3
ZDBjNjgxY2NjYzA2Njg2ZTA0YzRkZTAuLmY5YWI4M2I1MWNhMzIzZWJlNzFmNTUwMjY3OTJkYmY2
MzUzNDMzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKQEAgLTE4Nyw5ICsxODcsOSBAQCBD
QVZpZXc6On5DQVZpZXcoKQogICAgIG1lc3NhZ2VXaW5kb3cgPSBudWxscHRyOwogfQogCi1SZWZQ
dHI8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24p
CitSZWY8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRp
b24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKIH0KIAogdm9pZCBD
QVZpZXc6OnNldENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayhDb250ZXh0RGlkQ2hhbmdlQ2FsbGJh
Y2tGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCmluZGV4
IDQ1YjY0ZWMwMTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMuLjcyOTYzYmUzZGJiYzQz
MjhmNTU3OWE2ZGE1NzBjNjJjNWY0ODkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApAQCAtNDgs
NyArNDgsNyBAQCBjbGFzcyBDQVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxDQVZpZXc+LCBwcml2
YXRlIENWRGlzcGxheUxpbmtDbGllbnQgewogCiAgICAgY2xhc3MgSGFuZGxlOwogCi0gICAgc3Rh
dGljIFJlZlB0cjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOworICAgIHN0YXRp
YyBSZWY8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKICAgICB+Q0FWaWV3KCk7
CiAKICAgICB0eXBlZGVmIHZvaWQgKCpDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2tGdW5jdGlvbiko
Q0FWaWV3Kiwgdm9pZCogaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNw
cAppbmRleCBiMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5ZmM1Li5hYWJkMTk4
YjExMTVlZDdlNjVhZDgzMDg1NDE2MTljZDQxNTg0MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q1ZEaXNwbGF5TGluay5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ1ZEaXNwbGF5TGluazo6fkNWRGlz
cGxheUxpbmsoKQogICAgIDo6Q2xvc2VIYW5kbGUobV93YWtldXBFdmVudCk7CiB9CiAKLVJlZlB0
cjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVu
dCogY2xpZW50KQorUmVmPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRp
c3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDVkRp
c3BsYXlMaW5rKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENWRGlzcGxheUxp
bmsoY2xpZW50KSk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRp
c3BsYXlMaW5rLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NWRGlzcGxheUxpbmsuaAppbmRleCAwYWUwMmYxNjllYzgyODkxMjY2MWVmYTczOGM4
NGZiN2M0NDQyMjgzLi5jYTAyNmFmZWFjNDE1ZDcxODc0NzhlODczNzVhMjcxMDk5ZjQwY2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NWRGlzcGxheUxpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBDVkRpc3BsYXlMaW5rQ2xpZW50OwogLy8gRklYTUUgODc2OTE4MTogUmVwbGFjZSB0aGlzIHdp
dGggQ1ZEaXNwbGF5TGlua1JlZgogY2xhc3MgQ1ZEaXNwbGF5TGluayA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDVkRpc3BsYXlMaW5rPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOworICAgIHN0YXRp
YyBSZWY8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsKICAgICB+
Q1ZEaXNwbGF5TGluaygpOwogCiAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9JbWFnZUNvbnZlcnNpb24uY3BwCmluZGV4IGRjNjY3MGQ0MzNmZjA5ZTBkMTE2NjVkYzA1NTNi
MjE2ZGZiMjYwMGMuLmNmOTIxODVhMTBkYjk0NmQwNmJiNGJkNDgwYzY5ZmRlYzM0NjA0NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvSW1hZ2VDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgc3RhdGljIEhSRVNVTFQgZ2V0SW1hZ2VDb3B5KElEaXJlY3QzRFN1cmZhY2U5KiBzeXN0ZW1N
ZW1vcnlTdXJmYWNlLCBSZWZQdHI8SW1hZ2UKIAogICAgIENTaXplIHN1cmZhY2VTaXplKGRlc2Mu
V2lkdGgsIGRlc2MuSGVpZ2h0KTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6
Y3JlYXRlKHN1cmZhY2VTaXplKTsKKyAgICBhdXRvIGltYWdlID0gSW1hZ2U6OmNyZWF0ZShzdXJm
YWNlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlOGJkZGViZjI2MjZmNWNjYWQ4ZDRhY2Vk
NTczM2U3MjcyMmFlZWI3Li5mYmMwNGRlNjU5Nzg5OGIwNWQyMmE0ZTU3M2EyNGVkNTYxOTc5ODM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjkxMiw4ICs2OTEyLDYgQEAg
SFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1l
LCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGF1
dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3RyaW5nKCkp
OwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYg
KCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02OTQxLDggKzY5MzksNiBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3Jv
dXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAg
YXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmco
KSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBp
ZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357555</attachid>
            <date>2018-12-18 02:02:54 -0800</date>
            <delta_ts>2018-12-18 02:40:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218190253.patch</filename>
            <type>text/plain</type>
            <size>391565</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uOGM0NGFkNDIyMjExN2FmOGQ2OTBmNGUxNGNlNWQ5ZDA4ZjIzYzU0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5MCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3Vy
Y2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnJ1bGVzKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnVuaWNvZGVSYW5nZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0KToKKyAgICAgICAg
KiBjc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyk6CisgICAg
ICAgICogY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRD
b2xvciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICog
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlbmRlcmVkUmVjdHNG
b3JNYXJrZXIpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCk6CisgICAg
ICAgICogZG9tL1BvaW50ZXJFdmVudC5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRU
b1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJl
c3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0
ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZX
b3JkKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2Rl
KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJl
c2VydmluZ01hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBs
eUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVBbmRJbXBs
aWNpdFN0eWxlT2ZFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdFByb3BlcnRpZXNOb3RJbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5
UGFyYWdyYXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvbkxlZnRUb1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNYWtl
VGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCk6CisgICAgICAgICogZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5k
Ojpmb3JtYXRSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAqIGVkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09w
ZW5Db21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kSU9TOjpkb0Fw
cGx5KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQp
OgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBodG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKToKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpVUkxVdGlsczxUPjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGVOZXdDdWUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdU
YWIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFzQ1NTUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3I6OmtleVBhdGhGcm9tSURCS2V5UGF0aCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdl
VG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2Vz
V2l0aE9yaWdpbik6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uv
aW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxl
SFRNTERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNG
b3JDdXJyZW50Um9vdCBjb25zdCk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OkhpZ2hsaWdodDo6ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVs
c0ZvckF6aW11dGhFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpz
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZp
bGxSZXF1ZXN0V2l0aEtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRh
bC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UGxheWVyT2ZWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdU
c1NlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tF
bmNyeXB0aW9uQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1RyYWNrRW5jcnlwdGlvbkJv
eDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5RmlsdGVyQW5pbWF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRl
eCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9u
Qm94KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFw
cGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrVmlkZW9UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVT
dG9yYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVN0b3JhZ2VPYnNl
cnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFbmNvZGVkQmxvYkl0ZW1U
b1NvdXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVw
ZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGVOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okh5cGhlbmF0aW9u
RGljdGlvbmFyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNo
UG9wdXBNZW51V2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVdpbjo6cG9w
dXBNZW51KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlDb21tb25CdXR0b25QYWRkaW5nVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRBdHRhY2htZW50SWNvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIp
OgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6U3RvcmFnZSk6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjphcmVh
IGNvbnN0KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAg
KiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
ZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHRlc3RpbmcvR0NPYnNlcnZhdGlvbi5oOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNv
dXJjZSk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToK
KwogMjAxOC0xMi0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
IAogICAgICAgICBbV2luXVtDbGFuZ10gRml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOTZhZTg1NWFjNzU3Nzcx
YTEzZjJlOGRkYzk0ZDBhMDNlNDY1YzkuLjc3Njg0ZThiY2FkYjQ4NGUyN2FjOTk4NGFkNGI3NzY1
NjFiOWIyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE4LTEyLTE4ICBZdXN1a2Ug
U3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+
IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb25uZWN0aW9uIHNl
bmRNZXNzYWdlV2l0aE5hbWU6Ym9keTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rh
a2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50
b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
dEJhc2U2NEVuY29kZWRQTkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9j
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tp
bmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292
ZXJ5QXR0ZW1wdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNl
dFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBz
aG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnNob3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Z2V0U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQ
cm94eUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAg
ICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkdyYW50ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIGluaXRXaXRoRG9jdW1lbnQ6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6
OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6c25hcHNob3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6cGVyZm9ybVVSTFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVy
dENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhSW1wbDo6ZGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJ
bmRpY2F0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OndlYkFyY2hp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorCiAyMDE4LTEyLTE3
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gTGF5
b3V0IFRlc3QgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLWhpZC5odHRwcy5odG1sIGFuZCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYXJlIGZsYWt5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCmluZGV4IGFkNmZhODA1ZTZjNzE3MjVkMTI0Yzk3NzVmMThjYTRiODc2YjM5YzkuLjMx
MmRjMDMyNGM1MTFhMmE2NTAzYmE2MTNiNDA4OWM2ZWI4OWI1MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2Vz
dXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3Nz
aWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
ODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmg6CisKIDIwMTgtMTIt
MTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbl1bV2ViS2l0TGVnYWN5XVtDbGFuZ10gV2ViS2l0Lmggd2FybmluZzogJ0lXZWJFZGl0aW5n
RGVsZWdhdGUyOjpzaG91bGRJbnNlcnROb2RlJyBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVu
Y3Rpb24gWy1Xb3ZlcmxvYWRlZC12aXJ0dWFsXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IGU4NDRmOTA1MTNjMzM2YzI0ZTYzOWZlZjY5OGJkODM4MWI2NDRhYzIuLmQyYzYxYzhlNTMz
YTJmMWFiZDc1ZTRlNWE0NWJhMTdmYmFiOThjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1
enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1
cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyk6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJ
T1M6OnBvcHVwTWVudSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgor
ICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9u
UGhyYXNlQWx0ZXJuYXRpdmVzOl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5j
bG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xk
ZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0pOgorCiAyMDE4LTEyLTE3ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTI0Mzg5YzMxZTdjNzA2N2ZmZTQ1YmM2NDEw
YmI0YTVmZTQxOWFkYS4uODk4N2E2MmMxOWQxZGQyYmMwMDc2YjhjOWM1NDQ0ZGMwYzA2NDhhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTE4
ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAg
VXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBn
ZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAo
LVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpd
KToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0
OndpdGhOb3RpZnlEYXRhOnNlbmROb3RpZmljYXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNs
aWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRp
b25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF93cml0ZVNlbGVjdGlvbldpdGhQYXN0
ZWJvYXJkVHlwZXM6dG9QYXN0ZWJvYXJkOmNhY2hlZEF0dHJpYnV0ZWRTdHJpbmc6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9u
VGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxl
U2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rl
ZEZyYW1lczpdKToKKwogMjAxOC0xMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBvZmZzZXRMZWZ0IGFuZCBvZmZzZXRQYXJlbnQgc2hvdWxkIGFkanVzdCBh
Y3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0
MGFjMDUzODFmYjdkMDY5NDZkYmI0NGEwZTFlNDYxOTE4YjJjMDNmLi5kNjEwZWRhZTlhY2ExMDdh
NDY4MzVhN2U4MmQxN2FjOWJhZmU5MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpy
ZWZyZXNoKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6
bG9hZERhdGEpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgor
ICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAg
KFdLUUNBOjpDQVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlz
cGxheUxpbmsuY3BwOgorICAgICAgICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAg
ICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAg
ICAgICAoV0tRQ0E6OmdldEltYWdlQ29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3Ojph
ZGRVc2VyU3R5bGVTaGVldFRvR3JvdXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAg
PEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRM
ZWdhY3ldIHdhcm5pbmc6IGV4cGVjdGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1l
JyBvZiBDT01FbnVtVmFyaWFudCBhbmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEz
MzIxMTBjZWNhZDhmM2E4Li40YTk1ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUs
NyArMTg1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05v
Q29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9t
Qnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1d
KHZvaWQqIHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVj
dG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5
OWNmYWZiMzFiNzE1ZjZhMGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0
MmQ5YjUxMjhlNDhmNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZm
ZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50
ID0gY29tbW9uLndhdGNocG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBv
aW50LT5zZXQoKS0+YWRkKHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNl
dCgpLmFkZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmlu
Z1dhdGNocG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdh
dGNocG9pbnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCmluZGV4IDZiMGYzMTkzODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBi
MzRmNDZjZTI2MThkNzJhNDZhOWViOGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBt
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRp
bWVyKHRoaXMpKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihu
ZXcgSW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGlt
ZXIoYWRvcHRSZWYobmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVw
ZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9w
SWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkp
CiAgICAgLCBtX2RlZmVycmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1f
ZGVsYXllZFJlbGVhc2VSZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NB
Y3Rpdml0eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVu
dGFsU3dlZXBlciYgSGVhcDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7Cisg
ICAgcmV0dXJuIG1fc3dlZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29s
bGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAppbmRleCBjOGFlZDRhMzZhNTg4MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEz
YWJkMWMyZTcyZWE4OTU5N2MzYmVmOWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCkBAIC02MjksOCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRy
PEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVm
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQ
dHI8SW5jcmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vz
c2FyeVRpbWVyPiBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3
ZWVwZXI+IG1fc3dlZXBlcjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElm
TmVjZXNzYXJ5VGltZXI7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYy
MGRkMTU5ODA2N2U4YzA0YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5
YWE1YzBmMTBjZGQ2ZTliYjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkK
ICAgICAgICAgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQog
Ci1SZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6
cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UoKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRC
bG9jazo6SGFuZGxlKigpPiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxO
b3RFbXB0eU1hcmtlZEJsbwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsK
ICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFy
a2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9j
a0luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2Yzlj
YmIyYjdjMzI5NzQyN2Q4NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4
ZmExYTY3MmI2YzZjMGI3ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFw
Q2VsbCogY2VsbCkgY29uc3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRC
bG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsK
ICAgICAKICAgICAvLyBUaGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVy
IHdoYXRldmVyIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91
ciBtX2Jsb2Nrc1dpdGhCaXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVh
Y2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNs
b3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXRJbmxpbmVzLmgKaW5kZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNm
Yi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xv
dFZpc2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25z
dCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2Vs
bFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewog
ICAgIHB1YmxpYzoKQEAgLTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQo
U2xvdFZpc2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChj
CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1Nv
dXJjZTsKKyAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1f
YmxvY2tTb3VyY2U7CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNw
cAppbmRleCBkMzc3ZjlhZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0
OTIyN2Y3NDY3NjBhYThhNDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IFN1YnNwYWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJh
bGxlbERpcmVjdG9yeVNvdXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAt
MTEyLDEwICsxMTIsMTAgQEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBT
dWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0
b3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFj
ZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1h
cmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJs
b2NrU291cmNlKCkKIHsKICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJs
b2NrRGlyZWN0b3J5KiwgTWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXgg
YmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3
ODY3NWM5MjM0ODA0NzczZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAg
ICAgCi0gICAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpOworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4g
cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogICAgIHZvaWQgZm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcg
Kzc4LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAg
ICAgdm9pZCBmb3JFYWNoTm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxl
bE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBA
IC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRD
ZWxsKGNvbnN0IEZ1bmMmKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAg
IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3Qg
RnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaApp
bmRleCBlODNiMzgyZGY4MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQz
ODQzZWI2MTRlMGIxYTZjZjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNl
Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3Bh
Y2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMg
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMg
KzEyMSwxMyBAQCBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFj
ZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICBTdWJzcGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxT
aGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAg
ICBGdW5jIG1fZnVuYzsKICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVk
VG9WaXNpdExhcmdlQWxsb2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUYXNrKCp0aGlzLCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRh
NzQwOGMuLjBiOTk2MWI4YWMzOWYzZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhl
YwogICAgICAgICBtZXNzYWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0K
ICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUobWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZl
cj4gbmF0aXZlQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29u
dGVudHMoKSk7CiAgICAgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2
ZUJ1ZmZlci0+c2hhcmluZ01vZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5k
ZXggNGU1ZWYxNTQxYjRiNDYyZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUx
NTIzNWQzNDVkOTQyOGEzNTM5M2EzYzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBj
bGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVm
ZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAor
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUg
ZW5kKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNs
YW1wSW5kZXgoZW5kKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGRvdWJsZSBiZWdpbikgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNs
aWNlKGRvdWJsZSBiZWdpbikgY29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5k
ZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5
QnVmZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1Jl
ZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5z
aWduZWQgZW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBl
bmQgLSBiZWdpbiA6IDA7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNp
emUpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1
bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5
Yzk0NWFlNDA0ZTJlMGJiZDdjZmJjNWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIz
OWYxNjdjYTJlNDRjMDAxYmYyNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1
YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNp
emVfdCBnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBj
b25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRv
dWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVy
PiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAK
ICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0
LDcgKzE1NCw3IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3Vu
dGVkPEFycmF5QnVmZmVyPiB7CiAgICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50
ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAg
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWdu
ZWQgZW5kKSBjb25zdDsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBi
ZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRl
eChkb3VibGUgaW5kZXgpIGNvbnN0OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBW
YWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJh
MWFjYTgyNTRjMTI4Li42NGZmZjRhODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludChWTSYgdm0pCiAgICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2lu
dFNldChJc1dhdGNoZWQpKSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNl
dChJc1dhdGNoZWQpKSkKIHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9p
ZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgp
LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0
LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2
OGNjMTk0NmEwZDc5MzYxMWUwNTJiZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgx
NTU0NGE1YTU4ZmM0MjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0
ICs0NCwxNCBAQCBjbGFzcyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mKTsKICAgICAKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5n
ZXQoKTsgfQorICAgIFdhdGNocG9pbnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9
CiAgICAgCiAgICAgdm9pZCBmaXJlQWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+IG1fc2V0OworICAgIFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3
YjU0MjFhMjYzNmYxYTRhZjJlMDdlLi43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFj
MGRlODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5i
eXRlTGVuZ3RoKCk7CiAgICAgCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVy
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVj
dC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3
QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4
MGNlOGJhYWFkMDdhMWQ1YmNhNjE0MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJi
NDNiNjI2NWU4NzRkNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2
aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjCiAgICAgICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1l
bnRhdGlvbiBiZSB0aGUgaW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQ
dHI8Q0RNPiBpbXBsZW1lbnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0p
OworICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7CiAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUo
aW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKaW5kZXggMDdhNGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJm
MC4uMmNlM2M4YTBmODczOTk0MTliOWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAg
dm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGlu
Z1N1Y2NlZWRlZCgpOwogfQogCi1SZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9y
bURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0
YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRh
OjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsK
ICAgICBpZiAoaXNCbG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9y
bURhdGE6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7
CiAgICAgICAgIGJvZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJl
dHVybiBib2R5OwogICAgIH0KQEAgLTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0Jv
ZHkoKS5iYXNlQWRkcmVzcygpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9j
YXN0PEZvcm1EYXRhKj4oJmZvcm1EYXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBi
b2R5ID0gbWFrZVJlZihjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAg
ICAgICAgYm9keS0+Z2VuZXJhdGVGaWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsK
ICAgICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25z
dW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NF
UlQoZGF0YSk7CisgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogfQogCiBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3
OWIxYTQwNjk1ZDBmMTUwZDdmOWY0Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4
MzU5MjY1ZjQ2MGU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFp
bGVkKCk7CiAgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBS
ZWY8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25z
dDsKIAogICAgIHVzaW5nIFRha2VuRGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxG
b3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApp
bmRleCA5ZDI1MDY3NWZkZTdjMmVjMWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFj
ZTFmOTM1Mzk2N2FiMmEzZDRiYjdkNzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxi
YWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6
Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxs
YmFjayksIFdURk1vdmUob3B0aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQo
KSk7CisgICAgYXV0byBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRp
b25zKSk7CisgICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hv
dHMuYWRkKG5vdGlmaWVyKTsKKyAgICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7
CiB9CiAKIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFj
az4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJy
b3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0
IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4m
JiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmll
cjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JD
YWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5n
ZXQoKSk7CisgICAgYXV0byBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdU
Rk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShv
cHRpb25zKSk7CisgICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3
YXRjaElEOwogICAgIC8vIEtlZXAgYXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBn
aXZlbiBvbmUgdGhhdCB3ZSBkb24ndCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3
YXRjaElEID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgp
OwotICAgIH0gd2hpbGUgKCFtX3dhdGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVy
KSkpOworICAgIH0gd2hpbGUgKCFtX3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5
UmVmKCkpKTsKICAgICByZXR1cm4gd2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4
YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRlN2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1
NTY5MDczNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKQEAgLTk3LDExICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVy
c2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8
RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewog
ICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CisgICAgYXV0byBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkK
ICAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3Jl
TmFtZXMtPnNvcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oCmluZGV4IDc2YTEyODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2Uu
LjE1ZGFjYjEyODExZDAzMWI3MGUxZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRh
YmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNv
bnN0IFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0Owot
ICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAg
UmVmPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVj
dCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+IGtleVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4
YWQ2NGU5NC4uOGUwNzJhODM2ODI0YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cApAQCAtMTIyLDExICsxMjIsMTEgQEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
SURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0
aCgpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFt
ZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVz
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4
TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7
CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBl
ZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5
ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURC
T2JqZWN0U3RvcmUgZmluYWwgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0
IFN0cmluZyYpOwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgo
KSBjb25zdDsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0Owor
ICAgIFJlZjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKCk7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAppbmRleCBjZTcyOGZjZTI2Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzVi
ZGRhNzI3MWI1MDE2YzE5YjI3ZTgyNWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMg
KzM3MiwxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3Bl
cmF0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlu
cyhvcGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3Bl
cmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25P
cGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2Fj
dGlvbk9wZXJhdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAog
ICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjky
ZWZlYTk5OWNlZjExMDZhNzZiMTMxMTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3
MGQzOGNmNDI5Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlv
biA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBF
dmVudAogICAgIHZvaWQgZmluaXNoQWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblBy
b2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9w
ZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAg
dm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJik7CiAgICAgdm9pZCBwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQg
Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oCmluZGV4IGU4NTUxMjUzMWI0NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1
NmUxNzhiNzJlZjIxYTY2NmViMTY5ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5oCkBAIC0xODEsNDAgKzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlv
bkltcGwgZmluYWwgOiBwdWJsaWMgVHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAK
LWlubGluZSBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAoraW5saW5lIFJlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQg
KElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2
b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7
Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJh
bnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0
aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAg
ICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiks
CiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlv
biYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRp
b24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9u
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAx
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
Mj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9u
KAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2Fj
dGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJh
bnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAg
ICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAg
ICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+
KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAzLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAg
ICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiks
CiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlv
biYsIE1QMSwgTVAyLCBNUDMpLApAQCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYg
cGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJh
dGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNh
Y3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0
ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rp
b24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIz
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0
RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8g
b3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9u
LCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+
IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEy
ICsyNDIsMTEgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFy
YW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlv
bkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwg
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwg
TVAyPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEs
IHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitS
ZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAg
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJ
REJSZXN1bHREYXRhJiksCkBAIC0yNjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1l
dGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9
IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24s
IHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJh
bWV0ZXIzKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNh
Y3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIy
LCBwYXJhbWV0ZXIzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4
IDE0YmI5Nzc1MzZiYmZiZmYyZWFjNjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgx
YzhmYzBkZjUxNmNiY2VhNmZiNDE4NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2
b2lkIE1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBj
b25zdHJhaW50cywgUHJvbWlzZSYmCiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVs
dFZpZGVvQ29uc3RyYWludHMoKTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVl
c3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVk
aWEsIFdURk1vdmUoYXVkaW9Db25zdHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykg
fSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3Qt
PnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEy
Myw4ICsxMjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlN
ZWRpYShjb25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJN
ZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBl
OjpEaXNwbGF5TWVkaWEsIHsgfSwgY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52
aWRlbykgfSwgV1RGTW92ZShwcm9taXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJl
cXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIz
NjgxOTNjLi5hMWNiNzRiYTYxOWJiNzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVk
PElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1
ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0
cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1l
ZGlhU3RyZWFtPj4mJiBwcm9taXNlKQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3
IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJv
bWlzZSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVz
dChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJl
c3VsdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgK
aW5kZXggZGU1MWZkOWZjNDNlYjI5N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1Yzhk
N2JhNDEzZTIwMzY4ZTU0MDI3ODA3NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxVc2VyTWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUo
RG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVz
dD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZl
cnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVk
aWFSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgw
YmM1NGNhYTg3YTk3M2UwOGVmLi43NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDli
YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFs
dWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8g
Tm93IHN1bSBhbGwgb2YgdGhlIGF1ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5
LWdhaW4gc3VtbWluZyBqdW5jdGlvbikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdv
dWxkIG5vcm1hbGx5IGJlIG1vbm8sIGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2Fy
eS4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEs
IG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENo
YW5uZWxNZW1vcnkoMCwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8m
IG91dHB1dCA6IG1fcmVuZGVyaW5nT3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0
YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIwZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3
MDMwNmUxMDQxMjg0N2IyMDhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZv
aWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJs
ZSBidWZmZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhl
c2UgQXVkaW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhy
ZWFkIGJ5IEphdmFTY3JpcHQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkg
ewotICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklu
cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVm
ZmVyPiBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZl
cjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVS
YXRlKSA6IDA7CisgICAgICAgIGF1dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFu
bmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZl
clNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1f
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91
dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBt
X2lucHV0QnVmZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZl
cnMuYXBwZW5kKG91dHB1dEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4Mzlk
MGJjNjdmMDU4NjYzYjY3NGFkMS4uN2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYz
NWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVj
dXRlKERhdGFiYXNlJiBkYikKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1
bHRTZXQ+IHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1
bHRTZXQgPSBTUUxSZXN1bHRTZXQ6OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4g
ZmV0Y2ggdGhlIGNvbHVtbiBuYW1lcy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpA
QCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBk
YikKICAgICAvLyBGb3Igbm93LCB0aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQt
PnNldFJvd3NBZmZlY3RlZChkYXRhYmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0
U2V0ID0gcmVzdWx0U2V0OworICAgIG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
LmNwcAppbmRleCAzZDE1NGFjNWEyMWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0
MTFhZTMwM2U0YjA4NmVkYmY5Zjg2OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdl
YkdQVTo6Y3JlYXRlKCkKIHZvaWQgV2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVB
ZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZl
cnJlZCkgY29uc3QKIHsKICAgICBhdXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUo
ZGVzY3JpcHRvcik7Ci0gICAgaWYgKCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3Qo
KTsKLQotICAgIGRlZmVycmVkLnJlc29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29s
dmUoYWRhcHRlci5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRk
ZjY4YzYyZTQxN2Q0ZGIzYjcxMTIyMzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRi
OTI2NzQ4ZWFhYmFiYmQ1MTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxXZWJHUFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29u
c3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRl
cj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIC8vIEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2Vi
R1BVQWRhcHRlcjo6V2ViR1BVQWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0
ZXIuaAppbmRleCA0YjhlZmY1MjEzYjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0
ZTU0YmYyYTY0MDhlOWU4ODI1NGM4MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVj
dCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkdQVUFkYXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwor
ICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yJik7CiAKICAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5k
ZXggMzQ5NDFkMGVhNWY3OTI1MWNiNDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYy
NGFmNjQyNDhkOTk5ZGMzMWM0ZTQyMGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUo
UmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6
V2ViR1BVQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0
MjhhNDAwNmUyM2Y0OTIzODc1Li41MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNi
MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3Rh
dGljIFJlZjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNv
bnN0IEdQVUJ1ZmZlciYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcAppbmRleCBkYmI4MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQy
Li5iNmVjYWFhMTVlNDJhZGM4ZTJlNTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApA
QCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVD
b21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRC
dWZmZXI+JiYgYnVmZmVyKQorUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CiB9CiAKIFdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFz
cyhXZWJHUFVSZW5kZQogICAgICAgICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFj
aG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNv
bG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVh
ckNvbG9yIH0pOwogICAgIH0KIAotICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NE
ZXNjcmlwdG9yKSk7Ci0gICAgcmV0dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1h
bmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaAppbmRleCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQz
N2JkMWVmLi45OGVlNDBjZGRkNDQ0YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAog
Y2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1h
bmRCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZm
ZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAg
Y29uc3QgR1BVQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tbWFuZEJ1ZmZlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5
NDEyODZjNDM4Li5lNDBlYTk4Mjc3OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2
LDggKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAg
IGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRl
ciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNl
ID8gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVs
ZWFzZU5vbk51bGwoKSkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZp
Y2U6OmNyZWF0ZSgpKSAvLyBGSVhNRTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNy
ZWF0aW5nIG1fZGV2aWNlLgorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmlj
ZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRh
cHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwx
NyBAQCBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BV
RGV2aWNlOjpjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/
Ci0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJu
IGJ1ZmZlciA/IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihH
UFVCdWZmZXJEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0p
KQorICAgICAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4g
YmUgdmFsaWRhdGVkIGhlcmU/Ci0gICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hh
ZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7
Ci0gICAgcmV0dXJuIG1vZHVsZSA/IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5y
ZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZp
Y2UtPmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3Jp
cHRvci5jb2RlIH0pKQorICAgICAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
bW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRD
b252ZXJ0UGlwZWxpbmVTdGFnZShjb25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKQEAgLTg5LDE0ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+IFdlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9k
ZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7
IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0
b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1
cm4gcGlwZWxpbmUgPyBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVh
c2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNl
LT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZN
b3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnBy
aW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVy
biBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
V2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNv
bW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVy
biBjb21tYW5kQnVmZmVyID8gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZm
ZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZm
ZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2
aWNlOjpnZXRRdWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRh
NmRiNzY1N2IyY2U4MWQ2YTA3MDgxYS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4
NjQ3YjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5k
QnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29k
ZXI+JiYgZW5jb2RlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNv
bW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4m
JiBjcmVhdG9yLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCmluZGV4IDMxMjk2ZTNlOWU4MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdl
YWYxOWYwOTkwNzFkYjdkM2FmMGE4ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBXZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVh
dGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAg
ICAgLy8gRklYTUU6IExhc3QgYXJndW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25n
Pi4gV2h5IGlzIHRoZSBnZW5lcmF0ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURM
IHdhbnRzIGEgc2VxdWVuY2U8dW5zaWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZl
cnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8
dW5zaWduZWQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJh
NDg4ZWMwYzMxZWE5ZmEuLjEwNmM1NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVh
dGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGlu
ZT4mJiBwaXBlbGluZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBp
cGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVy
UGlwZWxpbmU6OldlYkdQVVJlbmRlclBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBw
aXBlbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oCmluZGV4IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBm
OTdkMjIuLjM5MTdmYWQ3NjdmY2NiMGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJl
bmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUo
UmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVS
ZW5kZXJQaXBlbGluZT4gcmVuZGVyUGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5l
LmNvcHlSZWYoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmNwcAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4
ZTU5NmI4NjFiOThlLi45OTRjMmVjYTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1v
ZHVsZS5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BV
U2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNo
YWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1v
ZHVsZSkpKTsKIH0KIAogV2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVm
PEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5
YTZlYjRjNmY3NDU3YTBhYzQxOGQuLjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMz
Mzc4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9k
dWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRl
ck1vZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BV
U2hhZGVyTW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmlu
ZGV4IGM2NzgwZWY2MWIwMjk5ZmVlMTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2Jk
MmU5MTU3ZDg1Y2RkMzdjMTgzMDllMjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRl
eHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRy
PFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZp
ZXcoKQogewotICAgIGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCk7Ci0gICAgcmV0dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6
Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChh
dXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQor
ICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5jcHAKaW5kZXggMDQ1OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUx
Yy4uNzI2NTk0NWEyM2U5YzEwZDI2YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAt
MzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0
dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3
KQorUmVmPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxH
UFVUZXh0dXJlPiYmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0
dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BV
VGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2Vi
R1BVVGV4dHVyZVZpZXcoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIw
ODFkZmNkYzkxYmVmNTM4MmFkM2Y3OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNm
ODc5MWJlY2EwOTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdlYkdQVVRleHR1cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4
dHVyZVZpZXc+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3
PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVy
ZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4g
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0
YmE5NDliMGIzMmQwZjZlNjg5MjEyZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJi
NmJmNjU3YjdmZDBhYzJhMzAwZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdl
PiBBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4g
b3JpZ2luYWxSYW4KICAgICBpZiAoZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBv
c2l0aW9uID0gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29u
dGFpbmVyKCkpOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAo
IXNlYXJjaFJhbmdlIHx8IHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJj
aFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbik7CisgICAgaWYgKHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNl
YXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5h
bFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBm
aW5kQ2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRh
cmdldE9mZnNldCk7CiB9CiAKIHN0YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmpl
Y3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcAppbmRleCA2ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2Qw
OWYwLi5mN2NkM2FhOGFkZGE2YTRiY2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cApAQCAtMzM3LDggKzMzNyw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8v
IENvbnNpZGVyIHByZXZpb3VzIHRleHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9y
CiAgICAgICAgIC8vIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3
ZSBlbWl0IHRoZQogICAgICAgICAvLyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQg
YXJlYXMpLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCwgbm9kZS0+cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9F
bWl0ID0gb2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnRO
b2RlKCksIDAsIG5vZGUsIDApOworICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0
VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcAppbmRleCBhNmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRh
NjA3Li5iYzE2ZTRiMjkwMzExMzlkYzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJs
aW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSHlwZXJsaW5rLmNwcApAQCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtp
dEFjY2Vzc2libGVIeXBlcmxpbmtHZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAg
ICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5n
ZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQo
KSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUobm9kZSkpOworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVj
dChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vz
c2libGVIeXBlcmxpbmtHZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCAr
Mjg2LDggQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4
KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9z
aXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JP
YmplY3QoY29yZU9iamVjdCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJl
bnROb2RlKSwgbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdl
dFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3Rh
dGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGlu
ayogbGluaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTli
NTc5N2M5OTE2ZDI2MjVhOWZiNDBjNjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVk
NTdiNDRmZjJkNzlhYmNjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CkBAIC00MDYsMTMgKzQwNiwxMyBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9y
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8g
Q2FsY3VsYXRlIHBvc2l0aW9uIG9mIHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVj
dC4KICAgICBQb3NpdGlvbiBwYXJlbnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5vZGUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdl
OjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdl
U3RhcnQpOworICAgIGF1dG8gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8g
U2V0IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2Ug
bGVuZ3RoLgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBj
b3ZlciBzcGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRr
T2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVu
dC5nZXQoKSwgdHJ1ZSkpOwotICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShub2RlLT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAg
ICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5n
ZXQoKSwgdHJ1ZSk7CisgICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQo
Y29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigp
LCB0cnVlKSk7CisgICAgYXV0byBub2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3Vt
ZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0
aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAog
ICAgIC8vIFNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcg
d2l0aCAqX0VORCBib3VuZGFyaWVzLgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBV
UFNUUkVBTSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4
YzdiMWNmMzhiOWNiODhkYjc4YzY5OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNl
Y2FlNzAyYTQzOTU2MmZjMWM1YzAyMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjQwMSwxMiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9O
U1JhbmdlOihSYW5nZSAqKXJhbmdlCiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0g
c2NvcGUgJiYgIXJhbmdlLT5lbmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAg
ICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxS
YW5nZT4gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUs
IDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAg
IGF1dG8gdGVzdFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUs
IDAsICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAg
IEFTU0VSVCgmdGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQg
c3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgp
KTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVz
dFJhbmdlLnB0cigpKTsKICAgICB0ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVy
KCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
VGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwCmluZGV4IDlmYzMwNmNjZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1
NDVkNWQ1MTFmZjg2ODE5OGIxOTM1MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgs
OCArNzgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpT
R2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWlj
cm90YXNrPiYmIHRhc2spCiAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkK
IHsKLSAgICBSZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2tdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1
dG8gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxs
KCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCmluZGV4IGYyZWIyZjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIu
LmU3ZDkzN2VlYTc0YzE2YmY5ZDFhZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4
IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9i
amVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlz
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJl
ZlB0cjxKU01pY3JvdGFza0NhbGxiYWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6
OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9
IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1
ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90
YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IDM4MGFkNWJkMTUyMDEzZTg5NmI4N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3
ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMs
OSBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihv
YmplY3QpOwogCi0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNN
aWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAg
IGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwg
V1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2td
KCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2
ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4
YzM1NjZhMzFjMGNjMjQ5Li5kZjk0NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW0KQEAgLTg1LDEwICs4NSwxMCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+
IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAg
ICBOUE9iamVjdCogbnBPYmplY3QgPSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxl
T2JqZWN0XTsKICAgICAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6
Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAg
ICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmpl
Y3QsIFdURk1vdmUocm9vdE9iamVjdCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0
YWJsZU9iamVjdCByZXR1cm5zIGEgcmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4
cGVjdGVkIHRvIHJlbGVhc2UgaXQuCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5z
dGFuY2UpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3
M2NiNmYxMzM1OTM2MzViYzNmYWE1Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcw
MmI2OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJp
YWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUg
aW1hZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxl
bmd0aCB8fCAoaW1hZ2VTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0g
ICAgICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShp
bWFnZVNpemUpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShp
bWFnZVNpemUpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBm
YWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1
OCw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZm
ZXJzLT5hdChpbmRleCkpOwotICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG1fc2hhcmVkQnVmZmVycy0+YXQoaW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGdldEpTVmFsdWUoYnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kV2l0aENyYXNoT25PdmVyZmxvdyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTM0ODQsNyArMzQ4NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IHRvSlMoZXhlYywgYXBpVmFsdWUpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2
YWx1ZSk7CisgICAgYXV0byBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgqZXhlYywgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0
b1JlZihleGVjLCBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0
NDk2NWRhNjQwNDE1NGViNC4uMWI3ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBPYmpjQ2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1Ymxp
YyBJbnN0YW5jZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNy
ZWF0ZShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMg
UmVmPE9iamNJbnN0YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYpOwogICAgIHZpcnR1YWwgfk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2
b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRp
b25FbnZpcm9ubWVudCA9IDApOyAvLyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMg
dGhlIGV4Y2VwdGlvbiBzaG91bGQgcHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1l
bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAw
YWVjMGNlZWFmOWM2YzJhNjJlMmIwODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3
MjQyY2M0NjAxY2QzMmE1YzExN2ZmZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KQEAgLTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2Jq
Y0luc3RhbmNlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQog
ewogfQogCi1SZWZQdHI8T2JqY0luc3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0
YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+
IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiBy
b290T2JqZWN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2Jy
aWRnZSBDRlR5cGVSZWYpaW5zdGFuY2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBSZWZQdHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYo
bmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3
cmFwcGVyID0gYWRvcHRSZWYoKm5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9v
dE9iamVjdCkpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRy
KCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAg
ICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9i
amNJbnN0YW5jZSgpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5k
ZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJhOS4uMDk1MjdmMWIxMjZj
N2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBDU1NGb250RmFjZVNvdXJj
ZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgaWYgKG1faW1t
ZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYnVmZmVy
KTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmluZygpLCB3cmFwcGluZyk7
CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVm
ZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHdo
ZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwgb3Igbm90LiBMdWNraWx5
LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMWVjYzViYTM3
MDg3OTJmYTYzN2YxNmIxMmNkNzNlMTFlZmIwNGE2Mi4uODJiNjVmODcwODQ4ZjE2NzI5YjcyZmYy
OGIzZjU3YTJhZGZlY2U4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
MjU5LDExICsyNTksMTEgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxl
cygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBT
dGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQgcnVsZUNvdW50ID0gbGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVDb3VudDsgKytpKQogICAg
ICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7Ci0gICAgcmV0dXJuIHJ1bGVM
aXN0OworICAgIHJldHVybiBXVEZNb3ZlKHJ1bGVMaXN0KTsKIH0KIAogRXhjZXB0aW9uT3I8dW5z
aWduZWQ+IENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGEyNGE1MzYyNjg5
MGE4YTkxZDExNzM4Y2E5YTU4YTQ1MzcxYmI4YjguLmUzNDkxNzEyODc4OTBiOTg3NGE3MDRhYjdi
NDFiZjY5Y2RhNTVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMzczLDcgKzM3Myw3
IEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKICAgICBtX2JhY2tpbmct
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+cmFuZ2VzKCkuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7Ci0gICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
IGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAg
IGZvciAoYXV0byYgcmFuZ2UgOiBtX2JhY2tpbmctPnJhbmdlcygpKQogICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdlLmZyb20sIHJhbmdlLnRv
KSk7CiAgICAgcmV0dXJuIHZhbHVlcy0+Y3NzVGV4dCgpOwpAQCAtMzkwLDcgKzM5MCw3IEBAIFN0
cmluZyBGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+ZmVhdHVyZVNldHRpbmdz
KCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIm5vcm1hbCJfczsKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBm
b3IgKGF1dG8mIGZlYXR1cmUgOiBtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygpKQogICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRUYWcoZmVhdHVy
ZS50YWcoKSksIGZlYXR1cmUudmFsdWUoKSkpOwogICAgIHJldHVybiBsaXN0LT5jc3NUZXh0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKaW5kZXgg
ZmRiOGUzYWY3OWFjNjJiNzg5NTYwYjgzYzM3ZWI3NDNjOGZlNjEyZi4uYmRlZmVjNGE3ZmE3YzQw
YjM2OWEwYTNkMmYwZTNkMzZiNzI4Nzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtNzksOSArNzksOSBAQCB2b2lkIEluc3BlY3RvckNT
U09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlU2hlZXRDb250
ZW50cyogcwogewogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwotICAgIFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZSgqc3R5bGVTaGVldCk7Ci0gICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LmFkZChz
dHlsZVNoZWV0V3JhcHBlcik7Ci0gICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5nZXQoKSk7
CisgICAgYXV0byBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZSgqc3R5
bGVTaGVldCk7CisgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LmFkZChzdHlsZVNoZWV0
V3JhcHBlci5jb3B5UmVmKCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIucHRyKCkp
OwogfQogCiB2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggMzMxZTgzNjNmYWU4N2FiNDUzZmMxZTdkNTUzOWUwOTgwNmZiMTM1Mi4uMmI3NWViYmY3
ODZhOWQ2NDNmZmIxYzdkM2I5MzkxOGI5MjgwODY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBl
IHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3Qg
Q29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3QKIHsKICAgICBpZiAocGFpbnRUeXBlID49IFNWR1Bh
aW50VHlwZTo6VVJJTm9uZSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGF1dG8gdmFs
dWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICB2YWx1
ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpDU1NfVVJJKSk7CiAgICAgICAgIGlmIChwYWludFR5cGUgPT0gU1ZHUGFp
bnRUeXBlOjpVUklOb25lKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggNzRmYTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUy
YjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNmZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHls
ZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVl
LCBGaWx0ZXJPcGVyYXQKICAgICAgICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1
ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwoY3NzVXJsKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbj4gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJs
LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKG9wZXJhdGlvbik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChX
VEZNb3ZlKG9wZXJhdGlvbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmNwcAppbmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcx
YjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQxMGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1l
U2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxlUnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5
bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJhc2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0KSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNT
U09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1
cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBhcmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRy
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NT
T01XcmFwcGVyKG51bGxwdHIsIHBhcmVudFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJl
ZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgp
OwogfQogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVy
KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAor
UmVmPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQ
dHI8Q1NTUnVsZT4gcnVsZTsKICAgICBTdHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxT
dHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpAQCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJl
bnRTaGVldCwgQ1MKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBicmVhazsKICAgICB9CisgICAgQVNTRVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUp
CiAgICAgICAgIHJ1bGUtPnNldFBhcmVudFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1
bGU7CisgICAgcmV0dXJuIHJ1bGUucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5
bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4
MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3
NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDgg
Kzg0LDggQEAgY2xhc3MgU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNl
IHsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZv
ciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lvbi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NT
T01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0g
ICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hl
ZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmln
aW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVi
bGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlc3Ryb3koKTsKICAgICAKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFw
cGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25z
dDsKKyAgICBSZWY8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBh
cmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1f
dHlwZSA6IDU7CiAgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNo
ZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmNwcAppbmRleCAwZmVlODRjZDdlYjI2NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRk
NDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJmZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxk
TGlzdE11dGF0aW9uQWNjdW11bGF0b3I6On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkK
ICAgICBhY2N1bXVsYXRvck1hcCgpLnJlbW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0
YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVh
dGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JNYXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAg
UmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAs
NyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9
IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdl
dCkpKTsKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgp
OwogICAgIH0KLSAgICByZXR1cm4gYWNjdW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9y
KTsKKyAgICByZXR1cm4gYWNjdW11bGF0b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5l
IGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5v
ZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0
aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgK
aW5kZXggOWI5NDM3MTZkYmM4NGM5M2IyNmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2
OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwogLy8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBp
cyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBp
cyB0aGUgcHVibGljIGludGVyZmFjZS4KIGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBn
ZXRPckNyZWF0ZShDb250YWluZXJOb2RlJik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxk
TGlzdE11dGF0aW9uQWNjdW11bGF0b3IoKTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRmY2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMw
MGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJjNjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2Vy
JiBtYXJrZXIsIE5vZGUmIG4KICAgICBBU1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwg
IW5vZGUuZG9jdW1lbnQoKS52aWV3KCktPm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCByZWZhY3RvciB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNh
dXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9kZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJz
b2x1dGVUZXh0UXVhZHMoKS4KLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShub2RlLmRvY3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5v
ZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1l
bnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNl
dCgpKTsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1h
cmtlclJhbmdlLT5hYnNvbHV0ZVRleHRRdWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAx
MDlmNzI0YzU4MzE2MGE3MThjYjU4NzRkMGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3
MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHls
ZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCkKICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRv
Y3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25O
b25jZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRp
YVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNl
ckNvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwog
CiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwog
ICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAg
TE9HKE1lZGlhUXVlcmllcywgIklubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZh
bHVhdGluZyBxdWVyaWVzIik7Ci0gICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1
ZXJpZXMpICYmICFwcmludEV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFz
Y3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFs
dWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9z
dHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVy
OjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAg
ICAgIGlmIChhdXRvKiBjYWNoZWRTaGVldCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgq
Y2FjaGVLZXkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxl
KCkpOwogICAgICAgICAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgq
Y2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAg
bV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmll
cykpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAg
ICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcg
KzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKFN0cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChl
bGVtZW50KSk7CiAKICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNv
bnRlbnRzLmdldCgpLCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0
LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1f
c2hlZXQtPnNldE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICgh
ZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVt
ZW50LnRpdGxlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEy
OGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMw
N2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyAr
NDksNyBAQCBjbGFzcyBQb2ludGVyRXZlbnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAg
ICAgICAgIGJvb2wgaXNQcmltYXJ5IHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJl
ZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQm
JiBpbml0aWFsaXplcikKKyAgICBzdGF0aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9pbnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6
ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJl
SW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApp
bmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNjZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUy
YjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaApAQCAtNDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0
dXJlVHlwZSB7IEVzY2FwZUtleSwgT3RoZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVT
dGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8
VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRl
LCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBl
KSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJj
NzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcg
KzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2
ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUg
c3RhcnQgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVj
dGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJ
biBvcmRlciB0byBvYnRhaW4gdGhpcyBvZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEg
cmFuZ2UKICAgICAvLyB3aGljaCBzcGFucyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8g
dGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJhbmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxS
YW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigp
LmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpKTsKKyAgICBSZWY8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNS
YW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24tPnN0YXJ0UG9zaXRpb24oKSk7CiAKICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5n
ZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0
UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRp
dmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9jYXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3
ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBp
bnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7Cisg
ICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkp
OwogCiAgICAgLy8gQ2xvbmUgdGhlIHJhbmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0
aG9kIG1heSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRv
IHJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsy
NjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rv
cihtX2ZyYW1lKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBG
cmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0
aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQo
KSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmVuZCgpKTsKIAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYg
bWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVt
b3ZlTWFya2VycyhyYW5nZS5nZXQoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlPiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3Jy
ZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFw
cGluZ01hcmtlcik7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJl
bW92ZU1hcmtlcnMocmFuZ2UucHRyKCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZT4geyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29y
cmVjdGVkIH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3Zlcmxh
cHBpbmdNYXJrZXIpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigp
LCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBA
QCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRp
bmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRl
TGlua0NvbW1hbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0g
ICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCku
c3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJz
KCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihy
YW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFk
ZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRp
b24pOwogfQogCiBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OmFsdGVybmF0aXZlVGV4dENsaWVudCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRl
ZEF1dG9jb3JyZWN0aW9uQQogICAgIGlmIChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFy
YWN0ZXJQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVj
ZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwg
cHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcg
c3RyaW5nID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBh
dXRvIHByZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1
bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAg
IFN0cmluZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkp
OwogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVz
cGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFjZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4g
YXV0b2NvcnJlY3Rpb24gZm9sbG93aW5nIHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0
aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBvcmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRp
b24sIHdlCiAgICAgLy8gd29uJ3QgYXV0b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5k
b2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdl
dCgpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3Ry
aW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgp
LT5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1
bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFz
dERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0
Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwgUmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25z
dCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBsYWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29u
c3QgRG9jdW1lbnRNYXJrZXImCiAgICAgaWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwg
ZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgTm9kZSogbm9kZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5v
ZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJh
bWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5l
bmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAg
ICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9k
ZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAg
U3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYg
KCFjdXJyZW50V29yZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3Jp
Z2luYWxUZXh0ID0gY3VycmVudFdvcmQ7CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAg
ICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0
ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBX
VEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAg
ICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3Bl
bGxpbmdTdWdnZXN0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50OgotICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJh
bmdlOworICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2Up
OwogICAgICAgICBtX2RldGFpbHMgPSBtYXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3Rh
cnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwog
ICAgICAgICBicmVhazsKQEAgLTU5OSw3ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2Vy
JgogICAgICAgICBhdXRvJiBtYXJrZXJEYXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRp
Y3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0g
bWFya2VyRGF0YS5vcmlnaW5hbFRleHQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VX
aXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9
IG1hcmtlckRhdGEuY29udGV4dDsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQx
ZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0
YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFy
dC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQ
dHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0
aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2Rl
KHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOworICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5k
SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsK
IAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZp
c2libGVTdGFydCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5k
T2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBz
dHlsZSkKICAgICAgICAgbmV4dFBhcmFncmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdy
YXBoU3RhcnQpLm5leHQoKTsKICAgICB9CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRy
dWUpOwotICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVu
ZFJhbmdlKQotICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFy
dFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwg
c3RhcnRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7
CisgICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRl
U3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3Np
dGlvbigpKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Y29weVN0eWxlT3JDcmVhdGVFbXB0eShjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAt
MTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVT
dHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVs
ZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQoKnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZSgpOwogICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAg
ICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxF
bGVtZW50PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkp
OworICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93
bi5wdHIoKSk7CiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNo
aWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdh
dGUgaW5saW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBl
YWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBAIC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0
eWxlLCBOb2RlKgogICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRh
aW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhlaXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2Rl
CiAgICAgICAgICAgICAvLyBCdXQgaWYgd2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4g
YWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4KICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0
Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQotICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVU
b1B1c2hEb3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAg
IGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkp
OwogCiAgICAgICAgICAgICAvLyBXZSBmb3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIg
bG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9kZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0
YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRlciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhl
IGN1cnJlbnQgaW5uZXIgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAppbmRleCBhYzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVj
MWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgy
LDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFu
Z2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2Ug
fTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJh
bmdlKSB9OwogfQogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1
IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2Vydmlu
Z01hcmtlcnMoVGV4dCYgbm9kZSwgdW5zaWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
JiBtYXJrZXJDb250cm9sbGVyID0gZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJr
ZXJzID0gY29weU1hcmtlcnMobWFya2VyQ29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCks
IERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShu
b2RlLCBvZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4g
bmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2Rl
LCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQg
KyByZXBsYWNlbWVudFRleHQubGVuZ3RoKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2Vy
IDogbWFya2VycykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJr
ZXIuaXNEaWN0YXRpb24oKSkgewotICAgICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJr
ZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBt
YXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1h
cmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBt
YXJrZXIuZGVzY3JpcHRpb24oKSwgbWFya2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRh
dGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgp
LCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CiAgICAgfQogfQogCkBAIC0xNDE0LDE0ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFn
cmFwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAg
ICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhU
b01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
ICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0
UmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3Rh
cnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1
ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAg
ICAgIGlmIChlbmRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
ZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01v
dmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVu
ZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAg
ICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0
KCksIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtMTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0
T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0
byBjcmVhdGUgYSBSYW5nZTsgdGhleSBhcmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0
aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQgPSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KTsKICAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVw
cmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5n
ZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVu
ZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVz
IGluIHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRo
b3VnaCwgc2luY2UgbW92ZWQgcGFyYWdyYXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwu
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNl
ZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBpbml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQg
c29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNlZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFn
cmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFncmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpO
bywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6
ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlT
dHJpbmcoKSk7CiAKICAgICAvLyBBIG5vbi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3Zl
ZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUgaXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRo
aW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVtcHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFn
cmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2
NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBjZjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC02OTMsOSArNjkzLDkgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBh
cmFncmFwaHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01v
dmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+
c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2Vk
LmdldCgpKSkKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFy
dE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xp
ZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVS
ZXBsYWNlZC5wdHIoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdy
YXBocyB3aWxsIGluc2VydCBwbGFjZWhvbGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3
b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwgZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRlMWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVj
Li44NmQwMjFkMThhNDc5MTNlZWEwYjc2NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5jcHAKQEAgLTExMTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwg
aW50IGluCiAgICAgaWYgKGluZGV4IDw9IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZSgmbm9kZSksIERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9k
ZUNvbnRlbnRzKG5vZGUpOwotICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAg
Q2hhcmFjdGVySXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXgg
LSAxKTsKICAgICByZXR1cm4geyBpdC5hdEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBp
dC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlk
MWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9k
ZShOb2RlJiBub2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gcGFyZW50U3R5bGUgPSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxl
KG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9k
ZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04
MjgsOCArODI4LDggQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJl
bW92ZVN0cmlrZVRocm91Z2ggPSBzdHJpa2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRp
b25DaGFuZ2U6OlJlbW92ZTsKICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3Vs
ZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsKICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+
Y29weSgpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVM
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
YXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8g
ZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogCiAgICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJs
aW5lKTsKICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0
LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRyKCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBF
ZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVt
ZW50JiBlbGVtZW50LCBSZWYKICAgICAgICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxl
bmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBpZiAobmV3VmFsdWVMaXN0LT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3
SW5saW5lU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1Zh
bHVlTGlzdCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEw
NzEsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9u
bHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdh
cyBtb2RpZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRp
ZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9u
ZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgot
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAg
YXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRp
b24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5
bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0
KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4
LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGlu
Z1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
SW5saW5lQW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBD
U1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBtb2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRp
ZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMg
PSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgIHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbihlbGVtZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0
eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAv
LyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxl
Y3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHls
ZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8g
RklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUx
OTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNv
bXB1dGVkU3R5bGUoJmVsZW1lbnQpOwogCiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9p
ZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxl
ZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAg
bV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRT
dHlsZSk7CisgICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZy
b21Db21wdXRlZFN0eWxlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGll
c0luU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNG
cm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVk
RWxlbWVudCYgZWxlbWVudCwgTm9kZSoKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9w
ZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAog
ICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlk
ZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRT
dHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOworICAgIGF1dG8gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNv
bnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxl
LT5tX211dGFibGVTdHlsZSkgewogICAgICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJs
ZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkK
ICAgICAgICAgICAgIGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAy
LDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0
cmFjdFByb3BlcnRpZXNOb3RJbihTdHlsZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFBy
b3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1
bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7
CisgICAgYXV0byByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5k
YW50UHJvcGVydGllcyk7CiAgICAgcmVzdWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhi
YXNlU3R5bGUpOwogICAgIEFTU0VSVChyZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNj
OTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9y
OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9u
OjpMZWZ0VG9SaWdodCA/ICJsdHIiIDogZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJp
Z2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5oZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFw
aFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwg
RWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24g
RWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAg
LTIwMjMsOCArMjAyMyw4IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAg
IHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBl
eHRlbnRPZmZzZXQpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjpt
YXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAg
ICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNl
Tm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAg
ICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdl
LmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5v
KTsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5v
ZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAg
ICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5w
dHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCmluZGV4IDU2Y2E1YmYwYTdmODkzNDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFj
MWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMxNzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
Y2UsIEVkaXRBY3QKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJh
bWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24s
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJv
cGVydHlWYWx1ZSk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHls
ZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0
PwogICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJp
bmRpbmc6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVj
dGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQ
YXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZy
b21ET01XaXRoVXNlckludGVyZmFjZToKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJh
Z3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFy
YWdyYXBoU3R5bGUoc3R5bGUucHRyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5l
ZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGly
ZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0
QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9y
KCkuYXBwbHlTdHlsZShzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlv
bik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdy
aXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBh
dXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwot
ICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNl
dFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUu
cHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAK
aW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAyNTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRl
MjFkYmIyMDM0YjU5YzViOTUyODlmYTNjZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9y
bWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVmUHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVw
cmVjYXRlZE5vZGUoKSA9PSBub2RlVG9TcGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkg
OiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRv
KTsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJs
b2NrOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5v
ZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9
IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9y
IGVsZW1lbnRzIHdpdGggY29udGVudGVkaXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAh
cmVmTm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9j
ayhyZWZOb2RlLT50YWdRTmFtZSgpKSAmJiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0g
ICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWlu
ZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5nZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9j
ayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdl
dCgpKSkKICAgICAgICAgJiYgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRP
ZigqcmVmTm9kZSkpIHsKICAgICAgICAgLy8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhh
dCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJyZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9k
ZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5kZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVm
OTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNlYWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04
MywxMyArODMsMTMgQEAgdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAv
LyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUg
c3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVy
YXRpbmcgb24uCiAgICAgTm9kZSogcm9vdCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShyb290KTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAgICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGlu
ZyBidXQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0
IGFjY2VzcyBzdHlsZSgpLgogICAgIGRlZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAg
YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVu
dCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCksIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQs
IGVkaXRpbmdBY3Rpb24oKSkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5
bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kLCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQuY3BwCmluZGV4IDUwMmJjMDRkMzUzYjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0
MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAg
LTg5LDggKzg5LDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRD
b21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxT
dGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNy
ZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFu
Z2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3Jh
bmdlVG9CZVJlcGxhY2VkKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRjNzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZj
MWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9p
ZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0
eWxlU3BhbklubGluZShJbnNlcnQKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRv
d25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5vZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxl
UHJvcGVydGllcyogaW5saW5lU3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAg
ICAgICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAg
ICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBA
IHN0YXRpYyBib29sIGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5v
ZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0gdG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9z
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Q
b3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwogICAgIFN0cmluZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5z
dHlsZSgpLT5hc1RleHQoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29u
IGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBhcmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0
ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykKICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRv
IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0
eWxlKCkpOwogICAgIENvbnRhaW5lck5vZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+
cGFyZW50Tm9kZSgpOwogCiAgICAgLy8gSWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBh
IFBhc3RlIGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRv
IGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThk
ZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmNwcApAQCAtMTI0LDggKzEyNCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFu
Z2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewot
ICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJh
bmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAg
IHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3Jy
ZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNh
YjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1
MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTMzNyw4ICszMzcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBp
ZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFu
Z2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJh
Y3RlciBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8g
dGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoLAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3
YW50IHRvIGlnbm9yZSByZXN1bHRzIGluIHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50
RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0
cigpKTsKICAgICAgICAgICAgIGxhc3RJdGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChjdXJyZW50U3RhcnRPZmZzZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcs
OCArMzk3LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAo
IW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFy
UGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVsbGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2Nh
dGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxp
bmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFmaXJzdEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBh
cmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
c3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZz
ZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBo
T2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zm
c2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5w
dHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNT
cGVsbGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQg
PSBzcGVsbGluZ09mZnNldDsKQEAgLTQwOCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1h
ciwgYgogICAgICAgICAgICAgICAgIGlmIChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJh
c2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1
ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEuLjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0
ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAt
MjY1LDggKzI2NSw4IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8VHlwaW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlv
blR5cGUpOwotICAgIGFwcGx5VGV4dEluc2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQs
IHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQg
PSBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9w
dGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChm
cmFtZS5nZXQoKSwgY21kLmdldCgpLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxl
Y3Rpb24pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVu
dCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5
cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNv
bW1hbmRUeXBlLCBUZXh0RwogICAgIGlmICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRl
eHRJbnB1dCgpKQogICAgICAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0
aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3Mo
KSk7CiAKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6
OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2UpOwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndp
bGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZy
YW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6
Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkgfSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRU
eXBpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2
MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhiMzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVj
ZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcApAQCAtMTg5MywxMCArMTg5MywxMCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25z
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAg
IGJvb2wgdGhpc0lzU3RhcnQgPSAodnAgPCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNv
bWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNvbnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+
ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZh
bGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2
cCkpOwotICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2Uu
Z2V0KCkpOworICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFu
Z2UucHRyKCkpOwogCiAgICAgcmV0dXJuICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3Rh
bmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmlu
ZGV4IDVjY2Y0NDYyNDA5NjgxM2U4NjkyN2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFj
NGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJiMjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3
cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEp
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAg
IGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5j
cHAKaW5kZXggNzVmNTRhMTMxMDRhMzRmMzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYw
ZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNjNWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDgg
QEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290
ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBB
ZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3Vs
dHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMu
ZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZVRvRW5kLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9k
ZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVu
ZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVl
KTsKICAgICBpbnQgc3RhcnRJbmRleCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAg
aWYgKHN0YXJ0SW5kZXggPj0gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJiNTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1
ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAvLyBJZiB0aGUgdGV4dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZs
aXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5v
dGhpbmcuCiAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRp
bmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkpOworICAgIGF1dG8gc2VsZWN0aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRT
ZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAo
IXNlbGVjdGlvblN0eWxlIHx8ICFzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTM4LDE3ICsxMzgsMTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFw
aFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigp
KTsKIH0KIAogdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiByZW1vdmVzIHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2Rp
ZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVk
aXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5k
b2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRh
YmxlQ29weSgpOworICAgIGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
bV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRT
dHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAv
LyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcg
cHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZh
dWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgy
NTUsIDI1NSwgMjU1LCAwLjApIik7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50
cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJWE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxy
ZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBVbmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5
bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRjaCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rp
b24oZGVmYXVsdFN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAg
ICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpD
aGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAogc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFn
ZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9z
aXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlvbigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvcik7CiAgICAgUG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFn
ZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxS
YW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCks
IGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCkt
PmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVi
b2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAg
YXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwg
YmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJv
YXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAg
IHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJl
MWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIxMjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAg
dm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1l
PiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVy
QW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwg
UG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlv
bjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpE
b05vdFNldEZvY3VzKTsKIAogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFz
dGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4
dDsKLSAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVu
dEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQp
KSB7CisgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRl
bnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFp
blRleHQpKSB7CiAgICAgICAgIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9k
ZSwgKmZyYWdtZW50KTsKLSAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVu
dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYg
KHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2Vy
dEFjdGlvbjo6UGFzdGVkKSkKICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5y
ZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJk
KSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAg
IH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0
ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYg
aW1hZ2VFbGVtZW50KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNo
aXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IDc5NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRh
MTk4MzQuLjU3NDcyMGU3NDMzYjNhZTcyOWQzZDQzYzNjMTVmYTQyNDM2MzZkNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgUmVmUHRyPEVk
aXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2Rl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MRWxlbWVudD4obm9kZSk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0
eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzKGVsZW1lbnQpOwogICAgIHJldHVybiBzdHlsZTsKIH0K
QEAgLTEyMTEsOCArMTIxMSw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8v
IEJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIEkgY2FuIGZpbmQsIGl0IGxvb2tzIGxpa2Ugd2Ug
d2FudCB0byBzdGFydCBwYXJzaW5nIHRoZSBmcmFnbWVudCBpbiB0aGUgSW5Cb2R5IGluc2VydGlv
biBtb2RlLgogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVtZW50YXRp
b24gZGV0YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhhdCBlZmZl
Y3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4dCBmb3Ig
dGhlIGZyYWdtZW50LgotICAgICAgICBSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBmYWtlQm9keSA9
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7Ci0gICAgICAgIGZyYWdtZW50LT5w
YXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5nZXQoKSk7CisgICAgICAgIGF1dG8gZmFr
ZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOworICAgICAgICBmcmFn
bWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxz
ZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAgICBmcmFnbWVudC0+
cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7
CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cAppbmRleCAwNDM0MTI5MDJhNDBmZTQxNzFiNzY1MmQ5OGIwYTNlMmUyOGQ1MTU3Li44OTcxNTVh
MTIyOTFkYzRlNTM1MjM0ZTA4OGE4YzQyZWZhMDliNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTIxNyw5ICsyMTcsNyBAQCB2b2lkIEZpbGVS
ZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcpCiB7CiAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4gbV9ieXRl
c0xvYWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPSBtX3Jhd0Rh
dGEtPnNsaWNlKDAsIG1fYnl0ZXNMb2FkZWQpOwotCi0gICAgICAgIG1fcmF3RGF0YSA9IG5ld0Rh
dGE7CisgICAgICAgIG1fcmF3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRl
ZCk7CiAgICAgICAgIG1fdG90YWxCeXRlcyA9IG1fYnl0ZXNMb2FkZWQ7CiAgICAgfQogICAgIGNs
ZWFudXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
aW5kZXggZDdlMmI3NWE0NTMxMjBiMDJkN2M3NDJkNDYwZjQ2YTRkZDU5OTQ4ZS4uZDc4MTEwY2M5
ZWRiOWRhMDA0ZDQxNTg0YWM0OWRiYWUwMDI0ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5n
JiBpbnB1dExpbmUpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdz
LmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBM
T0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMGRjYzg4OTA1MDYzZDJlYjI3MDllNjJlMzRlOTVlYTA3
M2IyODhhNC4uMTgxMGU3MjVlMTgzNDlhYjM2NjU2OGVlMTg1MGNkYmJiZWY5OWY2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0No
YW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpZZXMpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBx
dWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0
dGluZyBpdCBoZXJlCiAgICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1l
bnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KQEAgLTY0NDUsNyArNjQ0NSw3IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAgICAgaWYgKGhhc01l
ZGlhQ29udHJvbHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSZWZQdHI8TWVkaWFD
b250cm9scz4gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgp
KTsKKyAgICBhdXRvIG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGZmOTZmNGYyNDM1
YjA5OGUwNjY2MmYzM2NjMjA1ZTAwMGIzNzkxNmQuLjJhNmE5YzYxMjE0NTRmMzI2MTEzNmQxNThl
OGY1OWUwOWJlMTRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cApAQCAtNDczLDkgKzQ3Myw5IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxU
YWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwog
fQogCi1SZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFy
ZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3Jl
YXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKICAgICBhdXRvJiBjc3NW
YWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoY2VsbEJv
cmRlcnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAz
NWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdhMTk4MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4
MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxFbGVtZW50IHsKIAogICAgIENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7
CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsK
KyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAg
IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmgKaW5kZXggNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4u
M2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4NTUwNjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNv
bnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoaHJlZigpKTsKICAgICByZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
aW5kZXggYWNhNTFhNzdmMDMxNTMzOTI2NjJmNDBjM2Q0ZTI1NzliZGRkMDRiMi4uZTJiNDNkZDVl
M2IxNTk5ZmVkZjg0MDQ1YjJmMjgxZjA2ZDAzMTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3
IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1l
bnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24u
aHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVy
RG9jdW1lbnQgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKTsKICAgICBib29sIGluc2lk
ZVRlbXBsYXRlRWxlbWVudCA9ICFvd25lckRvY3VtZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChs
b2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGluc2lkZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIg
OiBmb3JtKCksIHRydWUpOworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlS25vd25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxh
dGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFl
bGVtZW50KSkgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0
b21FbGVtZW50SW50ZXJmYWNlKG93bmVyRG9jdW1lbnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAg
ICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggMDhjNmU1
MGI1ODU0OGRjODc3MTNlMjBjMjA4NDA5NjY0MmExM2ZhNC4uZTExOTJhZmY3MGFlOTdiMDNlMWI3
YzI2YzFjMDU0MWEwMmQyNDZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAg
c3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY29uc3QgUmUKICAgICAgICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0i
LiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5l
ZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAgLy8gc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0
aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBh
c3MgbnVsbHB0cgogICAgICAgICAvLyBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhl
IHJlbmRlciB2aWV3LgotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMp
OworICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5j
b21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdl
dCgpLCBudWxscHRyLCBudWxscHRyLCAxLjAsIGZhbHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+
c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRi
ZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDguLjM1YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAy
ZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAK
QEAgLTUwMiwxNCArNTAyLDE0IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6
OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJW
VFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1
ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0
YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5zZXRTdGFydFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsK
ICAgICBjdWUtPnNldEVuZFRpbWUobV9jdXJyZW50RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250
ZW50KG1fY3VycmVudENvbnRlbnQudG9TdHJpbmcoKSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJl
bnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBt
X2N1ZWxpc3QuYXBwZW5kKGN1ZSk7CisgICAgbV9jdWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkp
OwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXgg
NjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQyOTQyYmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUz
MWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2Rl
Kj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBt
YXJrdXApCiAKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBub2RlLnByZXZpb3VzU2libGlu
ZygpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJh
Z21lbnQqIGluIG1hcmt1cC5oCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21l
bnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9j
dW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJr
dXAsIG5vZGUucGFyZW50RWxlbWVudCgpID8gbm9kZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudCgpKTsKICAgICBlbHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhj
ZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNv
bnN0IFN0cmluZyYgbWFya3VwKQogCiAgICAgaWYgKGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50
Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFs
bCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0
b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCAqZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9yLnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21l
bnQuZ2V0KCksIG5vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZjM4YWEyMDA0
YjI1NzM0ODhiMTYwZDczOWNmZTk2MzNlZmM2ZWM1Li5jMGVjM2Y4YjcyNTg1NTE5NTczYjJiYzRj
ZTBkZWFlZmU3MDJhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAg
ICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0KSkgewogICAgICAg
ICBhdXRvJiBjb250ZXh0MmQgPSBkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1f
Y29udGV4dCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFj
aygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFy
cmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJzZXRUcmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZm
aW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5zZm9ybSkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2Fk
LT5zZXREb3VibGUoc3RyaW5nSW5kZXhGb3JLZXkoImdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJk
Lmdsb2JhbEFscGhhKCkpOwpAQCAtNTMzLDcgKzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRp
YWxTCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0
KSkgewogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNl
ID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0
QXR0cmlidXRlcyA9IGNvbnRleHRXZWJHTEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewot
ICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gd2ViR0xDb250ZXh0QXR0cmlidXRlc1Bh
eWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byB3ZWJHTENv
bnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAg
ICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxwaGEiX3Ms
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmFscGhhKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250ZXh0QXR0
cmlidXRlcy0+ZGVwdGgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxv
YWQtPnNldEJvb2xlYW4oInN0ZW5jaWwiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPnN0ZW5j
aWwpOwpAQCAtNjQzLDggKzY0Myw4IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgYWN0
aW9uLT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0
ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IHRyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1
cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6
ZVRvQ2FwdHVyZSk7Ci0gICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZNb3ZlKHRy
YWNlKSkpOworICAgIGF1dG8gdHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
OjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhG
b3JEYXRhKHRyYWNlLnB0cigpKSk7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCmluZGV4IDhlMWM0ODI5ZGZmNWJlYWMxZDZmYzAzMjA5Y2ViZmQwYzQ1MDU3NzQuLmEw
YzM4ODdhNmVmYzJhMDUxYzNhMzUzMTQ3ZDcxMzZjZjhhYzhhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sICJfYmxhbmsiX3MsIExvY2tIaXN0b3J5OjpObywg
TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgSW5pdGlhdGVkQnlNYWluRnJh
bWU6OlVua25vd24gfTsKIAogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOworICAgIGF1dG8gZnJhbWUgPSBXZWJD
b3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKaW5kZXggM2NkZWM4NTA1MWVkMGMzMTRlN2U0MmM0OWJmYmEwODU1NTUzNzdjNy4uOTQ5OGU3
NjBiZDk2NDJhOTdkNjVlM2U5YzVhMzM0MDM0MjExOTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCog
c3R5bGVTaGVldCkKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBsaXN0ID0gU3RhdGljQ1NTUnVsZUxp
c3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gbGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUo
KTsKICAgICBWZWN0b3I8UmVmUHRyPENTU1J1bGU+PiYgbGlzdFJ1bGVzID0gbGlzdC0+cnVsZXMo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7
IGkgPCBzaXplOyArK2kpCiAgICAgICAgIGxpc3RSdWxlcy5hcHBlbmQoc3R5bGVTaGVldC0+aXRl
bShpKSk7CkBAIC02MzYsNyArNjM2LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KIAogICAg
ICAgICBhdXRvIHN0YXR1cyA9IGl0LT5kaXNhYmxlZCA/IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHlTdGF0dXM6OkRpc2FibGVkIDogSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0aXZlOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAg
ICAgLnNldE5hbWUobmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICAgICAgICAg
LnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpCiAgICAgICAgICAgICAucmVsZWFzZSgpOwpA
QCAtNjk2LDExICs2OTYsMTEgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFt
ZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3Vz
QWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29weVJl
ZigpKTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9w
ZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9Q
cmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5
LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBib29sIGltcGxpY2l0ID0gbV9zdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0
KG5hbWUpOwpAQCAtMTMzMiwxMiArMTMzMiwxMiBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6
OmVuc3VyZVNvdXJjZURhdGEoKQogICAgIGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNUZXh0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVu
dHM+IG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOworICAgIGF1
dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgYXV0
byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFM
aXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0
Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5
bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdl
U3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7
Ci0gICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0eWxl
U2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKKyAgICBD
U1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVldC5w
dHIoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fcGFyc2Vk
U3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7
CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcAppbmRleCBmMmVkNWVmODc2NmQwNDc5YWU0N2QwZDIzMzRkZDk3YTQ5MDMwZTlk
Li5jYWQ2NjY5M2E3ZTc1MzhmMjljYzIxYTk5OWZjMTY3MmM3NTExMzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcApAQCAtNDM4LDggKzQzOCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENy
ZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAKICAgICBj
b250ZXh0LmNhbnZhc0Jhc2UoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAKLSAgICBSZWZQdHI8SW5z
cGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShj
b250ZXh0KTsKLSAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9y
Q2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcyk7CisgICAgYXV0byBpbnNwZWN0
b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBtX2lkZW50
aWZpZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCks
IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCkpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleAog
ICAgIGlmIChtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCkgewogICAgICAgICBSZWNv
cmRpbmdPcHRpb25zIHJlY29yZGluZ09wdGlvbnM7CiAgICAgICAgIHJlY29yZGluZ09wdGlvbnMu
ZnJhbWVDb3VudCA9IG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50LnZhbHVlKCk7Ci0g
ICAgICAgIHN0YXJ0UmVjb3JkaW5nKCppbnNwZWN0b3JDYW52YXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhdG9yOjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdP
cHRpb25zKSk7CisgICAgICAgIHN0YXJ0UmVjb3JkaW5nKGluc3BlY3RvckNhbnZhcy5nZXQoKSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBX
VEZNb3ZlKHJlY29yZGluZ09wdGlvbnMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKaW5kZXggYWUzYWNhZmQwOTBiMGFjMTVjN2VmZDZmZWI4OTU5NDY0OGQ4OTk1MC4uZGVhNWM5
YTMxZDRjOTI4YmIzNGUxOGNiZGQ0NTQ5NGFlYjFhYmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZy
b21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAg
IHJldHVybiBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51bGwpLnJl
bGVhc2UoKTsKIAogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQ
YXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOwor
ICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6
OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRTdHJpbmcoc3Ry
aW5nKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZlY3RvcikgewogICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJp
bmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3IpCiAgICAg
ICAgICAgICBhcnJheS0+YWRkSXRlbShzdHJpbmcpOwotICAgICAgICBSZWZQdHI8S2V5UGF0aD4g
a2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkp
LnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0
VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSkucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5z
ZXRBcnJheShXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCmluZGV4IGVlNDRlYWNhYmRlNWFhMTA3MzI0NTU5NDgyNWNhNzZkZDIzMTE3
ZDUuLmMwZWMzZWY2OGJiZTdjMTI5ZDk2YTAyMWVkYzQ4YjU2MjQxMWQ3MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpICYmIFVTRShDRikKICAgICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAg
ICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShmcmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGZyYW1lKTsKICAgICBpZiAoIWFyY2hpdmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291
bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2ZSBmb3IgbWFpbiBmcmFtZSJfczsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZjY1YWViYzlk
ZjZhNjViZDJmZjQ4N2RmYTM2N2I3YzNlZGZiOTYyLi41NjBjM2E1MDYwY2FlNjJlMDBjNjI4NGUy
NTk3Mzc4MjEwMzllY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApA
QCAtMzgzLDE0ICszODMsMTQgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIg
ZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICB9OwogCiAgICAg
c3RydWN0IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNw
YWNlIHsKLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZUFyZWEpOyB9Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBm
aW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Cisg
ICAgICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCi0gICAgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5z
aWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7
CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5z
aWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CiB9
OwogCiBjbGFzcyBFbXB0eVVzZXJDb250ZW50UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNv
bnRlbnRQcm92aWRlciB7CkBAIC01MTMsMjIgKzUxMywyMiBAQCB2b2lkIEVtcHR5RWRpdG9yQ2xp
ZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKIHsKIH0KIAotUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3Jh
Z2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1w
dHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKaW5kZXggNTUzNTQ3OTExNDdlNTg4YTA5NGViNmNiYWMxYjQyN2ExN2Vm
ZGRhZS4uYTg3M2IxZDBlYWM3MjhkOGZlZjZkMGIyNTgwZTJmODU0ZTczNGFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHJlZgogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAg
ICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVm
ZXJyZXIocmVmZXJyZXIpOwotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZmVycmVy
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOworICAg
ICAgICBhdXRvIHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcocmVmZXJyZXIpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgcmVm
ZXJyZXJPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIH0KICAgICBpZiAoJm1fZnJhbWUudHJlZSgp
LnRvcCgpICE9ICZtX2ZyYW1lKQpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250
ZW50LCBjb24KIAogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFhGcmFtZU9w
dGlvbnNTYW1lT3JpZ2luOiB7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOworICAgICAgICBhdXRvIG9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNj
aGVtZUhvc3RQb3J0KHRvcEZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFt
ZS50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkp
IHsKQEAgLTM2MzksNyArMzYzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBC
b2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5
cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVt
LnJlZmVycmVyKCkpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKICAgICAgICAgYWRkSFRUUE9y
aWdpbklmTmVlZGVkKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKICAgICAg
ICAgYWRkSFRUUFVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzSWZOZWVkZWQocmVxdWVzdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCBlMWQ2MGViOTBlN2I3MzQ5N2MxYWFkYzFiMzRlZDdjMzVjNDZhZTZlLi40YmFkMTgzZTA4NTQ4
YzQ3ZGRkOTgyMjllZTllNjJiNGViNDliNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyCiAgICAgU3RyaW5nIG1vZGUgPSBsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5TW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVu
aXF1ZUlkKCkpKTsKIAotICAgIFJlZlB0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIg
PSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVu
dCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAgIGF1dG8g
bG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKICAg
ICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNl
aXZlZDsKICAgICB3aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVl
dWVUZXJtaW5hdGVkKQogICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2Vy
R2xvYmFsU2NvcGUsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IDVmZDM5YmU3YmQxNDBiZWU0MmI5MWEyOGFm
ODZkZjc0YTdlNzRkNzIuLmMzYjVlM2UxZjIyOTM0MTA2NjYyNjA5YjRhMDEwMzljMjBlOTExMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKQEAgLTEzMSwxNiArMTMxLDE2IEBAIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291
cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSoKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1YmZyYW1l
ID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1YmZyYW1lID0gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoKTsKICAgICBzdWJmcmFtZS0+c2V0TWFpblJlc291cmNlKCpyZXNvdXJjZSk7
Ci0gICAgbV9mcmFtZXMuYXBwZW5kKHN1YmZyYW1lKTsKKyAgICBtX2ZyYW1lcy5hcHBlbmQoV1RG
TW92ZShzdWJmcmFtZSkpOwogfQogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLCBjb25zdCBTdHJp
bmcmIGVuZE9mUGFydEJvdW5kYXJ5LCBjb25zdCBTdHJpbmcmIGVuZE9mRG9jdW1lbnRCb3VuZGFy
eSwgYm9vbCYgZW5kT2ZBcmNoaXZlUmVhY2hlZCkKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91
bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBjb25zdCBi
b29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJv
b2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRU
cmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0yMTEsNyArMjEx
LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQo
Y29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBl
ZTk3YjJiZDRmZDA3MjJiNWJhM2JkNWZhZWUxYmM2ZGZjMTY2NjIwLi5mODYzMTM1MmMyMjBkZDFm
YjU0NTgxMjU3YmU1Njg1OThmM2Y2ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIxNiwxMSArMjE2LDggQEAgYm9vbCBNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0
cy4KIAotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBpZiAoIWJpdG1hcEltYWdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lvbklELCBk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkSW1h
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigp
LCBzZXNzaW9uSUQsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdl
LT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+
c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTQxLDcgKzUz
OCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbikKICAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFw
cGVuZCgmcmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOworICAgICAgICAgICAgYXV0byBy
ZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOwog
ICAgICAgICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKICAgICAgICAg
ICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMjc3Mjk1MDQ1NGIzMGI4NTIyODRkNmNl
YjUxNTYyMjdiNmE5N2RlMi4uNjg5OTRhY2NiZGJkYmRiNTRjYWI1MWJiNDMzYzhmZjY0ZDRiYTMx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgUmVm
UHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9IGZyYW1l
LT5zZXR0aW5ncygpLmNyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVk
KCk7CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3RhdGljQ1NT
UnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKSB7CiAgICAg
ICAgIGlmICghYWxsb3dDcm9zc09yaWdpbiAmJiAhcnVsZS0+aGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbigpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3Ig
dGhlIGxvb2t1cEZyYW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJv
bQogICAgIC8vIHRoZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJh
bWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAg
UmVmUHRyPEZyYW1lPiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJh
bWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJl
cywgY3JlYXRlZCk7CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygq
YWN0aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5k
b3dGZWF0dXJlcywgY3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJu
IFJlZlB0cjxGcmFtZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCA2ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJh
ODkxZmUxNzMzMzk2YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFIKIAogc3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25z
dCBQb3NpdGlvbiYgZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0
dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1
dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwg
c3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2Uu
cHRyKCksIHRydWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFl
MjNhYzA5Li4zYTQ2OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNl
clN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBp
dCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdo
ZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwg
YW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcAppbmRleCBiNDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4
ZTUyMjFhZmUxYjJiNzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0x
OTEsMTEgKzE5MSwxMSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0
ZXJPcGVyYXRpb25zKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxl
bmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9w
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAg
ICAgICAgYXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJl
c3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZN
b3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1
bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3Ag
OiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3
MzgxNjY1ZDNkNTQ2NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIw
MjYxZmE2NGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgx
LDE0IEBAIHZvaWQgRnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgc3R5bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhl
c2l6ZWREb2N1bWVudCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQg
PSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAg
ICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50
KHRoaXMsIHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50
Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3Jl
YXRlRE9NV2luZG93KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3Vt
ZW50KGRvY3VtZW50LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0
bWxFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRN
TEh0bWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0g
SFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1M
Qm9keUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0Vt
cHR5KCkpCiAgICAgICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwg
c3R5bGUpOwogCkBAIC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0
YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6
IGRvY3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0
LCBhZGQgdGV4dCB0aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVj
ZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9k
ZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcHJlY2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2Vk
aW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5n
VGV4dCA9IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGF1dG8gcHJlY2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwg
cHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJl
Y2VkaW5nVGV4dCA9IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAg
ICAgICAgICAgIGlmICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAg
ICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JN
YXJrZXIuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpj
cmVhdGUoKmRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFy
a2VyLT5lbmRPZmZzZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFy
a2VyID0gcGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVf
dCBpbnRlcnByZXRhdGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0
aXZlcygpLnNpemUoKSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
dGVycHJldGF0aW9uc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUg
dGV4dCBmb3IgdGhlIGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZp
c2libGUgdGV4dCwgb3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZy
YW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAg
Ly8gRmluYWxseSwgYWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQ
dHI8UmFuZ2U+IGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQo
KSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihyb290LCByb290Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2Vy
ID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVy
TGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hp
bGRDb3VudCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFm
dGVyTGFzdE1hcmtlclJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnBy
ZXRhdGlvbnMpCiAgICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxh
c3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNP
dmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIx
YjE1ZjBkMC4uYzk2YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
Lm1tCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpI
aWdobGlnaHQ6OmZhZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9u
OmZhbHNlXTsKICAgICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xh
eWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZh
ZGVIaWdobGlnaHRJbiIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5
ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1h
dGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpmYWRlT3V0KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlk
RmluaXNoRmFkZU91dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29h
OjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+
KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdo
bGlnaHRPdXQiLCAqcGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRp
b24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwor
ICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCkt
PmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9u
LmdldCgpKTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAw
ODlkMzc4NTliNzEzZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNp
emVfdCBwb3NpdGlvbikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6
OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKCkpLCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVu
YWJsZSB0byBjcmVhdGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBz
aXplKCksIHNpemVvZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUz
YzFhZmY0NWY2NmQ1ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMw
YzViMDQ4OWRiM2I4OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlv
bjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBl
bGV2YXRpCiAgICAgLy8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFy
dEZyYW1lID0gaW5kZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJh
bWUgPSBzdGFydEZyYW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVz
PiBwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVy
RnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJl
U2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7Cisg
ICAgYXV0byBwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRl
QnVmZmVyRnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJl
c3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxl
UmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVk
aW9DaGFubmVsKiBsZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVk
aW9CdXM6OkNoYW5uZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJl
c3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApp
bmRleCBlNzlkNmMxOGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5
ZDZiNjUwMjY0MzU0NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
U2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1i
ZXJPZlNvdXJjZUZyYW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhl
IHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJv
dmlkZXIuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51
bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3Jl
YXRlKDEsIG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmlu
ZCBhIHdheSB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNl
dENoYW5uZWxNZW1vcnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVh
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3
ODRjZDI3MTgwOTA3NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5
YTViNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIs
NyArMzUyLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhm
bG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVk
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9C
dXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOwor
ICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5l
bFNpemUsIHRydWUpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7
CiAKICAgICBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVm
ZmVycy5nZXQoKSwgYXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAy
YWY1MThiOTYyNDgyNWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgy
ZjMzYmU5YzJkZjIzMDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4
MCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQg
c2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9
IG1peFRvTW9ubyA/IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlv
QnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9C
dXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9m
RnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVs
Q291bnQsIG51bWJlck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBz
YXZlIGZvciBsYXRlcgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBj
YXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3
MWM2MDRjMDk1MTE1ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQy
NjM0ZmQ2YzI1NGZjYjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4g
ewogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAK
ICNpZiBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04g
aEljb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMg
UmVmPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29u
KGhJY29uKSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1By
aXZhdGUuaAppbmRleCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4x
M2YxODc4OTNiNDQwZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJs
aWMgVHJhY2tQcml2YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAog
ICAgIH07Ci0gICAgc3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUo
Q3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1By
aXZhdGUoZm9ybWF0KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRl
eHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCog
Y2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IGI4Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmE5MzU1
MDAzODlhYmRiM2QxNGU3NmVkODdkMzNkYTQ3M2E2ZjYxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApA
QCAtMTg5MSw4ICsxODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8g
Q3JlYXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8v
IFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAg
ICAgICB1bnNpZ25lZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFy
KTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRh
Vmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVy
LmNvcHlSZWYoKSwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1
dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAx
KTsKKyAgICAgICAgYXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUp
OwogCiAgICAgICAgIGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXRE
YXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsNyArMTkw
OCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
Q0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQ
dHI8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBhdXRvIHJl
c291cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIs
IGF2UmVxdWVzdCk7CiAgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1
ZXN0LCByZXNvdXJjZUxvYWRlcik7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygp
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRh
M2JmNWNlMTQwODA0NTUwZDlhZWVjMzhhMzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFi
ZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5
IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVB
VkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJs
ZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMDU3ODVjYWUzNjE2
ZGZmYmU5OTM5ZTAzZGE1MTkzYzY5MTQ5NTRmLi4zMTA3ODBjM2FjYWJkODE1NTVjM2QwMTllM2I0
OGM2Y2Y3NzdhOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3
IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgKnJlcXVlc3QsIEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHJlcXVlc3RlZEtleURhdGEgPSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0
YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihlbmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlE
YXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0
PGludD4oZW5kKSk7CiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxl
bmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5ieXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1
ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0RhdGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgx
Nyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVm
UHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VM
b2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRl
cik7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9f
YnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAg
ICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5o
CmluZGV4IDBjMDRhZjkwNDMwMjkxZjEyYTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5
ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUo
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRl
Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3BsYXllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMx
NjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2RmZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCkBAIC00NCwxMCArNDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBt
YXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVh
dGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJp
dmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xp
ZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQcml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRl
KTsKKyAgICBhdXRvIG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0
ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlh
U291cmNlUHJpdmF0ZTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6
OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29u
c3QgQwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5z
ZXRDRE1JbnN0YW5jZShtX2NkbUluc3RhbmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZh
dGUgPSBuZXdTb3VyY2VCdWZmZXI7CisgICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5j
b3B5UmVmKCk7CiAgICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1
ZmZlcikpOwogCiAgICAgcmV0dXJuIE9rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggODMwMGRjM2I2ZTM5ZThjYWIxNDVh
ZWJhMjE3NmU5ODExZGZjOTg3MS4uZjE3NjI2MjM0YjliNWEwYWRlOGMyNzU0N2E0NDY1N2E0ODJh
Y2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDRXJyb3JDbGllbnQgewogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBm
aW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQyopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+
IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsg
bV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYTk5ZmViN2Y2NTNjOTkxMTZk
MGYzMzllYzM3NzVmYzIwY2VmMGJlZC4uMWM1NjYzNjYwZDlhZWRjYzg5ZTZiNTIzM2I4ZmM0YWIz
ZDZlZDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTQzMCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURl
c2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25B
VkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlh
RGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmly
dHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBj
b2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQs
OSBAQCBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9u
Q2VudGVyUmVmLCBjb25zdCB2b2lkKiwgQ0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZl
cldhc0NvbnN1bWVkKCk7CiB9CiAKLVJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4g
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDKiBwYXJlbnQpCitSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMo
cGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMocGFyZW50KSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBA
IC01NTEsMTYgKzU1MSwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJh
Y2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7
CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNl
Z21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAg
ICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3Mu
YXBwZW5kKHZpZGVvVHJhY2spOworICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAg
ICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBt
X3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGlu
Zm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsK
ICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9
IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0F1ZGlibGVdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJ
bml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAg
ICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1Ry
YWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywg
dGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAg
IG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRp
b1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFj
aywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7
CisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsK
ICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6
Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGlu
Zm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUy
YmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0
MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAg
Y2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA4MGNmYzRmYWMzNDVjOTJlY2Q2MTczN2Zj
OTI1NGRjZDhiNzU1YmY4Li45MWRiNjU0MWM0YjEyM2FlYjM0NmVhMzkyYWUwNDM4NDBkMjQzOWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpy
aWdodE1hcmdpbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFy
Z2luRWRnZXMucmlnaHQoKSkgLyB0aWxlR3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVj
dCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNv
bnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdy
aWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVD
YWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNp
emUoKSk7CisgICAgYXV0byBsYXllciA9IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGli
bGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNr
aW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVS
ZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgKaW5kZXggYWUxOWI4YzUxNzFmZDU3NDFhNTUxNWY3NmE2
OTg4NjY2MmZhZjA3Yy4uZGI5ZDQ1MzEwN2JkNDkwMDUxNjUyMGQ1YTA2NzUyMGFjMjY2YTRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5oCkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwg
OiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFw
KCk7CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3Qg
SW50UmVjdCYsIFRpbGVHcmlkJik7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGls
ZUxheWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQm
IHRpbGVHcmlkKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkxYWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQz
ZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMzYzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9z
dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFp
bGFibGU7CiAgICAgfQogCi0gICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FD
RkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVI
b3N0OjpjcmVhdGUoKTsKIAogICAgIGlmICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBm
YWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZM
YXllclRyZWVIb3N0OjpjcmVhdGUoKQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxh
eWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlm
ICghaG9zdCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJl
ZSBob3N0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRi
ODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNjMjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUz
NGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0
cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBH
UFVCdWZmZXJEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFn
ZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAg
R2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7
CiAgICAgYXJyYXlCdWZmZXItPnJlZigpOwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNv
bnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVy
Q29udGVudHMgPSBhcnJheUJ1ZmZlci5wdHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlz
IE1UTFJlc291cmNlT3B0aW9ucy4KICAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZl
ciA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldp
dGhCeXRlc05vQ29weTphcnJheUJ1ZmZlci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDk0NzY4ZGMxYTkyYTJmNjRiZjJjZTIx
MjY4ODE0YWEyOWEwOWY2Y2YuLmRlNzhkYjYwN2ZhMTFmN2E1OGRlZmY0YTk4MjQyM2JiOGJhOGRk
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC03MzQsOSArNzM0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZVRyYWNrcygpCiAgICAgICAgICAgICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAg
ICAgICB9IGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFT
b3VyY2UpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAg
ICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxh
eWVyLT5hZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3Ry
ZWFtKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlS
ZWYoKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsK
ICNlbmRpZgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3du
IHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtODk0LDEwICs4OTQsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAg
ICAgICBhdXRvIHRyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtl
V2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFj
ay0+aWQoKSk7Ci0gICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0g
ICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9U
cmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+
YWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlk
ZW9UcmFja3ModmFsaWRWaWRlb1N0cmVhbXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFr
UHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAg
ICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tz
LmFkZChzdHJlYW1JZCwgdHJhY2spOwogICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygq
dHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAg
bV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRk
VGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFk
ZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRU
cmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2
YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAg
Y2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1
Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVn
aW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sg
PSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRl
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBs
YXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNh
bGxiYWNrKSB7CisgICAgICAgICAgICAgICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBN
ZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXll
clJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxi
YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEdTVF9JTkZPKCJnb3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBj
YWxsYmFjayBpbiBkZXN0cm95ZWQgcGxheWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSog
bWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3Rh
dGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5n
ZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1
Z2luQ2FsbGJhY2spOworICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5h
cHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2lu
c3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9u
KG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmlu
Zzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsK
KyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgo
ZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVB
TUVSX01QRUdUUykKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9u
CiAgICAgICAgICAgICBjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3Ry
ZWFtcywgaSkpOwogICAgICAgICAgICAgaWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8
fCBzdHJlYW0tPnN0cmVhbV90eXBlID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNT
dHJpbmcgcGlkID0gU3RyaW5nOjpudW1iZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAg
IFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0g
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAg
ICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAg
ICAgICAgICAgIC8vIDQuNy4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAg
LTIxMzMsNyArMjEzMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2Fk
TmV4dExvY2F0aW9uKCkKICAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2Nh
dGlvbik7CiAgICAgICAgIGNvbnZlcnRUb0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtX3VybCk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5S
ZXF1ZXN0KG5ld1VybCkpIHsKICAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgp
LCAiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNw
cAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEz
NDJmMGE1NTE5Nzk5OGZlNzE4MWI5YzhhNTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2Vs
ZXJhdGVkKQogICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9u
LnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAg
ICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0
ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKKyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFt
ZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMDI2
YTIwNTczZWMzMmFkYjJhM2JjOGE2ODYwMjNlYTgwYWQ4MzEwOC4uZDA5MjkyMGMyNmJkNjBlOTgz
YmZhMTQzNjZkNTYzOWVmZmZjZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2Ft
cGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3Jl
OjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50
YXRpb25TaXplLCB0cmFja0lkKCkpOworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpN
ZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRp
b25TaXplLCB0cmFja0lkKCkpOwogCiAgICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMg
UFRTPSVzIERUUz0lcyBEVVI9JXMgcHJlc2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAg
ICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYs
NyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRy
PEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNl
dChNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJp
dmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgqbWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQg
QXBwZW5kUGlwZWxpbmU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3
Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5
MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0g
ICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9
IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5yZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29s
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9r
ZXlJRHNba2V5SURdOwogICAgICAgICAgICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAg
ICAgICAgICBhdXRvIHBhcnNlZEtleUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCAr
IDE2KTsKLSAgICAgICAgICAgIGlmICghcGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgb2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5
KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBhcnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAg
fQpAQCAtNzYsOSArNzEsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZm
ZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYXV0byBwYXJzZWREYXRhID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCAr
IGRhdGFTaXplKTsKLSAgICBpZiAoIXBhcnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIG9mZnNldCArPSBkYXRhU2l6ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Ry
YWNrRW5jcnlwdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5
NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAy
MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
VHJhY2tFbmNyeXB0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29s
IElTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBi
dWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVm
YXVsdEtJRC5yZXNpemUoMTYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmlu
ZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdmYzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0Mzlj
MjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFu
aW1hdGlvbi5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBh
cHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAog
ICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5h
cHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRl
bnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9P
cCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBp
ZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChm
cm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAK
aW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFk
OWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNkZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9
IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6
Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1
cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50
ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nh
c3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1f
dGV4dHVyZUlEKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdl
dCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUo
dGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbnMuY3BwCmluZGV4IGY5NDRmMDdhNThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYu
LmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhj
b25zdCBUcmFuc2ZvCiAgICAgICAgIGlmIChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVy
YXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAg
IHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBp
ZGVudGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5h
cHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRp
b24pKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0
aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3Bl
cmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NjBkYTM4
NjM4ZWY1MmE5MGVkMWZkODliNTJkZWU5NjU0MzAxNTNjLi4wNmMwYTE5ZjMwZDM5ZDE5MTlkMmI0
Y2ZkNDFkNDQ3ZWMwNTQyMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0
LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJh
dGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2
ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAg
ICAvLyBvcHRpb25hbCBvZmZzZXQuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNl
dF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5n
RGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsK
KyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClb
ZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFn
ZU9mZnNldCk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQo
KSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNv
ZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0Jv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkx
MmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJkNDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEg
Kzk3LDExIEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQogICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChv
ZmZzZXQgPCBtX2xlbmd0aCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZl
ciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShz
dWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1
YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVr
VHlwZShzdWJCdWZmZXIucHRyKCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQo
KSk7CisgICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAg
ICAgICBvZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVu
ZCh0cmFja0JveCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAppbmRleCAyYThiMjRiZDJmOTIxZTFjMWYzNTAwMjIyNzdhODMzODdlYzM3YWZlLi40MjU4ODk3
YmU2YmUzOTExZTYwYmVkYWMxMDFmMzNlMDk5YmNkMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4g
TW9ja01lZGlhU2FtcGxlOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNz
IE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShj
b25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURl
c2NyaXB0aW9uKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4g
Y3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1v
Y2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3Jp
cHRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3Mg
TW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAg
ICAgTW9ja1RyYWNrQm94IG1fYm94OwogfTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlPiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZh
dGUqIHBhcmVudCkKK1JlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsK
IH0KIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBk
YXRhKQogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQg
PSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGls
ZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtM
ZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAg
ICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7
CiAgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVm
ZmVyLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5
cGUoKSkgewotICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2Nr
SW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFs
aXphdGlvbkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7
CiAgICAgICAgICAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwog
ICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAg
ICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJv
eChidWZmZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmgKaW5kZXggYjNmOGFmNDJhMmY0MmFlYjllZGVjZTZhYjMzYjVlODdhNTI3MjUyOS4uMTU3NjAw
NTNjYmYwZjA1Mjk0MzM4YzQ3ZjI2MTE1MjNiYTk4MjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNl
QnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMg
UmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0
ZSopOwogICAgIHZpcnR1YWwgfk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lk
IGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5o
CmluZGV4IGI0NmNhNmI2MDExYjAyMjkwZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIy
OTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRjNjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJp
dmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRU
cmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1By
aXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4
dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+
TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0
cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3Mg
TW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAK
IGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0
ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVv
VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKaW5kZXggZDdjMWU1ZmFhMGRlNTA3ODNiZmI0NzcyNGJmNTk5MTlhYjY2Zjkx
ZC4uYzQ5ZjQyMTc4MTIwYTRjM2QyYjRkMzAyNjg0YjJkODNhZjFmNDZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZv
aWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVh
dGUoKTsKKyAgICBhdXRvIGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0zMTksNyArMzE5LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAg
IHJldHVybiBXVEZNb3ZlKGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRleCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRm
ZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUwZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q29va2llU3RvcmFnZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9ic2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICop
OworICAgIHN0YXRpYyBSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29v
a2llU3RvcmFnZSAqKTsKICAgICBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3Rv
cmFnZSAqKTsKICAgICB+Q29va2llU3RvcmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdl
T2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcxYzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlk
MC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVT
dG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNl
cnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29v
a2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBD
b29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9y
YWdlICpjb29raWVTdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3Mzdi
ZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEwMTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0
OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgc3RhdGljIHVpbnQ2NF90IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VC
b2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRp
b25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0
ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2go
KS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAg
aWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9i
SXRlbS5maWxlKCktPnBhdGgoKSkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSkgY29uc3QKICAgICAgICAgICAgICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAg
ICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1
ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXpl
KCkpOwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRG
aWxlRGF0YSYgZmlsZURhdGEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmls
ZURhdGEuZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5
cGhlbi5jcHAKaW5kZXggYzkwODY5MzAxNjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4u
MmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcApAQCAtMTY5LDE0ICsxNjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9u
YXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2
aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMg
UmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJl
ZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcm
IGRpY3RQYXRoKQorICAgIHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUo
Y29uc3QgQ1N0cmluZyYgZGljdFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAg
ICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5EaWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2
NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2Vh
ODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBTZWFyY2hQb3B1cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1
cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVu
dVdpbihjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4o
Y2xpZW50KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1l
bnUoKQogewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0
cigpOwogfQogCiBib29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBi
OGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEzY2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2
MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1
cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5h
YmxlZCgpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7Cisg
ICAgUmVmPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1Yjcy
YzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIs
NyArNTYyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMo
UmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29t
bW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQo
KTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwg
ZG9jdW1lbnQucmVuZGVyVmlldygpLCBkb2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3Rvcigp
KSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhl
bHMpKTsKIH0KQEAgLTkxNywxMiArOTE3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAg
ICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9h
dCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsK
LSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAg
ICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4
ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwg
MHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29s
b3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFk
aWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0
cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAg
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91
bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1
cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0
IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJl
bmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0
byB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7
IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFk
aWVudEhlaWdodCAtIDEuNSkgfSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAu
MCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxH
cmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0
RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxs
UmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qu
d2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBi
YXIuCiAgICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9z
aXRpb24oKSwgMC4wLCAxLjApOwogICAgICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAq
IHJlY3Qud2lkdGgoKTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7Cisg
ICAgICAgIGF1dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5l
YXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBw
cm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcsIDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDAuNDUsIENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAy
NDQpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFy
R3JhZGllbnQpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAg
ICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHBy
b2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjUsIENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAg
ICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAx
NjYpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChX
VEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAg
ICAgICBpbnQgbGVmdCA9IHJlY3QueCgpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJl
bmRlclN0eWxlJiBzdHkKICAgICAvLyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aElu
dCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMu
CiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1
c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRo
ZSByZW5kZXIgdmlldy4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVM
ZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVs
bHB0ciwgMS4wLCBmYWxzZSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAs
IHBpeGVscywgMCwgcGl4ZWxzKSk7CiAKQEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0
YWNobWVudEluZm8mCiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29u
IENHSW1hZ2VdKTsKLSAgICBpZiAoIWljb25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBp
Y29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKGljb25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZh
MTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2
YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdS
ZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXImCiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxh
Y2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAg
RmxvYXRSZWN0IGR1bW15UmVjdDsKLSAgICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0
ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1t
eVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0
ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1teUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZp
bHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1
bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZp
bHRlci5idWlsZFByaW1pdGl2ZXMoZHVtbXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBU
ZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlm
IChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRm
NmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93
JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdl
PiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBz
dG9yYWdlQXJlYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywg
V1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cm
IHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3Rv
cmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQog
ICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RG
TW92ZShzdG9yYWdlQXJlYSkpCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVCht
X3N0b3JhZ2VBcmVhKTsKIAogICAgIG1fc3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3
ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1Zjdk
YzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNz
IFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRy
PFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5k
b3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYpOwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBE
T01XaQogICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNv
bnN0OwogCi0gICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdl
QXJlYTsgfQorICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
QXJlYS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRy
PFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBTdG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJl
YT4mJik7CiAKLSAgICBjb25zdCBSZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7Cisg
ICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApp
bmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4
YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3Jh
Z2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkg
PSBkZWZhdWx0OwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNk
OTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmLi41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVh
ZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBh
Z2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgLy8gVGhpcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZl
ZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBhZ2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBi
ZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1
ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZmLi5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5
NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZp
cnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwg
dW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8
U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFn
ZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQ
YWdlJik7CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiB7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMDI1Yjk2YmJjYjQ0NDg2MTFjNzM0NWIwY2Rm
YzdhMTBkOTZjZTUwNi4uODVmNmZmMTJmMzg1NWU3MmYzNTE1Y2YzMjdiNTM5YjVmM2QwMjNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRy
PERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJgogICAgIGlmICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1l
KGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwg
YXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcAppbmRleCA4YzY2ZDJjMjIxNjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi5j
MjQxZTMwZTM5ZTY1MDhhMjliNzU0Yzg3ODZhOWQ4ZjgwZTNhYzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVCbGVuZDo6
Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0
ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMg
PSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNp
dHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5kZXggNTE1ZDMyZmZiY2Q3ZTUz
YTdiYjRmNThmZGFiODI1YmY2MWM5N2I3OS4uNzUxM2FjZTUxNzkwZjg2ZDhlOWNmOGUwYzgxNjQ2
MjkwNzIzMzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZp
bHRlclZhbHVlcyk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmls
dGVyLCBmaWx0ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3
ZmFmM2I0NjMwMDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjUyYmU5NzEyYmM1ZjYxYWI0
N2UyMjY4MDAwZjJiMTk2ODBmNjY5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksNyArODksNyBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1
bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVD
b21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKaW5kZXggYTEwZTNhNzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uZDM4NTU3
NDc3YzE2ODliMjE4YWJkYzlmMGE5MTYzZjE0OTVjYmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09w
ZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVj
dHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggYjliMDIzYWMwMDZjMDdlY2NkZDA3Nzc0OWQyNzI1OTIzZDJiZmQwNC4uMDY3ZjEy
Y2I3MDM5ODJjN2VkMTQyODRmMDRjNjBkMzdjN2UxZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4OSw3ICsxODks
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJl
ci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5z
dmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5p
dExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVE
aWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlm
ZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCks
IFdURk1vdmUobGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVu
ZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdj
ZjBiMGJkOTZhZDc3MWRiNWZmYWZkNDRmNTMuLjE0Zjc3ZjlmNmY4ODEzMTk2NGJiNDJlYTI5NWQ5
MTM3ZTY5Y2RkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXIKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFw
OjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwg
c2NhbGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZp
bHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOwog
ICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZm
ZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcAppbmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhj
NTliLi5kNTRlNWYyYjY4NWU5OTM1NzlhZjk1MTkzNzc2NWZhMzRlYTNiMWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURy
b3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgp
LCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BT
aGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBk
eCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA5MzMxODdlNmQwNDlhNGZl
ZjdkNzE0ZTZhMzk1NjUxMTQxYTRjYTAwLi4zMjBmOTIxZmUwYWZiZWUyODJmNGRmNzg3NzNkZWJj
Yzc4ODEyYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpCiAg
ICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBG
RUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRp
b25ZKCksIGVkZ2VNb2RlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNy
ZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgp
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVy
biBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRl
eCA1MDJhOTkxOTNjODliMGY3ZTkxYjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5mYjkyYTM1ZThkNDQw
Mzc4YzIwYzBjNjI1ODVjN2I1ZWE5ODRkMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBT
VkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQK
IAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8g
ZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9y
JiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8m
IG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5k
ZXggZmNiYzYzYjYyZTZlMTA2ZWJiNWQ1NjIwOWUzZjUyOTlkOGIwYjZmYy4uZTNlODFhZmUxYWY3
ZjEyNmU0ZDliMDdlODAzOWMyZThhYjhkODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkCiAgICAgaWYgKHhSYWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
TW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1
cyk7CisgICAgYXV0byBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09w
ZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5ODRmNDFhNWJhMmZhNjIzNTE2YmJm
NzA0MWFhZGJkMDIyMi4uYzQwMmU0MDNlYjJiOTQ0Mzk4OGM4YjBlYTk0OWIzN2ZkMDI0ZWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlmICghaW5wdXQxKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFT2Zm
c2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFT2Zm
c2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggM2Ey
ZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2ZlNy4uOWU0ZDdmZDQyN2ZjYjFkMGMx
YmJjZWE0MzQ1ZDVlYmU5NWRjZTUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5
bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHls
ZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qg
PSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUo
KSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBh
dXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1
cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2Vy
bmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJj
ZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0
dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRl
eCAzZjM4NzlkN2U2NmE4YzFkZGY5OTIzMjYzYjdmZTAwNjI1NDg5MjQ0Li5hZTBkMTkxOTgwNTdi
OGYyNDIyZjFiYmZjNTE4MGY1M2QwZWE1NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
VGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFjMTVhZWEwYmE2
NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0NzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxHQ09ic2VydmF0
aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAK
aW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4uOTkwMTdhYmVi
NTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nv
cjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nCiAg
ICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5zZXRFbmNv
ZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNv
ZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVhN
TEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2RlcikpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUwYTAyY2ViZjkw
ZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBYTUxE
b2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmss
IERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUmVmUHRy
PFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZy
YWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byBw
YXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVu
dCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0gcGFyc2VyLT5h
cHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwgZmluaXNoKCku
IFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2ggdGhlIG1haW4g
ZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50
IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0
byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5ODNjYzBiZWE1
ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyArNDksNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlvbiogY3VycmVu
dENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9u
OjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZiZjVmMjhkMDdl
ZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVhMmQ2MmNhMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7
CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3Jl
YXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBmYTMzY2E1NmY5
YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFlZWM0NzcyNjll
M2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQg
PFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRNZXNzYWdlV2l0
aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJvZHkKIHsKLSAg
ICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6
Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxmLl9jb25uZWN0
aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBh
dXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3Nh
Z2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3
a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0aW9uJilfY29u
bmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3Zi4uMTJiZjUz
OTVmZmI3N2M3YWJkZGFmMjkwY2RjZmNhOTZhZjkxNDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzExMzQsNyBAQCAt
ICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJh
dGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
Z0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0cjsKICAgICAg
ICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNuYXBzaG90V2lk
dGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0KCksIG5pbCk7
CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90
YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV2Vi
Q29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFjZTo6YWxsb3dD
b252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21wcmVzc2VkRm9y
bWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZpZXdTbmFwc2hv
dCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAgIGF1dG8g
dmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRyKTsKICAg
ICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNl
KSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAg
ICAgICAgICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBz
aG90LT5zZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwpAQCAtNTkwMiw3ICs1
OTAyLDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5h
dGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICghYml0bWFw
KSB7CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5
NWIyNWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBXZWJLaXRH
ZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwg
ZG91YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlv
biB7IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwg
YWNjdXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKICAgICBj
b3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgUmVm
UHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1h
bmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOworICAgIGF1
dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3Jl
UG9zaXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQ
b3NpdGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92
aWRlcjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMzLi5iY2U4
MDU4ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTQ1
NSw4ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmlj
YXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVybl9pZl9m
YWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmlj
YXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7
Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgo
aG9zdCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZv
OjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2Fz
dDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNz
UG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRl
SW5mby5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9u
U2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fp
cm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZkY2EwMDU2
Y2M2Y2RkZjI3Y2Y2ZDcyZDExNjFkMS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcxNjU4YzUw
ZjZiODQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
YWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBA
IC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBO
R0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDY3
ZjEyMjJhNzQ2YzY3MmM2ODdkMmFmYmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5ZTFlODI4
MDRlMTg5MWZkNTQ5OTIwZjhkN2I2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNz
aW9uQ29jb2EubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VE
YXRhSGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwog
ICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUwNmI2Mjc2
NTEwYjczNDg1ZmNkNDY2MmVmNDgxLi41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNlNGFlNTEz
MmZiOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVw
ZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRhdGVJbmZv
LnZpZXdTaXplKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRs
ZSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0ZGYxODA0
M2QzYjVhNjRiMTBkNGMyZTYzNzQwZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2YjU2MGEx
Njc5NmJhNGJiNGI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5
JiBwYQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5
QXR0ZW1wdGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94
eSwgTlNFcnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFtZUhhbmRs
ZT4gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5m
cmFtZUlEKCkpOworICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVh
dGUod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0dGVtcHRl
ciA9IGFkb3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10g
aW5pdFdpdGhXZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVIYW5kbGUp
IHVybFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3Ry
aW5nRXJyb3JLZXldXSk7CisgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tX
S1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3
OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5n
Om9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktl
eV1dKTsKIAogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5nZXQoKSwg
X1dLUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmgKaW5kZXggOWQ3NzQxMGMwOWMxYjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4uNjRhMzVm
N2U4NzlkYjAzZGMwYmY4NzcyMjE0NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQg
ZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBjbGFzcyBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tbQppbmRleCA0YzhmY2JmOGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3MDY3Li44
Njc3YTA0MWM3MGQxMWI5NzY5OGM0N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ6OnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogCiAjcHJh
Z21hIG1hcmsgLSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlKQorUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2Up
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
cGFnZSkpOwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmlu
ZGV4IGE5Mjk5ZjFiNzQ2OWIwM2FkMjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5NjhiMzUy
OWUwYzM1NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBA
IC0xMTksNyArMTE5LDcgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFs
CiAKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVk
PFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7
CisgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUyMTJmZjM1
NjEyNjQyNTZkMTYuLjRjZjMwYmYzMzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAjcHJhZ21h
IG1hcmsgLSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2Vi
UGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwg
cGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eSkpOwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAx
NzEwZGYxOWM0MjY1OGY2ZjU5YzdjMTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5OTZiMWVm
OWQ0YzFhOTliMTcwYmY3NjIzZDM2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5LDggKzE1
OSw4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7
Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
ICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hhbmdlQ291
bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUo
YnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2
NF90JiBudW1iZXJPZkZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCAxNTM2NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5YTMxM2Iy
Li5lNDYzYWM5OTRiYjlmOGFhYzQ0ZmU4MjkzOGJlMTM2MTZiYjA1OTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCw3ICs0Mzc0LDcg
QEAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQog
ICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8
Vmlld1NuYXBzaG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3Vy
ZmFjZSkpOworICAgIGF1dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3Zl
KHN1cmZhY2UpKTsKICAgICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKICAgICByZXR1
cm4gc25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3
MjVhOTc5ZDgwZGNlZS4uODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5TWFwLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3du
bG9hZFByb3h5TWFwKCkKIAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRl
RG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9h
ZFByb3h5PiBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9j
ZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQ
cm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJv
eHkgPSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJl
cXVlc3QpOworICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCks
IGRvd25sb2FkUHJveHkuY29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsK
KyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93
bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFBy
b3h5LmdldCgpOworICAgIHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQ
cm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1
ODY4YmUwNDMzOWU3ODQ5ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdm
NjI3MmQyMDU3MjBiYjg5MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCkBAIC05NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGlyZWN0aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRp
b25JRCA9IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90
aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVh
dGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGds
b2JhbE5vdGlmaWNhdGlvbklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBu
b3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFn
ZU5vdGlmaWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFs
Tm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25z
LnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90
aWZpY2F0aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwg
c3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVm
KCkpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkp
OwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDI1YzljNmNmNTZjZjI1NDM0ODc2ZmRi
ZDE2NmYxNGMwOGY4MTUzNC4uNDcwODgxMDBlZTMxZDA3YTY2ZDdlOTE1OGU0OTk1OGI4ZGY4NTlj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ5LDEw
ICszNjQ5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQogCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1l
KGZyYW1lSUQpKTsKICAgICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBX
ZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUg
PSBXZWJGcmFtZVByb3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRo
ZSBmcmFtZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3Jl
YXRlZChmcmFtZUlELCAqc3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZy
YW1lSUQsIHN1YkZyYW1lLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0
ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBmYTQzYTNkMWU3ODMwOTJiYjdjMDIxODE0N2ZkMTY0ZjgyN2IwM2MwLi45ZTNmNDA0YmQ2
ZTZhYmIzYWIyNDM5YWJhNzI3YzZiNWMzOWJlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2
b2lkIChBUEk6OgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3Rp
Y3NSZXF1ZXN0PiByZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byBy
ZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01h
c2sgJiBTdGF0aXN0aWNzUmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2Vi
Q29udGVudFN0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01h
c2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlz
dGljcyhyZXF1ZXN0LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdl
YkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3By
b2JsZW0vMTMyMDAwNTk+OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdl
YlByb2Nlc3NlcyB3b3JrLgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdv
cmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsK
LSAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1
aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAg
IG1fc3RhdGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1By
b2Nlc3NTdGF0aXN0aWNzKHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwNjM0MzI0OWJhYTcyNWFmYjZjYjQ0NGM1NTIzMjUz
ZDE3ZTA4MGJjLi5lNmI0NDRlOTE0MjdiOTZjYWE4ODQzYWViM2ZhMjI3Y2RkN2I1NGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBA
QCBjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3
V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1l
ZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxp
emVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAot
ICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7
Ci0gICAgdm9pZCByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3Qq
KTsKKyAgICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVz
dCYpOworICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1
ZXN0Jik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5k
ZXggNWUzZmI2NWMyMzBkYmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdj
ZThmODgwNDk4YWZlMTJhMWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAg
LTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlw
dGlvbik7Ci0gICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVl
c3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUo
KnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lk
ZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVx
dWVzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQy
N2Y4NjMuLjkyZWFkMDQ1ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5R3RrLmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsK
ICAgICBBU1NFUlQoIW1fd2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHBy
ZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwg
IldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9Q
RVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNw
ZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJl
ZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5j
ZXMtPnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2Vu
ZGlmCi0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAg
IGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3Vw
SWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxG
b3JQYWdlKG51bGxwdHIpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQobV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9y
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19P
QkpFQ1QobV93ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwCmluZGV4IGI2NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNh
MTg3YTY0MjM0MTEyZTg1NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4
LDcgKzEzOCw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlRnJvbnRlbmRQYWdlKCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NF
UlQoIW1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJf
TU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0
b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVy
ZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0Niwx
MiBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250
ZW5kUGFnZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVG
bGFncyh7CiAgICAgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5z
cGVjdGVkUGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0
ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsK
IAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3Rv
clByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0g
R1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRy
KCkpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9y
VmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAg
Z19zaWduYWxfY29ubmVjdChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhp
bnNwZWN0b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3
NThlY2JhOTg1N2EwYTYxYWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVj
ZWMyMGUxNzNjMmZiNGIxM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAt
ICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAg
ICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgp
KTsKICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBl
cihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5v
cmlnaW4uZ2V0KCkpKTsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAg
ICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAg
ICAgICBXS1dlYlZpZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAg
ICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUlu
Zm8uZ2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KaW5kZXggMTEyMzVhMTI3ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEzMS4uOWZl
ZmZkZGY0MTA0MTJlNzZkMmMwYzNkZmQ2N2JmMWUxYmQyYjBiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRl
bSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFBy
b21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVC
dWZmZXIpCiB7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKKyAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5z
ZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21p
c2VkRGF0YUZvckltYWdlKGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwg
dXJsLCB2aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgbV9pbXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUs
IGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwg
cGFzdGVib2FyZE5hbWUpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJ
bnB1dFN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJ
bnNwZWN0b3JQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5z
cGVjdG9yUHJveHlXaW4uY3BwCmluZGV4IGNiZmUzMGU5ZTBiZTgzMjE1MTgxOTYzNTVmNzc5ODA4
YjgyNGYyZjYuLjM3OThiZmJiNWE5YzQxNGY2MGZkYzNjYmVhOWM3YzBkYjNlMDIzMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2lu
LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFn
ZSgpKTsKIAotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBh
dXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIiwgIldlYktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFs
bG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWls
ZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94
eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRp
ZgogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7
CiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBS
ZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNw
ZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBh
dXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElk
ZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25M
ZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVu
Y2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91
cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVu
Y2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91
cC5wdHIoKSk7CiAKICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVu
dCA9IHsKICAgICAgICAgeyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRl
eCA4MjUwOTAxNzkwMGY0Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3
MzJlYTVkM2I1NDI0YzUzMDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0K
QEAgLTUwLDggKzUwLDggQEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWlt
cGwKIAogLSAoaWQpaW5pdFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVh
dGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3Nl
bGYgX2luaXRXaXRoSW1wbDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6
OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAg
ICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxm
KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBl
N2NhZTZmLi44YzI5NWJhZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3Jl
U2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2Fs
ZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwor
ICAgIGF1dG8gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
YmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKaW5kZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhi
NS4uOTUxMjMwMmIyODJlNDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgs
OCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVz
LmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRh
QXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMo
KSwgaXRlbS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZm
ZXIpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVt
LT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJk
Mzg3NDA2NDg5ZDY2M2I4ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTli
MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4
LDEwICs3OCwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1v
dmVPdmVyRWxlbWVudChXZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQu
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRU
ZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRl
c3RSZXN1bHQpOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2Ns
aWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJl
c3VsdC5nZXQoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0
b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyks
ICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0
YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKaW5kZXggYzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4u
ODhjMGEyZDljNjMxMmQyYzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcApAQCAtNzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5l
dHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0g
bV9wbHVnaW5TaXplOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZh
Y3RvcigpKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVT
aXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNl
U2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGlu
dG8gV0tTSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggYzJjYmEwOTBmYmJkYjJkOWExOTBiMWFmZjhmZTM1NWNkNmZjMzI2NC4u
MDE5OWI4NGY4ZjRlMjhmNzY5YTc0MjE5NTE4ODkxMzFkYzg3NzRlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyAr
OTQzLDcgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWlu
UHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lv
bjooTlNTdHJpbmcqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsK
IAotICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkws
ICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9u
c2UpOworICAgIGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3Bk
ZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2lu
VmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNl
KHJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXpl
IGJhY2tpbmdTdG9yZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShj
b250ZW50c1NjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsg
fSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShi
YWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVu
dHNTY2FsZUZhY3RvciwgLWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMs
NyBAQCB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFz
dGVib2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBwbGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3
ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRO
YW1lLCB0eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQp
LCAwKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1l
bW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXgg
MzE0NzlhZmMyOWFkZjRhYzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0
YjM0N2QwZDNhNmY0NjdlOTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAg
aWYgKCFJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblBy
b2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1
dG8gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBv
cnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAg
ewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgp
OwpAQCAtOTQsNyArOTQsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rv
a2Vuc0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
cHRyKCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKaW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5
MWQxNi4uZDY1MDUzNThkYjZmMzVjODEyMzBjYWYxOWQ5OWY0YzRjMDFiNGY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3
LDcgKzI0Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hv
dCgpCiAgICAgaWYgKHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKKyAgICBhdXRv
IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhh
bmRsZSk7CiAgICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVjOTkxMTIyZDA4
NDNkYWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4NTI3MDA2Y2Vl
YmM5YzM3MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZv
cm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAgLy8gVGhpcyBy
ZXF1ZXN0IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAgICBSZWZQdHI8
U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0
LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJlYW0oc3RyZWFt
LmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRo
aXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgIGFkZFN0
cmVhbShzdHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3ZmFmNzg2MjU1
Li43OGU2NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAg
ICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwogICAgIGF1
dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsKICAgICB1
aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmll
cigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlP
cmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50
UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVk
RGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0YWJhc2VOYW1l
LCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdl
LCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAg
ICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAgICBSZWZQ
dHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBpZiAobV9wYWdl
LmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRlZCkpCisg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVV
SUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNl
Y3VyaXR5T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkMDVm
Yzk5NmMxZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0YTA1OWY5ZWY3
ODFlMTQ2MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTc2NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBhdXRvIGFj
dGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5h
dmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBj
bGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2Vy
RGF0YSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2Vy
RGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsK
ICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNmMGJmYWYzNGY2
NGRhOGIzMTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYyOTk0MjNiN2Ni
OGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xOTUsNyArMTk1
LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1l
cywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFt
ZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAg
ICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlhYzIzZDhkMTNl
YmRmOTNjNjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1ZWZmZjI0NGYy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFi
bGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50
U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0
bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRl
eHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCBmZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5mODdkOTM0NDNm
N2M1OGE4MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAg
ICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShlbGVtZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEzOGNkMmJmNjM3
OTRjOGU5ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3NTJlZjgxMWEx
MjQ1ZWI1NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCBEaWN0aW9u
YXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYg
ZnJhbWUsIFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCiAgICAg
ICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hv
dFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+
IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGlu
ZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1dG8gdGV4dElu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5kaWNhdG9y
T3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9y
KSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA3ODI0
ZTVjZjcxYjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4NmY0MmEwMWNm
NDhlNWRmNjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lk
IERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIElu
dFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBi
aXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBT
aXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMwOTI5ZDFmMy4u
NjNjYzI4MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMzQz
LDcgKzM0Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogCiBib29sIEZp
bmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBi
b29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAgICBSZWZQdHI8
VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVj
dGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJn
aW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpj
cmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0
aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGljYXRvcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYxNzZkNjIwYjQ1
ODlkYzM2NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJlZWE1NWJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2lu
Z1N0b3JlRmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQo
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hl
ciwgcGFnZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdT
dG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAg
ICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIyNGI2NDQ2ZDA1
MjdkZjg2NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFiNzE5Yjc5ODJj
MDJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRlckRldGFj
aGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJldGFpblB0
cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9u
IGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+ZG9jdW1l
bnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJvb2wgewor
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCkt
PmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBi
b29sIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJl
NmJlZmI4MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3Y2M4NDVlNTUz
MmMzYjIwNmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIElu
dFBvaW50IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAvLyBGSVhNRTog
U2V0IG1vZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHNl
dCBJc1NpbXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0g
TW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6Olll
cywKKyAgICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3co
KSwgbnVsbHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBvaW50LCB7IH0s
IHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIpOwogCi0gICAg
bWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+Y29tcGxl
dGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9ja0hpc3Rvcnk6
Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNl
bmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
OworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQt
PmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRyKCksIExvY2tI
aXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6
TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogCiAg
ICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVB
cnJheVtpXSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQog
ICAgICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5hcHBl
bmQoZXh0ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGM4NGY2
NGM4YzYzZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5ZmFkMDE3MWMx
ODgzZjAwY2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQsNyArOTQsNyBA
QCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3Rl
ZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0
b3IgPSBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVk
RnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFs
VmVydGljYWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9y
OjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGlj
YXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBG
bG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CiAg
ICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
OWRmNjE4YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uNWQ1NjUyMmI1OTAzZGE3
NTdhYzU1Y2E4NDg1NGY2MDkwNmM5ZmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsNyArMTgyMCw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNv
bnN0IFN0cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91
cygpOwogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24gPSBzdGFy
dE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50
RWxlbWVudCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCiAg
ICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgIT0gb2xk
VGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0
Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0
b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2Vz
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlv
blRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3Ig
fCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRp
b25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVN
YXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRy
YW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFj
dG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKQEAgLTIxNTYsNyArMjE1Niw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRh
dGFEZXRlY3RvcklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlm
aWVyKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9y
UmVzdWx0cyA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3Vs
dHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpyZXF1aXJl
c0V4dGVuZGVkQ29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1l
bnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRh
cnkobGlua1JhbmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRl
eHRMZW5ndGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRBZnRl
ciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0
ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRh
dGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgp
LCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsyMTgxLDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93
biB0byBuZWVkIHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xv
clNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUo
KS52aWV3KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBi
aXRtYXBDb25maWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXpl
LndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZhMjRjMWMx
YmRkMTU2ZjJkM2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1ZjkzZjY0ZTQx
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg1MCw3
ICs4NTAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5zY2FsZShz
Y2FsZSk7CiAKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1h
dGlvbkNBID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0i
KTsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5n
ZXQoKSk7CisgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJW
aWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gc2hhZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxv
YXRQb2ludAogICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFn
ZShzY2FsZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9u
Rm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOworICAg
IHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVu
ZGVyVmlld0FuaW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAg
ICAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShm
cmFtZVZpZXcsIHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVmZTllNGNi
YjVkNzI2ZmYyMjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlkMjJmNmI2
MDQ0NGIxODA2MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwyNCArNDAs
MjQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90
YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1w
bChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVz
KSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFs
TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5C
eXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBx
dW90YUluQnl0ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAg
ICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdl
QXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3Rv
cmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFsTG9jYWxT
dG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBjbGFzcyBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBwdWJsaWMg
U3RvcmFnZUFyZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CiB9Owog
Ci1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitS
ZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAg
YXV0byYgc2xvdCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3VyaXR5T3Jp
Z2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAgICAgICBz
bG90ID0gU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpjcmVhdGUo
c2VjdXJpdHlPcmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90LmdldCgp
OworICAgIEFTU0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5l
d1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAtMjAyLDcg
KzIwMiw3IEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y29weShQYWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90
YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVz
cGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBt
X3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0
ZXMpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0
UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFt
ZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAg
ICBmb3IgKGF1dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAg
ICBuZXdOYW1lc3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5
LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEzYTIyZGNi
ZDIxYjY3NDBlNDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0N2Q3MmVl
NWEwNjU1ZTY3NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCArMzksMTAg
QEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGlj
IFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VO
YW1lc3BhY2VJbXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNw
YWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExl
dmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlk
ZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdl
Kikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJh
bExvY2FsU3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7Cisg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6
U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VO
YW1lc3BhY2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDQ2
MmRlODZjNDkwMDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0YWQ4NzI2
NTdlYWY4NDk2ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyCiAgICAg
cmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVh
dGUodWludDY0X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRp
ZmllcikKIHsKICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmFk
ZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNsb3QpCi0g
ICAgICAgIHJldHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWZQdHI8
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBh
ZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKLSAg
ICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8gc3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoaWRlbnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
cHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpAQCAtNjUs
MjIgKzY1LDIyIEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZSht
X2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNv
cmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVk
IHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBh
Z2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BM
ZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2lu
LCBxdW90YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDhlYTI1
ZTZlNzUwOWViMmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgwMzg5Njgx
MTRlZjk5YWMyNWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
CkBAIC0zMSwxNiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVp
bnQ2NF90IGlkZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAK
ICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRl
eCBjZjMwODViODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2MzI1MmJm
ZTRmYThjMWUxMjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjAyLDkg
KzIwMiw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2RlbC0+YWRk
Q2xpZW50KCppbnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgbW9k
ZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggN2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4uNWQ2MTEw
Yjc5MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAg
LTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0
ZSgpCiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4
dElkKQogewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9k
ZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBh
dXRvIG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3Jl
YXRlKCp0aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+YWRk
Q2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhv
c3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGlu
Z1Byb2Nlc3MoKSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBtb2Rl
bC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXgg
MDE4MTVjMTNhYzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uODZkYjJkODcxOGE1NGIy
ZjZjMjY1M2Y5M2MwYWFlOWIyYjlmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMsMzEgQEAg
U3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAgICAgIGNs
b3NlKCk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weShQYWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VCghbV9pc1NodXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlw
ZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2Nh
bCk7CiAKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFk
b3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1f
cXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5h
bWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAgZm9yIChh
dXRvJiBpdGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0
b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAogICAgIHJl
dHVybiBuZXdOYW1lc3BhY2U7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQor
UmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFJ
bXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1h
cC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICAgICAgcmV0
dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICBzdG9yYWdlQXJlYSA9IFN0
b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdl
ci5nZXQoKSwgbV9xdW90YSk7CiAgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9y
YWdlQXJlYS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIHJldHVybiBzdG9y
YWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5NjY2MTYx
MzcuLmM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01
Nyw4ICs1Nyw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChX
ZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHko
V2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3Rv
cmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3N2M4ODRh
YmQ5ZS4uODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogICAgIHJl
dHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVF
cGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAg
ICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICBy
ZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQg
cXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBj
cmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNr
aW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmgKaW5kZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2FiYi4uZTU4
OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCk7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB+V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9zZUxvY2Fs
U3RvcmFnZSgpOwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNv
cmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZp
ZXdHcm91cC5jcHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFhNjIxM2I5
ZC4uNjNjYWUyZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcApAQCAt
NDIsMTggKzQyLDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91
cD4+JiB3ZWJWaWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0KIAotUmVm
UHRyPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlZp
ZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChuYW1lLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5n
KCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwog
CiAgICAgYXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1lLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAgICAgIHdl
YlZpZXdHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCisgICAg
aWYgKCF3ZWJWaWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3
IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAg
d2ViVmlld0dyb3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkg
JiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlZpZXdH
cm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGg7CiAKLSAgICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmlld0dyb3Vw
OwogfQogCiBXZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91
cC5oCmluZGV4IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYuLjRkNDEz
N2NlMmFhYWMzYTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyArMzgsNyBA
QCBPQkpDX0NMQVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmll
d0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91cD4gZ2V0
T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdlYlZpZXdH
cm91cCogZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApp
bmRleCBkMDg0OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5YjFjY2My
NzJjMzQ3MjU5OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5j
cHAKQEAgLTI2LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNlYXJj
aFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCogY2xpZW50
KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQorICAg
IDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsKIH0KIAog
UG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAgcmV0dXJu
IG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZvaWQgU2Vh
cmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlP
Uy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKaW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5YWY0Zi4u
MGVmNDRiNDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVi
bGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKKyAgICBS
ZWY8UG9wdXBNZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVu
dUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2YjlhNWU2
ODlmYzE5Yzg3Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMyYTEzNjFm
NjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBAIC0gKERP
TVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihO
U0FycmF5ICoqKWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1h
cmtlckFsdGVybmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJs
ZUFycmF5ICopKmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtlckFsdGVy
bmF0aXZlc1tqXSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0
KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zm
c2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9z
aW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWFya2Vycy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciog
bWFya2VyID0gbWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8
PSBvZmZzZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBt
YXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2NDk2YzJj
NDQ2MDk5MmM1YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlmMzRiOWMw
OTYyOTNkYzM2Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUsMTMgQEAg
LSAodm9pZClzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAgaWYgKCFV
UkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Olll
cywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAg
IGF1dG8gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6
SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwg
MSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBNb3Vz
ZUV2ZW50OjpJc1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxv
YWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4K
ICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwogICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rv
cnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5pdGlhdGVk
QnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVx
dWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1
ZXN0KSwgZXZlbnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2FhOGY0YWQ0
Li4xYjZjODIyODU0YTA3ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdldFByZXZpZXdT
bmFwc2hvdEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJl
Y3RzCiAgICAgUmVmPFJhbmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2RlKTsKIAogICAg
IGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgpLT5wYWdlU2Nh
bGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRl
eHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRp
Z2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9y
OjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29u
dGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwKICAg
ICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAgICAgICBUZXh0
SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxl
eFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCAxZjMy
ZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li43NzRkMjFhOWZmODRmMDFhM2Mx
NjliYTY3OTkyNTdhNDdjOTllZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgogICAgIE5T
RGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0
eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwogICAgIAot
ICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNlID0gTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxs
RnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAgdWludDMyX3Qg
cmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJuX3JldHVybl90
IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwgcmVxdWVzdElE
LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0ZXNdKSks
IFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAoa3IgPT0gTUFD
SF9TRU5EX0lOVkFMSURfREVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCmluZGV4IDg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4YjdjMzIuLmFi
Y2E2YmJlMzMwNTM1YTk4MmU2NDJkNGMyYTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3Qq
IHBsdWdpblJlcXVlcwogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90
aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBU
aGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1
bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAg
ICAgICAgUmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWRO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJ
RCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWRO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJ
RCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAgICAgICBS
ZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpA
InRleHQvcGxhaW4iIApAQCAtNzk5LDEwICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3Qg
Y2gKICAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0
KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0g
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVl
c3QpOworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQoIW1fc3Ry
ZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChyZXF1ZXN0
SUQsIHN0cmVhbSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0uY29w
eVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KaW5kZXggOWE3NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4MC4uMWQx
ZThhZWY2NzUyMzYxZjNlY2MwNDY1MDVkNDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
QEAgLTE1MTcsNyArMTUxNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVx
dWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAvLyBEb24n
dCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlz
IG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAg
ICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtPiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmRO
b3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAgICAgYXV0
byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmlj
YXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAgICAgICAg
IFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBl
OkAidGV4dC9wbGFpbiIgCkBAIC0xNjc4LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxvYWRSZXF1
ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3QgY2hhciAq
KWNUYQogICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQbHVnaW5S
ZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAgICAgICAg
IFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2VdOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxX
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOwor
ICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVx
dWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAgICAgICBz
dHJlYW1zLmFkZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uY29w
eVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KaW5kZXggOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRiOGQ5MTJk
NTFmM2ZmYi4uMjM0NzgxYjBiZTg2YTRiZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5QdHI8TlNJ
bWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNl
UGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBv
bGRTZWxlY3Rpb24gPSBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQo
KSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3Np
dGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgZnJhbWVW
aWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpy
YW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJBbmNob3IpKTsKKyAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6
RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRC
ZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0
UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggZWM4ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFkMDY3NjJh
NTY3ZC4uODQ2MGIwM2Y1MGM3YzJiMTNhMTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGlmIChp
c01haW5GcmFtZSAmJiBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1lLT52aWV3
KCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgIGNvcmVGcmFtZS0+c2V0VmlldyhudWxs
cHRyKTsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRl
KCpjb3JlRnJhbWUpOworICAgIGF1dG8gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29y
ZUZyYW1lKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoY29yZVZpZXcuY29weVJlZigpKTsKIAog
ICAgIFttX3dlYkZyYW1lLmdldCgpIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zm
c2NyZWVuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDdiOWJiODk5MDhhZTVjMWE2NTJlMzZjYzg4OWJlMDRlNTY1NGM5NDYuLmE5M2RlZjYxMzk5
YTVjYzU0ZWY2MWNhZTljMDM3OTkwNTg5MGNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTc0Niw4ICsxNzQ2LDggQEAgLSAodm9pZClnZXRE
aWN0YXRpb25SZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczoo
TlNBcnJheSAqKikKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBu
b2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIERPTVJhbmdlICpkb21SYW5n
ZSA9IGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFu
Z2UucHRyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0YWRhdGEgIT0gcHJl
dmlvdXNNZXRhZGF0YSkgewogICAgICAgICAgICAgICAgIFttZXRhZGF0YXMgYWRkT2JqZWN0Om1l
dGFkYXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDljM2MyYmI5OWNjMGM2Y2QzMDUzNzk4ZGRiNjY0NGM5ZTdkYjgxNDIuLjRhODZj
Nzk0NTVmYjM2ZDBjNWJlYmZiMzkwY2U4NDYzZmViMjQyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAg
LSAodm9pZClfd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICopdHlw
ZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3QKIHsKICAgICAvLyBQdXQgSFRNTCBvbiB0aGUgcGFzdGVi
b2FyZC4KICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBl
XSkgewotICAgICAgICBpZiAoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9mcmFtZV0p
KSkgeworICAgICAgICBpZiAoYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAgICAgIGlm
IChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gY29yZUFyY2hpdmUgPyBjb3JlQXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkgOiAwKQogICAgICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkgZm9yVHlwZTpXZWJBcmNoaXZl
UGJvYXJkVHlwZV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCA1ZWI5NTc1MjgyYzFiNjUzZGNiYzlhYTZhNDdlZDcwYzA1ZTdkNWVm
Li40ZjkwZjYzOTM5NzQxMjY5NzY4ZDYzMDM2Y2IwZDNiMGQzMGM5MWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC00NzI5LDggKzQ3MjksNiBAQCAr
ICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdH
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0g
ICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ3NTQsOCArNDc1Miw2IEBAICsgKHZvaWQpX2FkZFVzZXJTdHls
ZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxk
ICopCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3Vw
OjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkK
LSAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApp
bmRleCA1YzA3NzEyMTFlYWVkNjQ5MDczZTEwM2U5MDRhNWVjOTA0OWI0NjNmLi5iYzc5ZDg5YmQ0
NDZjNTZlYTFiYTlkNTdjNzVhZTM5OWFhOGYwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgICAgICAgICAgcmVtb3ZlKG9sZFBh
Y2thZ2UuZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+
IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVk
KTsKKyAgICAgICAgYXV0byBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgq
aXQsIGxhc3RNb2RpZmllZCk7CiAgICAgICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNrYWdlLnJl
bGVhc2VOb25OdWxsKCkpKQogICAgICAgICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRydWU7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggZjg1NWRkMjYzZjc5Y2RmZDQxYjY0NjU5NTAyMmE4YzQ0Y2NhMmY0NS4uZDNlMzM5Zjc1
OTQ4YTNlM2UxZDkyOWRlZTc2ZDhjMmVkNDZkZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAg
ICAvLyBpZiB0aGlzIGlzIG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBm
b3IgaXQuIG90aGVyd2lzZSwKICAgICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0aGUgbG9h
ZGVyCiAgICAgICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlz
LCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3Vy
Y2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5
RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1
aXJrcygpKTsKKyAgICAgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUo
dGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJl
c291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5v
dGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2lu
LT5xdWlya3MoKSk7CiAgICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7CiAgICAgICAg
ICAgICBzdHJlYW0tPnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NTQsNyArNDU0LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0
KQogICAgICAgICAgICAgICAgIGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVz
dCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVl
c3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1f
cGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVz
dCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVl
c3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1f
cGx1Z2luLT5xdWlya3MoKSk7CiAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKICAgICAg
ICAgc3RyZWFtLT5zZW5kSmF2YVNjcmlwdFN0cmVhbShyZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9
CkBAIC02OTAsNyArNjkwLDcgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBQbHVn
aW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8gcm9vdCA9IG1fcGFy
ZW50RnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0gICAgUmVmUHRyPEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5j
ZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CisgICAgYXV0byBpbnN0YW5jZSA9IEpT
Qzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CiAK
ICAgICBfTlBOX1JlbGVhc2VPYmplY3Qob2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDE5M2UwMmIwNTAxOGVmNThmZTQxNmZjYmZiNjc1ZWRlM2ZjNTg5NmMuLjAz
NTlkOTAxYWNjY2Q5MTI0NjkxMWNlOTFmYzIzY2UxYjBiYTI0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTExNTgsNyArMTE1OCw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKG1fd2ViRnJhbWUpOwotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0g
UGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAgYXV0byBw
bHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVu
dCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7
CiAKICAgICBpZiAocGx1Z2luVmlldy0+c3RhdHVzKCkgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3Vj
Y2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm4gcGx1Z2luVmlldzsKQEAgLTExODAsNyArMTE4MCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdl
dCYgcGx1Z2luV2lkZ2V0KQogUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxl
dEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgUmVmUHRyPFBsdWdpblZpZXc+
IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2lu
U2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0
aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2lu
Vmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwo
KSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0Iiwg
ZmFsc2UpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIHBsdWdpbiBjYW4gYmUgbG9hZGVkIHN1Y2Nl
c3NmdWxseQogICAgIGlmIChwbHVnaW5WaWV3LT5wbHVnaW4oKSAmJiBwbHVnaW5WaWV3LT5wbHVn
aW4oKS0+bG9hZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0
MmM3ZDZiNjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0
NGU0ZGZiZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
QEAgLTU2NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0
XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIg
YmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyht
aW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAg
LTYxMCw3ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3Ry
ZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZy
YW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1
cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVD
aGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCks
IHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBw
bGFpblRleHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0
ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hh
cmVkQnVmZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0
cik7CkBAIC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0
cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1l
Ojpsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkws
IF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7
CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbiho
dG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2
KTsKICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2Rpbmcs
IGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
CmluZGV4IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlk
ZjZiOTBkMGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5
OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8g
QlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERh
dGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9p
ZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAg
ICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHBy
aW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5h
bFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdT
aXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFj
Y2NjMDY2ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6
fkNBVmlldygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZp
ZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxD
QVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6
c2V0Q29udGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRl
YzAxNTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5
YTZkYTU3MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3
IEBAIGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZE
aXNwbGF5TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVm
UHRyPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxD
QVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAg
IHR5cGVkZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcq
LCB2b2lkKiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4
IGIxNTQ4MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVk
N2U2NWFkODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3Bs
YXlMaW5rLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGlu
aygpCiAgICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlz
cGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGll
bnQpCitSZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxp
bmtDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxp
bmsoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGll
bnQpKTsKIH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxp
bmsuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q1ZEaXNwbGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0
NDIyODMuLmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlz
cGxheUxpbmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRp
c3BsYXlMaW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlz
cGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxD
VkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3Bs
YXlMaW5rKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdl
Q29udmVyc2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIy
NjAwYy4uY2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFn
ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0
aWMgSFJFU1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1
cmZhY2UsIFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwg
ZGVzYy5IZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUo
c3VyZmFjZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXpl
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcy
NzIyYWVlYjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxU
IFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3
R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAg
aWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3Js
ZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNV
TFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUs
IF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZp
ZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAg
ICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdv
cmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357556</attachid>
            <date>2018-12-18 02:40:46 -0800</date>
            <delta_ts>2018-12-18 03:05:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218194045.patch</filename>
            <type>text/plain</type>
            <size>398390</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmQ2MTBlZGFl
OWFjYTEwN2E0NjgzNWE3ZTgyZDE3YWM5YmFmZTkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmlu
Zyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsu
aDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5j
cHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdl
YlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIwMTgtMTItMTIgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmdd
W1dlYktpdExlZ2FjeV0gd2FybmluZzogZXhwZWN0ZWQgYSBxdWFsaWZpZWQgbmFtZSBhZnRlciAn
dHlwZW5hbWUnIG9mIENPTUVudW1WYXJpYW50IGFuZCBDT01Qcm9wZXJ0eUJhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDRhZGM3NjllNmU2YTY5MDE4
NDkwMDQyYTMzMjExMGNlY2FkOGYzYTguLjRhOTVmY2Q5NWIzOTA3N2UxYzYxMDJhNDdlYmE0NTdh
MGI2NzNhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
QEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAgICAgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlwZShhcnJheVR5
cGUpKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVu
Z3RoLCBbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKICAgICAgICAgICAg
IGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IDE3
M2QwM2U1Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBkNzk0MmFhZjc5YWQyYTY3
Zjk2ZDcyNDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIFdhdGNocG9pbnQqIHdh
dGNocG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KICAgICAgICAg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmlu
Z1dhdGNocG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAgbmV1dGVyaW5nV2F0Y2hw
b2ludC0+c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQo
bmV1dGVyaW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0
IHRoaXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNmIwZjMxOTM4ODY0OGNkMjk1YjZmMTFjNTczYWI3Mzg0NDIx
OTc4Ny4uMGIzNGY0NmNlMjYxOGQ3MmE0NmE5ZWI4YmQ3MmZkMmE2NWRiM2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkK
ICAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVh
dGVGdWxsVGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZp
dHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKGFk
b3B0UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAgICwgbV9zdG9wSWZOZWNl
c3NhcnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKKyAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCisgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVTRShGT1VOREFUSU9OKQog
ICAgICwgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBAIC0yMzM5LDcgKzIzMzks
NyBAQCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIAog
SW5jcmVtZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAgICByZXR1cm4gKm1fc3dl
ZXBlcjsKKyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEdh
cmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IGM4YWVkNGEzNmE1ODgyMDFmMTUyN2U1ZWFhZmExNDUzMjk1YzAwMTku
LjlkYTRhYTNhYmQxYzJlNzJlYTg5NTk3YzNiZWY5ZDg4ZGQ1ZGM2ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBIZWFwIHsKICAgICAKICAg
ICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsK
ICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwot
ICAgIFJlZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBSZWZQdHI8U3Rv
cElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CisgICAgUmVmPEluY3Jl
bWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4g
bV9zdG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29i
c2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAK
aW5kZXggNjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEyY2M0ZS4uYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNvQ2VsbFNldDo6fklzb0Nl
bGxTZXQoKQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pjo6cmVtb3Zl
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29D
ZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlN
YXJrZWRCbG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNr
PE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBAIC03OCw3ICs3OCw3IEBA
IFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0Ojpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAogTkVWRVJfSU5MSU5FIEJp
dG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6
ZV90IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5k
ZXggMTZjOWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNlNy4uZGFkYTY3MmM0OTFk
YzAzODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAKICAgICBib29sIGNvbnRh
aW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRvIGEgY29tYmluZWQgc2Vh
cmNoIG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsIHVzZXMgYW5kCiAg
ICAgLy8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElzb0Nl
bGxTZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gewogICAgIHZv
aWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JF
YWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAgIFJlZjxTaGFyZWRUYXNr
PHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBG
dW5jJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4NjkxNGU0YzNmYjAyNjMx
ZjAyMmQ5Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1ZWQzNGE2Zjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5j
JiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFs
bGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVu
YykKIHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRv
ciYpPiB7CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBh
cmFsbGVsKGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXNvQ2VsbFNldCYgbV9z
ZXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBt
X2Jsb2NrU291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxl
KigpPj4gbV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7CiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKCp0aGlz
LCBmdW5jKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywgZnVuYykpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4NzIxMzMxMGFmYjhiMzEu
LmUxNGEzNzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgTWFya2VkQmxvY2s6
OkhhbmRsZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3Bh
Y2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0
b3J5KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKIHsKICAgICBjbGFz
cyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+IHsKICAgICBwdWJs
aWM6CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9y
eSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKG1fZmly
c3REaXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKG1fZmlyc3REaXJl
Y3RvcnkpKTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJl
ZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5
TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQYXJhbGxlbFNvdXJjZUFk
YXB0ZXI8QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxlKj4oCiAgICAgICAgIHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAppbmRleCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5YTVmNGIxLi44M2VmNGQ3
NDlmYmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1
bmMmKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3Rv
cnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2soY29uc3QgRnVuYyYpOwpA
QCAtNzgsNyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsK
ICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKGNvbnN0IEZ1
bmMmKTsKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4NjA5NzQwYTYyNjMuLjE2
NzEyN2ZmNDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMp
CitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAg
LTEyMSwxMyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uCiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwotICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAg
ICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7
CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAgYm9v
bCBtX25lZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjY0NDA3MWQzZjk3YzZkZDZhNmE2NDAxNGQx
NWYxZTQyZGE3NDA4Yy4uMGI5OTYxYjhhYzM5ZjNlZDAyZGYyOGZlODQ2ZTJkMmM4OThkNWRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJlbnQoKS5kZXF1ZXVlKCk7
CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CisgICAgUmVmPEFy
cmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJl
bGVhc2VDb250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2Rl
ID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVm
ZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZm
ZXIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcAppbmRleCA0ZTVlZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhkNWUxOTk5NzFmLi44OTVi
MjliNmM5ZTE1MjM1ZDM0NWQ5NDI4YTM1MzkzYTNjOGE4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODksMjAgKzI4OSwyMCBAQCB1
bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiAgICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQp
IGNvbnN0CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJl
Z2luKSwgY2xhbXBJbmRleChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwo
Y2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9
IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBi
ZWdpbiwgc2l6ZSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwog
ICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmlu
ZGV4IGY2OTljOTQ1YWU0MDRlMmUwYmJkN2NmYmM1ZTk0OWQyODNlYThiZGQuLjMwZmJhNmE2YTA4
NDZhMTcyYjM5ZjE2N2NhMmU0NGMwMDFiZjI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI4LDggKzEyOCw4IEBAIGNsYXNzIEFycmF5QnVm
ZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBp
bmxpbmUgc2l6ZV90IGdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0OwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJs
ZSBlbmQpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8QXJy
YXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0
OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWlu
Z1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25l
ZCk7CiAgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIGlubGluZSB1bnNpZ25lZCBj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CiAgICAgc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGQxYTZjMmI5NmNhNWE4ZmY3Zjdh
MzE0ZTYwMmExYWNhODI1NGMxMjguLjY0ZmZmNGE4N2IwNWMzOThjODgxMWU4ZGI2YzVkM2Q2NmEx
MDA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8g
PSB7CiAKIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBX
YXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQorICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRj
aHBvaW50U2V0KElzV2F0Y2hlZCkpKQogewogfQogCkBAIC02Miw3ICs2Miw3IEBAIFN0cnVjdHVy
ZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
KQogCiB2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0g
ICAgc2V0KCktPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Cisg
ICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCA5
YTZmNzFhOTY4Y2MxOTQ2YTBkNzkzNjExZTA1MmJkNmViYmUwMWE3Li5lNWQ2ZDA5NzRhNThlYmIw
YjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaApA
QCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYpOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJu
IG1fc2V0LmdldCgpOyB9CisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQu
Z2V0KCk7IH0KICAgICAKICAgICB2b2lkIGZpcmVBbGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKICAgICAKLSAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7CisgICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMGI5NzEwNWI3
ZTc3MTk2OTdiNTQyMWEyNjM2ZjFhNGFmMmUwN2UuLjc5MThiNjJiMDcyMmFjYmVmN2FhNzI5YzQw
YjQ3NjkzMWMwZGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC01Niw5ICs1Niw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBlbmQgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7Ci0gICAgaWYgKCFu
ZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCmluZGV4IGFm
OGZmNWEwYTgwY2U4YmFhYWQwN2ExZDViY2E2MTQwY2VlMDMwZTEuLjIzOGVlNjdjMzgyODQxOWIz
M2YxNDllMmI0M2I2MjY1ZTg3NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3Im
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0
IGltcGxlbWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCi0gICAg
ICAgIFJlZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24gPSBDRE06OmNyZWF0ZShkb2N1
bWVudCwga2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMp
LCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAwN2E0Y2RkZDFkNGIzY2Y0MzM5ZjJiMGM5ODdhM2Ux
ZDI3MWFmMmYwLi4yY2UzYzhhMGY4NzM5OTQxOWI5ZjA4Y2IzZmU0YmNiMmQ3NzgwZDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzQsMTQgKzIz
NCwxNCBAQCB2b2lkIEZldGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgbV9jb25zdW1l
ci5sb2FkaW5nU3VjY2VlZGVkKCk7CiB9CiAKLVJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAorUmVm
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKQogICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkK
ICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJv
ZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoKTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihibG9iQm9keSgpLnVybCgpKTsKICAg
ICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQpAQCAtMjUxLDE1ICsyNTEsMTMgQEAgUmVmUHRyPEZv
cm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVu
Z3RoKCkpOwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keSA9
IGNvbnN0X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOworICAgICAgICBSZWY8Rm9y
bURhdGE+IGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHko
KSkpOwogICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9Ci0gICAgaWYgKGF1dG8qIGRhdGEg
PSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpOwor
ICAgIEFTU0VSVChkYXRhKTsKKyAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiB9CiAKIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6
dGFrZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBkYWFk
N2M0MmM0Nzc5YjFhNDA2OTVkMGYxNTBkN2Y5ZjRiOTk2YzUyLi5iN2IyMjAxNWNkYzAyNjNiZWI0
MzBmNDliOTgzNTkyNjVmNDYwZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRmV0Y2hCb2R5IHsKICAgICB2b2lkIGxv
YWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoKTsKIAotICAgIFJlZlB0
cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0
OworICAgIFJlZjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGNvbnN0OwogCiAgICAgdXNpbmcgVGFrZW5EYXRhID0gVmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IDlkMjUwNjc1ZmRlN2MyZWMxZmI2MzFhOTFmZWVhN2NjNDM4YzVhOWIuLjU4
YTcyYjEyMWNlMWY5MzUzOTY3YWIyYTNkNGJiN2Q3NzlkZjhkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zMDQsMTAg
KzMwNCwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUmVmPFBvc2l0
aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZQogICAgIGlmICghZnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05v
dGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShl
cnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5vdGlm
aWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhp
cywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCi0gICAg
bV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworICAgIG1fb25lU2hvdHMuYWRkKFdURk1vdmUobm90
aWZpZXIpKTsKIH0KIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlv
bkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMzE1LDE0
ICszMTUsMTQgQEAgaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNh
bGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFAKICAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdl
b05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5v
dGlmaWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCiAg
ICAgaW50IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGls
IHdlJ3JlIGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7CiAg
ICAgICAgIHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVu
dGlhbElEKCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIFdURk1vdmUo
bm90aWZpZXIpKSk7CisgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlm
aWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjU4ZDg5YTVh
ZGFiY2E1ODhhMTlhNDhkOTc4ZjZlZTIyMWY4ZGU3ZS4uMTg0NzQzOTE5MGE4Yjc5YmVmNzA2NDMy
ZmQyZjlkNzU1NjkwNzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIHVpbnQ2NF90IElEQkRhdGFi
YXNlOjp2ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAot
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKK1JlZjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVO
YW1lcygpKQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQobmFtZSk7CiAgICAgb2Jq
ZWN0U3RvcmVOYW1lcy0+c29ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNzZhMTI4NTkxMDEwNDZlNjUyYjhlZGFiNGY3MDNlMGQ0
YWQxNTkzZS4uMTVkYWNiMTI4MTFkMDMxYjcwZTFlMWNmNzRlOWIwOTM5ZDlmMzI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01NCw3
ICs1NCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgLy8gSURCRGF0YWJhc2UgSURM
CiAgICAgY29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAg
ICAgc3RydWN0IE9iamVjdFN0b3JlUGFyYW1ldGVycyB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA3ZGM1ZTBmNzk5YzBhNjI4NjIwMzJlZmQx
ZWZjYmFhZDhhZDY0ZTk0Li44ZTA3MmE4MzY4MjRiZDY3OTcwYWRjNmE3ZTA1MDA4N2E1MTlkNjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5m
by5rZXlQYXRoKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6
aW5kZXhOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFtX2Rl
bGV0ZWQpIHsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLmluZGV4TmFtZXMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5o
CmluZGV4IGVkNjA2NDdlMjA3N2IzOWE5N2RiYzRkZTgwNzkzNWJhMzlhMWQ3OWQuLmQwNDQ5OTMx
OWM4MTdlNTllYmNiNTUxNTZkZDhhMDQyNTNjZThhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBj
bGFzcyBJREJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5h
bWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCgpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkg
Y29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2Rj
MTIuLjE3NWJkZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTM3MiwxMyArMzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURC
UmVxdWVzdCYgcmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwog
fQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFw
LmNvbnRhaW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBt
X3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlv
bikpOwogCiAgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMx
NDZlNWQ2OTJlZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFi
YTQ5OGZhOTcwZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRy
YW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwg
cHVibGljIEV2ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBh
Ym9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNj
aGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYm
KTsKKyAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uPiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCBjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZl
Yy4uOGRkYjU2ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAg
fQogfTsKIAotaW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNh
Y3Rpb25PcGVyYXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYp
LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRp
b24mKSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJl
ZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlv
biwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihv
cGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAyPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBN
UDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
KQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxN
UDEsIE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9u
LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8
VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1
dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0
cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitS
ZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAg
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJ
REJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0g
ICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFu
c2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUs
IHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5z
YWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBA
IC0yNDcsMTIgKzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0
IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3Bl
cmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYs
IGNvbnN0IElEQlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3Bl
cmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFu
c2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIsIHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBh
cmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKaW5kZXggMTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNh
OTlhZTA5ODFjOGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzEx
MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5z
ZXREZWZhdWx0VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OlVzZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0
cmFpbnRzKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAg
cmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwog
fQpAQCAtMTIzLDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0
RGlzcGxheU1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0
ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVl
c3Q6OlR5cGU6OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzLnZpZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAg
ICAgICAgcmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2
MTI2YWYyYjM2ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJN
ZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShwcm9taXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVk
aWFSZXF1ZXN0KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7
CiAgICAgcmVzdWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuaAppbmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42
ZGU3ZTVjOGQ3YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVk
aWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwg
flVzZXJNZWRpYVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdm
ZGRiYzAwODBiYzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRk
ZjI3ODRkOWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRl
RmluYWxWYWx1ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAK
ICAgICAvLyBOb3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhl
ciAodW5pdHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVj
dGlvbnMgd291bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYg
bmVjZXNzYXJ5LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpj
cmVhdGUoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1
cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA4OGFlMDRhYmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFm
Yzc2MTFiMzcwMzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3
LDggQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVh
dGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAg
ICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUg
bWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251
bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0
Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1
ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCks
IHNhbXBsZVJhdGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVs
cywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVm
ZmVyID0gbV9udW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAg
ICAgICAgIG1faW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0
cHV0QnVmZmVycy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5
YmRjNjgzOWQwYmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQw
NGY3YWIwNjM1YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1l
bnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRy
PFNRTFJlc3VsdFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBh
dXRvIHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNv
IHdlIGNhbiBmZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5z
dGVwKCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0
YWJhc2UmIGRiKQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJl
c3VsdFNldC0+c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAg
bV9yZXN1bHRTZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3Vs
dFNldCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5
MDcuLjBkYzQxMWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdl
YkdQVT4gV2ViR1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlz
ZSYmIGRlZmVycmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShkZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVk
LnJlamVjdCgpOwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJy
ZWQucmVzb2x2ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRl
eCBlZWVjNGRmNjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMx
NjE5ZTAwZGI5MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNy
ZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3Jp
cHRvci4KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwog
fQogCiBXZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNm
ZWMuLjhkMDRlNTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURl
dmljZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcAppbmRleCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlh
NWM3NjQyZjI0YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQ
VUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BV
QnVmZmVyOjpXZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVk
NjgyZmJlMjQyOGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFk
YWNkN2NiY2IyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
R1BVQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwog
CiAgICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMw
MzM4NDI5NDIuLmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1
ZmZlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJl
ZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5S
ZW5kZXJQYXNzKFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNv
bG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsgY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2ht
ZW50LmNsZWFyQ29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxs
cHRyOworICAgIGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KG1fY29tbWFuZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikp
KQorICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywg
ZW5jb2Rlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMy
NTI2MzkyNDM3YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOwogCiBjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7
CiAKICAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDc3YmE0Y2JjMDhmOTZiMWUzMjJjNjlk
NDg3ZjcwNTk0MTI4NmM0MzguLmU0MGVhOTgyNzc5YTc5MzVkODM2MDgyNzA4OWEwZjAxNzUzNDE5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cApAQCAtNDYsOCArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVE
ZXZpY2U+IFdlYkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIp
CiB7Ci0gICAgYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFr
ZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVy
biBkZXZpY2UgPyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRl
dmljZS5yZWxlYXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9
IEdQVURldmljZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50
IHdoZW4gY3JlYXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxX
ZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjAs
MTUgKzYxLDE3IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVy
PiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9y
IG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVm
ZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSB9KTsKLSAg
ICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
QnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3Iu
dXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
aGF0IGNhbiBiZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KTsKLSAgICByZXR1cm4gbW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
bW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUg
PSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
eyBkZXNjcmlwdG9yLmNvZGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxp
ZGF0ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpAQCAtODksMTQgKzkyLDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5k
ZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5k
ZXJQaXBlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxp
bmUgPSBtX2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwg
ZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwot
ICAgIHJldHVybiBwaXBlbGluZSA/IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxp
bmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0g
bV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciB7IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2Ny
aXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAg
IGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0g
ICAgcmV0dXJuIGNvbW1hbmRCdWZmZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29t
bWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29t
bWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJl
dHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBX
ZWJHUFVEZXZpY2U6OmdldFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5
NzUwY2I3NGE2ZGI3NjU3YjJjZTgxZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1
MzFjMGZmOTg2NDdiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
IGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVy
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdU
Rk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5k
QnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmgKaW5kZXggMzEyOTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3
Zi4uODdhN2VhZjE5ZjA5OTA3MWRiN2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVh
dGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CiAKICAgICAvLyBGSVhNRTogTGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2ln
bmVkIGxvbmc+LiBXaHkgaXMgdGhlIGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5n
IHRoZSBJREwgd2FudHMgYSBzZXF1ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVy
dGV4QnVmZmVycyh1bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYs
IFZlY3Rvcjx1bnNpZ25lZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4
Zjk3Mzg2MmE0ODhlYzBjMzFlYTlmYS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEz
OTI4NjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRl
clBpcGVsaW5lPiYmIHBpcGVsaW5lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJH
UFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzcz
Y2FjZDkyMGY5N2QyMi4uMzkxN2ZhZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBl
bGluZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+
IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAg
UmVmPEdQVVJlbmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmUuY29weVJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5
MjMwNDFjZjhlNTk2Yjg2MWI5OGUuLjk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmEx
YzdmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4g
V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZSht
b2R1bGUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdU
Rk1vdmUobW9kdWxlKSkpOwogfQogCiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1v
ZHVsZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2Vj
MjRhMWZlMDlhNmViNGM2Zjc0NTdhMGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2
Y2FkNDViMzMzNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVT
aGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1v
ZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBj
b25zdCBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0
cigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHAKaW5kZXggYzY3ODBlZjYxYjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5
ZDdmOTYzYmQyZTkxNTdkODVjZGQzN2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAg
V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQog
CiBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpCiB7Ci0gICAgYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVE
ZWZhdWx0VGV4dHVyZVZpZXcoKTsKLSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1
cmVWaWV3OjpjcmVhdGUoZ3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7Cisg
ICAgaWYgKGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCkpCisgICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1
cmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3LmNwcAppbmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0
YjEyMzQ2NTFjLi43MjY1OTQ1YTIzZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcu
Y3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdl
YkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJl
PiYmIHZpZXcpCitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVh
dGUoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVW
aWV3OjpXZWJHUFVUZXh0dXJlVmlldyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBm
ZDgxNDkyYjA4MWRmY2RjOTFiZWY1MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2Uw
ZGYzOTUwM2Y4NzkxYmVjYTA5MmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVUZXh0dXJlVmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4
dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVUZXh0dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVU
ZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IGYxMTRiYTk0OWIwYjMyZDBmNmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3
N2M4MTQ0YmI2YmY2NTdiN2ZkMGFjMmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQ
dHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRy
PFJhbmdlPiBvcmlnaW5hbFJhbgogICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgZW5kUG9zaXRpb24gPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdl
LT5lbmRDb250YWluZXIoKSk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9
IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwot
ICAgIGlmICghc2VhcmNoUmFuZ2UgfHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1
dG8gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uKTsKKyAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpOwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWlu
VGV4dCgqc2VhcmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwor
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
cmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQs
IHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJS
KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5
MzM2NzZjZDA5ZjAuLmY3Y2QzYWE4YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4
dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAg
ICAgICAgLy8gQ29uc2lkZXIgcHJldmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJl
c2VudCBmb3IKICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8g
ZW5zdXJlIHdlIGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxp
bmUgdGV4dCBhcmVhcykuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBv
ZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdl
dCgpKTsKKyAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUt
PnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNl
dCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0Vt
aXQsIHRleHRUb0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMy
MzRmNjA4ZGE2MDcuLmJjMTZlNGIyOTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBs
aW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmpl
Y3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5k
b2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3Ro
Rm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAg
LTI4Niw4ICsyODYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0
RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSks
IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxl
bmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9
IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICBy
ZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwog
fQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRr
SHlwZXJsaW5rKiBsaW5rKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDE4YzllOWI1Nzk3Yzk5MTZkMjYyNWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2Zj
NDE1YjBlZWQ1N2I0NGZmMmQ3OWFiY2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKQEAgLTQwNiwxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAK
ICAgICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0
aGUgb2JqZWN0LgogICAgIFBvc2l0aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobm9kZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBu
b2RlUmFuZ2VTdGFydCk7CisgICAgYXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAK
ICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlh
bCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxh
dGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zm
c2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5n
ZUluUGFyZW50LmdldCgpLCB0cnVlKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VF
bmQpOwotICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9k
ZVJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0
a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJl
bnQucHRyKCksIHRydWUpKTsKKyAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9k
ZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJh
bmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4g
d29ya2luZyB3aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0
eSgpID09IFVQU1RSRUFNKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IDhjN2IxY2YzOGI5Y2I4OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhl
OWQwYTdkM2VjYWU3MDJhNDM5NTYyZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2Nv
bnZlcnRUb05TUmFuZ2U6KFJhbmdlICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWlu
ZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNj
b3BlKSkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAg
UmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CisgICAgYXV0byB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRD
b250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+
c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlv
biA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1
cm4gTlNNYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9u
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0VGFzay5jcHAKaW5kZXggOWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBk
ODcxNS4uMzU0NWQ1ZDUxMWZmODY4MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
CkBAIC03OCw4ICs3OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0
VGFzazo6SlNHbG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2soeyB9KQogewotICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFz
aykpOwotICAgIG1fdGFzayA9IFtjYWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgYXV0byBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJh
Y2stPmNhbGwoKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkx
YTI4N2FhYi4uZTdkOTM3ZWVhNzRjMTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDks
OCArMjA5LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwog
Ci0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tD
YWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWlj
cm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWlj
cm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIFtjYWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0g
SlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwor
ICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKaW5kZXggMzgwYWQ1YmQxNTIwMTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYw
NGNiYWViODdmMDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMz
LDkgKzEzMyw5IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZl
bnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZSY+KG9iamVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNr
KSk7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
T2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtj
YWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwg
Y29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5
NmM4OWQxMzhjMzU2NmEzMWMwY2MyNDkuLmRmOTQ3NmExNmJiM2ZiYzhjNDhjNmVjN2Q2OGIzYzJl
YmQ2NWEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQpAQCAtODUsMTAgKzg1LDEwIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
CiAgICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNj
cmlwdGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJp
bmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7
CisgICAgICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0
ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxs
ZXIgaXMgZXhwZWN0ZWQgdG8gcmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0
KG5wT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgICAgICByZXR1cm4gV1RG
TW92ZShpbnN0YW5jZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1Mjhi
YThjZWI5ODczY2I2ZjEzMzU5MzYzNWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVh
ZTM4MDVhNzAyYjY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xv
bmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAg
SW50U2l6ZSBpbWFnZVNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbGVuZ3RoIHx8IChpbWFnZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVu
Z3RoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAg
ICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1
OCw3ICsyOTU4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3No
YXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0
KGluZGV4KSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZ2V0SlNWYWx1ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
KmV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUx
NWU1NTYwZDQ0OTY1ZGE2NDA0MTU0ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVm
ODNhOWMzMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNl
IDogcHVibGljIEluc3RhbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0
YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAg
IHN0YXRpYyBSZWY8T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8
Um9vdE9iamVjdD4mJik7CiAgICAgdmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3Qq
IGV4Y2VwdGlvbkVudmlyb25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVu
dCBtZWFucyB0aGUgZXhjZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBl
bnZpcm9ubWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
CmluZGV4IDBhZWMwY2VlYWY5YzZjMmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2Fm
ZmM2NmFkZjcyNDJjYzQ2MDFjZDMyYTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3Rh
bmNlOjpPYmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RP
YmplY3QpCiB7CiB9CiAKLVJlZlB0cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJ
bnN0YW5jZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2Jq
ZWN0PiYmIHJvb3RPYmplY3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5h
ZGQoKF9fYnJpZGdlIENGVHlwZVJlZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBh
ZG9wdFJlZihuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RG
TW92ZShyb290T2JqZWN0KSkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3Jh
cHBlci5wdHIoKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3Rh
bmNlOjp+T2JqY0luc3RhbmNlKCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY3Nzg0MTIwNmZiZTFlNGUzNzg5YTBmODAy
YmRkMWMxZDMzNGI4ZWEuLjZjOTUwNjY5NDFkNTNlNjVhZWU1ZmQxNWJjZjMwMGRjNDIxYWFhY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRp
b25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnQKICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0CitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGRvZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBj
b21wdXRlZCBzdHlsZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQpAQCAtNDIxNywxMiArNDIxNywxMiBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKQogICAgIHJldHVybiBjb3B5
UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVz
KTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKK1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChw
cm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0
KS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1
cm4gbGlzdDsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCkBAIC00MjU0LDEyICs0MjU0LDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2lkZXNTaG9ydGhhCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQp
CitSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNDM1NCw4ICs0
MzU0LDggQEAgUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFj
a2dyb3VuZFNob3J0aGFuZFZhbHVlKCkKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwIH07CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcikpKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hv
cnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0
b3IpKSk7CisgICAgbGlzdC0+YXBwZW5kKGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
cHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9y
KSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggYmRmMzQzMjcyYTZhYTQxYjc2ZTMxZDJh
MTlmZjcxMTc3MjM2N2Y3My4uYWZlMjA0YmUxNjg4OWNhNzFkYzk1NDVjYjY3MTQ5Yjc2YWJlOTlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaApAQCAtODcsMTQgKzg3LDE0IEBAIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3Igewog
ICAgIFJlbmRlckVsZW1lbnQqIHN0eWxlZFJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCk7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQ
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJiBj
dXJyZW50Q29sb3IpIGNvbnN0OworICAgIFJlZjxDU1NWYWx1ZT4gYWRqdXN0U1ZHUGFpbnRGb3JD
dXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQ29sb3Im
LCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKICAgICBzdGF0aWMgUmVmPENTU1Zh
bHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29u
c3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1
c3RQaXhlbFZhbHVlcyk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0Owor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0
IFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKIAotICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmKTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKICAgICBSZWY8
Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
Jik7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFBzZXVkb0lkIG1fcHNl
dWRvRWxlbWVudFNwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmluZGV4IDMzYTg1ODllMTc2MWIwYTgxY2Q5YzQ1NDY1ZjU5YmVkNWIwZTBiYTkuLjA5NTI3
ZjFiMTI2YzdjYjVmMmRkZGNiZGE0MjFhMjg1ZTA1YWRmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTcwLDkgKzE3MCw4IEBAIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgIGlm
IChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgQVNTRVJU
KGJ1ZmZlcik7Ci0gICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSgqYnVmZmVyLCBTdHJpbmcoKSwgd3Jh
cHBpbmcpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkp
LCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3Rl
ZCBpbiB3aGV0aGVyIG9yIG5vdCBmb250Rm9yRmFtaWx5KCkgcmV0dXJucyBudWxsIG9yIG5vdC4g
THVja2lseSwgbm9uZSBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDFl
Y2M1YmEzNzA4NzkyZmE2MzdmMTZiMTJjZDczZTExZWZiMDRhNjIuLjgyYjY1Zjg3MDg0OGYxNjcy
OWI3MmZmMjhiM2Y1N2EyYWRmZWNlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTI1OSwxMSArMjU5LDExIEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVl
dDo6cnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgLy8gSUUgYmVoYXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0
PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVDb3Vu
dCA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7ICsr
aSkKICAgICAgICAgcnVsZUxpc3QtPnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwotICAgIHJldHVy
biBydWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVs
ZVN0cmluZywgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBhMjRh
NTM2MjY4OTBhOGE5MWQxMTczOGNhOWE1OGE0NTM3MWJiOGI4Li5lMzQ5MTcxMjg3ODkwYjk4NzRh
NzA0YWI3YjQxYmY2OWNkYTU1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTM3Myw3
ICszNzMsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgbV9i
YWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdl
cygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9zOwotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9iYWNraW5nLT5yYW5nZXMoKSkKICAgICAgICAg
dmFsdWVzLT5hcHBlbmQoQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0ZShyYW5nZS5mcm9tLCBy
YW5nZS50bykpOwogICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsKQEAgLTM5MCw3ICszOTAs
NyBAQCBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiAgICAgbV9iYWNr
aW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVT
ZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CiAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKSkK
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFn
KGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAgICByZXR1cm4gbGlzdC0+Y3Nz
VGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3Jh
cHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CmluZGV4IGZkYjhlM2FmNzlhYzYyYjc4OTU2MGI4M2MzN2ViNzQzYzhmZTYxMmYuLmJkZWZlYzRh
N2ZhN2M0MGIzNjlhMGEzZDJmMGUzZDM2YjcyODc3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNo
ZWV0Q29udGVudHMqIHMKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOwotICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNl
dC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIu
Z2V0KCkpOworICAgIGF1dG8gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoKnN0eWxlU2hlZXQpOworICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldC5hZGQoc3R5
bGVTaGVldFdyYXBwZXIuY29weVJlZigpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVy
LnB0cigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0
eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDMzMWU4MzYzZmFlODdhYjQ1M2ZjMWU3ZDU1MzllMDk4MDZmYjEzNTIuLmIz
ZTRiOWEwYzU0ZmI5MzY3ZTA0NjcxNDIyNTk0OTdjYjIxNDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50
YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKEdseXBoT3JpZW50CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFy
cmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3Qg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQogewogICAgIGlmIChkYXNoZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVOb25lKTsKQEAgLTYwLDEwICs2MCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFs
dQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50
VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBw
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENv
bG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKHBhaW50VHlwZSA+PSBTVkdQYWlu
dFR5cGU6OlVSSU5vbmUpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgdmFsdWVz
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6Q1NTX1VSSSkpOwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkKICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSkpOwpAQCAtNzEsNyArNzEsNyBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yKFNWR1BhaW50VAogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyZW50Q29sb3IpKTsKICAgICAgICAgZWxzZSBpZiAocGFp
bnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJUkdCQ29sb3IpCiAgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNvbG9yKSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZXM7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiAgICAgfQogICAgIGlm
IChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NGZhM2Y1Mzk4ZmU2ZmJlNDI0NmNlNmMxMGQzOGQ1
OWY4ZTJiM2E2Li42YTIwMzYwYTU0NjAyNmExY2ZmODEyN2FlODE1MWVhZjIzMzAwNDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTgwLDggKzE5ODAsOCBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGlu
VmFsdWUsIEZpbHRlck9wZXJhdAogICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChjc3NVcmwpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShj
c3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDBkYzEwOThmNTRmODRiYmYyYmE3YmJh
MzU5NzFiNjhkNWE5ZGJiZWMuLjFlZWZlYjhiZDEwYzI1NGI4MjRiYzA2Y2Q1YjhhZWYwNjYwMjE4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0
IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ugewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAg
IHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIocGFyZW50U2hlZXQsIG51bGxwdHIpOwogfQogCi1S
ZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUq
IHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVh
dGVDU1NPTVdyYXBwZXIobnVsbHB0ciwgcGFyZW50UnVsZSk7CiB9CkBAIC0xMzEsNyArMTMxLDcg
QEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIENS
QVNIKCk7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0
eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAg
IFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9j
YXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBAIC0xNjksMTEgKzE2OSwxMyBAQCBSZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0LCBDUwogICAgIGNhc2UgQ2hhcnNldDoKICAgICBjYXNlIEtleWZyYW1lOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBBU1NFUlQocnVsZSk7CisKICAgICBpZiAocGFyZW50
UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1
cm4gcnVsZTsKKyAgICByZXR1cm4gcnVsZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB1bnNpZ25l
ZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5k
ZXggNjgwNzE0MWZlZWE3MWIwNzZhZmE5YTRhNjlhM2NkMjZmYzUzMjI4OC4uNzE4MDUyMzEzODQ0
MDMyZjc1YzljNmNkMWU1YWE5M2RiZWRkNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAt
ODQsOCArODQsOCBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRl
ZEJhc2UgewogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25z
dDsKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVu
dFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4g
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IGZhbHNlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2Ug
OiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUp
IGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNTsKICAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0
TWF0Y2hlZENTU1J1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCmluZGV4IDBmZWU4NGNkN2ViMjY3OTJlM2RmNmQ0NjdlOTBhNjJmMWZkMGNjNTQu
LjgxNGQ0NmIwNWE2N2MxNTk5YTIzMjhjMzgzMmZlNDBhZjViNjMzYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IoKQogICAgIGFjY3VtdWxhdG9yTWFwKCkucmVtb3ZlKG1fdGFyZ2V0LnB0cigpKTsKIH0KIAot
UmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNj
dW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKK1JlZjxDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRP
ckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiB7CiAgICAgQWNjdW11bGF0b3JNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBhY2N1bXVsYXRvck1hcCgpLmFkZCgmdGFyZ2V0LCBudWxscHRyKTsK
ICAgICBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gYWNjdW11bGF0b3I7CkBA
IC03MCw3ICs3MCw4IEBAIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDCiAgICAgICAgIGFjY3VtdWxh
dG9yID0gYWRvcHRSZWYobmV3IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24o
dGFyZ2V0KSkpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWNjdW11bGF0b3Iu
Z2V0KCk7CiAgICAgfQotICAgIHJldHVybiBhY2N1bXVsYXRvcjsKKyAgICBBU1NFUlQoYWNjdW11
bGF0b3IpOworICAgIHJldHVybiBhY2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBp
bmxpbmUgYm9vbCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3Jk
ZXIoTm9kZSYgY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuaAppbmRleCA5Yjk0MzcxNmRiYzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2
NzY3NzY4ZjBkNzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIGlzIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlz
dE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5v
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKaW5kZXggZDU1YzU2ZjEzNjkzMjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYz
MGMzMzAwYjlhNzkwMmZhN2JjYmUyMmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXImIG1hcmtlciwgTm9kZSYgbgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXco
KSB8fCAhbm9kZS5kb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2Ug
KGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0
aCBhYnNvbHV0ZVRleHRRdWFkcygpLgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgp
LCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAg
ICAgICByZXR1cm47CisgICAgYXV0byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5k
T2Zmc2V0KCkpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAg
ICAgbWFya2VyUmFuZ2UtPmFic29sdXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRy
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmlu
ZGV4IDEwOWY3MjRjNTgzMTYwYTcxOGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQy
ODRiNzcwMzU1ZGM0ZTBhNmQxYzI3NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5
bGUoZG9jdW1lbnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNL
bm93bk5vbmNlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+
IG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFR
dWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50
KSk7CiAKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1
ZSk7CiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsK
ICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVl
dCBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1l
ZGlhUXVlcmllcykgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBp
ZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFs
LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3N0eWxlU2NvcGUpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0
T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCku
Z2V0KCpjYWNoZUtleSkpIHsKICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNo
ZWFibGUoKSk7CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKCpjYWNoZWRTaGVldCwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFR
dWVyaWVzKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAg
ICAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0g
U3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVt
ZW50KGVsZW1lbnQpKTsKIAogICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUoY29udGVudHMuZ2V0KCksIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1f
c2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAg
aWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxl
KGVsZW1lbnQudGl0bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5
MTQzMTI4YzllMmIxMzkyZWE5ZmM5N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZj
MzY2YzA3Y2RlN2I4MDk4ZmQyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9p
bnRlckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFBvaW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKICAgICAgICAgYm9vbCBpc1ByaW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmUHRyPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
SW5pdCYmIGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0
aWFsaXplcikpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oCmluZGV4IGNmOGUzOTNiODYzZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0
NjkwNTJiNWNiMzEwYTlhMjZlZGQ0M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNl
ckdlc3R1cmVUeXBlIHsgRXNjYXBlS2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRv
a2VuIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGlj
IFJlZjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUg
c3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVy
ZVR5cGUpKTsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggNTgyYmUwZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4u
OThhYmM3MzZkNzUwNjg0M2YzMjFjMGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVy
bmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRv
IHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFs
dWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVh
dGUgYSByYW5nZQogICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFw
aCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVm
UHRyPFJhbmdlPiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBv
c2l0aW9uKCkpOworICAgIFJlZjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25P
ZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICgh
c3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRl
cm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0
aGF0IHdlIGNhbiBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgot
ICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgp
KTsKKyAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5w
dHIoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhp
cyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAg
IGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYs
MTIgKzI2NiwxMiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1Vu
YXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdG9yKG1fZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
CiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0
ZWQsIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVT
ZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LmVuZCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vy
cy5yZW1vdmVNYXJrZXJzKHJhbmdlLmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0
b2NvcnJlY3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtl
cnMucmVtb3ZlTWFya2VycyhyYW5nZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1
dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlP
dmVybGFwcGluZ01hcmtlcik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2Uu
cHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQz
LDEwIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVk
RWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXND
cmVhdGVMaW5rQ29tbWFuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgp
KTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1h
cmtlcnMoKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFy
a2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbik7CiB9CiAKIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JE
ZWxldGVkQXV0b2NvcnJlY3Rpb25BCiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGlu
Z0NoYXJhY3RlclBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHByZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0
cmluZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gcHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7
CisgICAgU3RyaW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5w
dHIoKSk7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdX
aGl0ZXNwYWNlKHN0cmluZ1tzdHJpbmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1hcmsgdGhpcyB3aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRl
ZCBhbiBhdXRvY29ycmVjdGlvbiBmb2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNv
IGlmIHRoZSB1c2VyIHR5cGVzIHRoZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBw
b3NpdGlvbiwgd2UKICAgICAvLyB3b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2Zy
YW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2lu
YWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCks
IERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdG
b3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0
IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUs
IGNvbnN0IFN0cmluZyYgc3RyaW5nVG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAg
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29y
ZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFy
a2VyLCBlbmRPZldvcmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFp
bmVyTm9kZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgq
bV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFy
a2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkp
OworICAgIGF1dG8gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgp
LCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsK
KyAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAg
ICBpZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
bV9vcmlnaW5hbFRleHQgPSBjdXJyZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkp
IHsKICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdp
dGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2
ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmco
KTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5
cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQ6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3
b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRS
YW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAg
ICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lv
bik7CiAgICAgICAgIGJyZWFrOwpAQCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRN
YXJrZXImCiAgICAgICAgIGF1dG8mIG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtl
cjo6RGljdGF0aW9uRGF0YT4obWFya2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29y
ZCAhPSBtYXJrZXJEYXRhLm9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9y
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRh
aWxzID0gbWFya2VyRGF0YS5jb250ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJ
VGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4
MTRhZDFkM2ZkYTZhZjg2OTY4OGJmYzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0
MjZmNzRiNjAzNjk3MWZjOGNlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29w
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0
UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBh
dXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25J
bk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGlu
dCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3Jh
cGgodmlzaWJsZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFy
dChlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0
LDEyIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5
bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChw
YXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwg
MCwgdHJ1ZSk7Ci0gICAgZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2Ug
JiYgZW5kUmFuZ2UpCi0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRv
IHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0
cnVlKTsKKyAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1
cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpOworICAgIH0KIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUp
CkBAIC0xMDUxLDkgKzEwNTMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklu
bGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAg
ICAgZWxlbWVudHNUb1B1c2hEb3duLmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQot
ICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5n
ZXQoKSk7CisgICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1
c2hEb3duLnB0cigpKTsKIAogICAgICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91
Z2ggY2hpbGRyZW4gb24gZWFjaCBsZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFn
Z3JlZ2F0ZSBpbmxpbmUgY2hpbGQgZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3
cmFwIGVhY2ggY2hpbGQgc2VwYXJhdGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHls
ZSYgc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMg
Y29udGFpbmluZyB0YXJnZXROb2RlIGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdl
dE5vZGUKICAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQg
dGhlbiBhbHdheXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0
YXJnZXROb2RlIHx8IHN0eWxlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVT
dHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5w
dHIoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBv
dXRlciBsb29wIChjb250YWlucyB0YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFj
aGVkIHRhcmdldE5vZGUsIHN0b3AgdGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBv
ZiB0aGUgY3VycmVudCBpbm5lciBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2
NGNiNWMxZGIwODMuLjMwYjM3MmZiNTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBA
IC0zODIsOCArMzgyLDcgQEAgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCBy
YW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZp
cnN0UmFuZ2UpIH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3
NjcsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVz
ZXJ2aW5nTWFya2VycyhUZXh0JiBub2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXImIG1hcmtlckNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRv
IG1hcmtlcnMgPSBjb3B5TWFya2VycyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNv
dW50KSwgRG9jdW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5O
b2RlKG5vZGUsIG9mZnNldCwgY291bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiBuZXdSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwg
Jm5vZGUsIG9mZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9m
ZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBt
YXJrZXIgOiBtYXJrZXJzKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYg
KG1hcmtlci5pc0RpY3RhdGlvbigpKSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFk
ZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9u
KCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAg
ICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBl
KCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5t
ZXRhZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50
eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5h
ZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlv
bigpKTsKICAgICB9CiB9CiAKQEAgLTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAg
ICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFn
cmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
Ci0gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
c3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAg
ICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigp
LCB0cnVlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAg
ICAgICAgICAgaWYgKGVuZEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNp
YmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVj
dGx5IHRvIGNyZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAg
UG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwogICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRS
YW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFu
dC5kZXByZWNhdGVkTm9kZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFy
dFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUo
KSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24g
bm9kZXMgaW4gdGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0
ZXIgdGhvdWdoLCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBz
bWFsbC4KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhp
cyB1c2VkIHRvIHVzZSBhIHRlcm5hcnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25m
dXNlZCBzb21lIHZlcnNpb25zIG9mIEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlICE9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZSgqcmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAg
ICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBl
bXB0eVN0cmluZygpKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlz
IG1vdmVkIHdoZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8g
YW55dGhpbmcgaWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkg
cGFyYWdyYXBoIGNhbiBoYXZlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2
ZDZlNjY1NWViMDk3NWE2Li5hNmQxNzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKQEAgLTY5Myw5ICs2OTMsOSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1l
cmdlUGFyYWdyYXBocygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVu
dCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVw
bGFjZWQuZ2V0KCkpKQorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3Io
KS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdl
VG9CZVJlcGxhY2VkLnB0cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQ
YXJhZ3JhcGhzIHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0
aGF0IHdvdWxkIHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCmluZGV4IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0
ZWVlNWMuLjg2ZDAyMWQxOGE0NzkxM2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBu
b2RlLCBpbnQgaW4KICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxl
Y3ROb2RlQ29udGVudHMobm9kZSk7Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsK
KyAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShp
bmRleCAtIDEpOwogICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24o
KSA6IGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAw
MTM4OWQxYzhhZGI0NzM4YS4uYjM4YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcx
NCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxl
T2ZOb2RlKE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJlbnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVk
U3R5bGUobm9kZS5wYXJlbnROb2RlKCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZu
b2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAg
ICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAK
ICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsK
QEAgLTgyOCw4ICs4MjgsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGlu
ZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVj
b3JhdGlvbkNoYW5nZTo6UmVtb3ZlOwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwg
c2hvdWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVMaXN0ID0gdGV4dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkg
ewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVM
aXN0LT5jb3B5KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRW
YWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAg
YXV0byBleHRyYWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAKICAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVV
bmRlcmxpbmUpOwogICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1
ZUxpc3QtPmhhc1ZhbHVlKHVuZGVybGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBi
b29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxl
ZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlz
dC0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGlmIChuZXdWYWx1ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwg
bmV3VmFsdWVMaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHls
ZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rp
b24gb25seSByZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rp
b24gd2FzIG1vZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJv
cGVydGllcywgdGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hp
Y2ggb25lIG9mIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxs
ZWQuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsK
KyAgICBhdXRvIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShw
b3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVz
KiBzdHlsZUF0UG9zaXRpb24gPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHls
ZS5nZXQoKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcg
KzExNTgsNyBAQCBzdGF0aWMgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RF
ZGl0aW5nUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1l
bnQsIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJv
cGVydGllc1RvSW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21S
dWxlcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVG
cm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5s
aW5lU3R5bGUoKSkKQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJn
ZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQog
ICAgIC8vIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3Qg
cmVmbGVjdCB0aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6
IHN0eWxlPSJoZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAg
ICAvLyBGSVhNRTogVGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2Js
ZW0vNTE5NTEyMz4gU2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IgY29tcHV0ZWRTdHlsZSgmZWxlbWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24o
U3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21w
dXRlZFN0eWxlKTsKKyAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxp
Y3QoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9w
ZXJ0aWVzSW5TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVy
dGllc0Zyb20sIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4
LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChT
dHlsZWRFbGVtZW50JiBlbGVtZW50LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMp
OwogCiAgICAgLy8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92
ZXJyaWRkZW4gYnkgbWF0Y2hlZCBydWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21w
dXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRp
ZXNJbkVmZmVjdCk7CisgICAgYXV0byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVh
dGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlKSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9t
dXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpKQogICAgICAgICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAg
LTE4MDIsNyArMTgwMiw3IEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBleHRyYWN0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5k
YW50UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0
aWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0
aWVzKGJhc2VTdHlsZSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVj
ZGZjM2M5N2Q4YjNkMy4uNTlhNGI4MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGlu
Z0RpcmVjdGlvbik7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0
cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVj
dGlvbiBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25z
dApAQCAtMjAyMyw4ICsyMDIzLDggQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3Rh
cnQsIGV4dGVudE9mZnNldCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihz
dGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwot
ICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVk
UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6Tm8pOworICAgICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShi
YXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAg
ICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJh
bmdlLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Ok5vKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggNTZjYTViZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4u
OWZkYWMxZDYxMTk1MzhhY2UzZDRiZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHls
ZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFj
dGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFs
dWUpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlE
LCBwcm9wZXJ0eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBs
eVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9y
IHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9y
S2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRv
U2VsZWN0aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBs
eVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVKdXN0aWZ5UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdE
aXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZy
YW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCks
IEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIENTU1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5l
ZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGly
ZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0
bCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlv
bjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcAppbmRleCA2ZjUzMjA4ZmU2YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2
YzdmZGUyMWRiYjIwMzRiNTljNWI5NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9p
ZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCwKICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5v
ZGUoKSA6IHNwbGl0VHJlZVRvTm9kZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1Nw
bGl0VG8pOwogICAgIFJlZlB0cjxOb2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91
dGVyQmxvY2s7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCog
cmVmTm9kZSA9IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiBy
b290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVs
bCBmb3IgZWxlbWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290
IHx8ICFyZWZOb2RlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1h
dEJsb2NrKHJlZk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFy
dCkKLSAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNv
bnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRP
ZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFu
Z2UuZ2V0KCkpKQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2Vu
ZGFudE9mKCpyZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVu
dCB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChy
ZWZOb2RlLT5oYXNUYWdOYW1lKHRhZ05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1
NzQwNWY5NDhiYWNjYWMyLi40ZWMwYjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAK
QEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdz
IHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3Jl
IG9wZXJhdGluZyBvbi4KICAgICBOb2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUocm9vdCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVy
eXRoaW5nIGJ1dCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgYWNjZXNzIHN0eWxlKCkuCiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAK
LSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIGRlZmF1bHRTdHlsZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29t
bWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBw
bHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlz
RWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAKaW5kZXggNTAyYmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5
MS4uMDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNw
cApAQCAtODksOCArODksNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5n
ZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAx
LCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
Km1fcmFuZ2VUb0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggNDgwNGU5MGE4ZTIyOWNiOTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFh
NzFmZmMxZjcxNTE3NmVhMGY1MzY2YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRL
ZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50
ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0g
ICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoaW5saW5lU3R5bGUpOworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUp
IHsKICAgICAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPFF1YWxpZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNl
bWVudEZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5n
U3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRp
b25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2Vy
dGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Q
b3MtPnN0eWxlKCktPmFzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBh
cmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyAr
ODA0LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJ
bnNlcnRlZE5vZGVzJiBpbnNlcnRlZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAg
IGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5s
aW5lU3R5bGUoKSk7CiAgICAgQ29udGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVT
cGFuLT5wYXJlbnROb2RlKCk7CiAKICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3
aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5n
IGludG8gYSBxdW90ZWQgcmVnaW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4
Zjg1OGRmNGRiYzM2YWYzNzgzYi4uN2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4
MjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCkBAIC0xMjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0
aWNSYW5nZT4+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVG
cm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07
CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9C
ZUNvcnJlY3RlZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFi
NzY4M2FiM2U0NzJmMWE5ZjM1N2FkNzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1
MTQwYzUyMGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcApAQCAtMzM3LDggKzMzNyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAg
ICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
bV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUg
Y2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5n
ZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3
aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRP
ZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJh
Z3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1
cnJlbnRFbmRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFu
Z2UucHRyKCkpOwogICAgICAgICAgICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGN1cnJlbnRTdGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAg
LTM5Nyw4ICszOTcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAg
IGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdy
YW1tYXJQaHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFp
bExvY2F0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBz
cGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzcGVsbGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFw
aE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJh
Z3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFw
aFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxp
bmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1Jh
bmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBv
dXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9m
ZnNldCA9IHNwZWxsaW5nT2Zmc2V0OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJh
c2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
cGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2
N2Y4ODVlYWI1ZWRjYTk4YTIyY2U1YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUx
MWZkZjRkOTk4YTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBv
c2l0aW9uVHlwZSk7Ci0gICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwg
KmNtZCwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRv
IGNtZCA9IFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4
dCwgb3B0aW9ucywgY29tcG9zaXRpb25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21t
YW5kKGZyYW1lLmdldCgpLCBjbWQuZ2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVu
dFNlbGVjdGlvbik7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERv
Y3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJv
b2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1h
bmQgY29tbWFuZFR5cGUsIFRleHRHCiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJl
YU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBs
eUVkaXRpbmcoKnRoaXMsIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5k
aW5ncygpKTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNS
YW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9y
KCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5k
Ojp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JB
ZGRlZFR5cGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAz
OTUwMzYxYmJhZDU5MTRkZGRkMzIzNDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0
MWZhZWNlNTBkNzE5Yzk2MmNkZmFjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCkBAIC0xODkzLDEwICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBv
CiAgICAgYm9vbCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11
c3QgY29tZSBmaXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9k
ZSgpLT5kb2N1bWVudCgpLAorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhl
ciA6IHZwKSk7Ci0gICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5nZXQoKSk7CisgICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZS5wdHIoKSk7CiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDog
ZGlzdGFuY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KaW5kZXggNWNjZjQ0NjI0MDk2ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2
ZmExYWM0YTliNjljODVmMDk2NmJhMjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0
b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVy
RGF0YSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5k
SU9TLmNwcAppbmRleCA3NWY1NGExMzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4y
YzRiNjBkMDE0MzMxMTE1Y2I5MTJjNzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCAr
NjcsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQq
IHJvb3QgPSBhZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklY
TUU6IEFkZCB0aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUg
cmVzdWx0cyBhcmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3Jz
LgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVz
dWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0Vu
ZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCks
IHRydWUpOwogICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAK
ICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KaW5kZXggZjM3ZmRlN2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4u
MjMwZjVlM2I0MTczMmIxZTYyODQ1MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uIGRpcgogICAgIC8vIElmIHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVu
dCwgZmxpcCBsZWZ0LT5yaWdodCBhbmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwg
ZG8gbm90aGluZy4KIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0g
RWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSk7CisgICAgYXV0byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAg
IGlmICghc2VsZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMzgsMTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUu
cHRyKCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90
IG1vZGlmeSBieSBhcHBseWluZyB0aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVm
YXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAog
ICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJ
VmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAg
IGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRv
cjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBs
ZW1lbnRzIHVuZGVybGluZQogCiAgICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3Rs
eWUgPHJkYXI6Ly9wcm9ibGVtLzkxNTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRj
aCBzdHlsZSBzaG91bGQgc2F5ICJVbmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1Nl
bGVjdGlvbihkZWZhdWx0U3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMp
OworICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rp
b246OkNoYW5nZUF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50
JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hl
ZEltYWdlKQpAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAg
ICBQb3NpdGlvbiBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24o
JmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVm
UHRyPFJhbmdlPiBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1l
bnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGll
bnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsK
KyAgICBhdXRvIGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVu
dCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwog
CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3
ZTc5YmUxZDY5MmYyNWYuLjNmZTZmNGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAs
OCBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihu
b2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBv
c2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rp
b246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKTsKIApAQCAtMTc2LDkgKzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZy
b21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxh
aW5UZXh0OwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJD
b250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWlu
VGV4dCkpIHsKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9z
ZVBsYWluVGV4dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50
KCpub2RlLCAqZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZy
YWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAg
ICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7
CiAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVt
ZW50JiBpbWFnZUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAo
IWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYx
YWFiZGExOTgzNC4uNTc0NzIwZTc0MzNiM2FlNzI5ZDNkNDNjM2MxNWZhNDI0MzYzNmQ1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIHN0YXRpYyBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUm
IG5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0
byBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAg
ICAgc3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7CiAgICAgcmV0dXJuIHN0eWxl
OwogfQpAQCAtMTIxMSw4ICsxMjExLDggQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAg
ICAgLy8gQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gSSBjYW4gZmluZCwgaXQgbG9va3MgbGlr
ZSB3ZSB3YW50IHRvIHN0YXJ0IHBhcnNpbmcgdGhlIGZyYWdtZW50IGluIHRoZSBJbkJvZHkgaW5z
ZXJ0aW9uIG1vZGUuCiAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwgb2YgdGhlIHBhcnNlci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0
IGVmZmVjdCBoZXJlIGJ5IHBhc3NpbmcgaW4gYSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0
IGZvciB0aGUgZnJhZ21lbnQuCi0gICAgICAgIFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGZha2VC
b2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21l
bnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LmdldCgpKTsKKyAgICAgICAgYXV0
byBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7CisgICAgICAg
IGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5wdHIoKSk7CiAgICAg
fSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdt
ZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBzb3VyY2VTdHJp
bmcpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCmluZGV4IDA0MzQxMjkwMmE0MGZlNDE3MWI3NjUyZDk4YjBhM2UyZTI4ZDUxNTcuLjg5
NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtMjE3LDkgKzIxNyw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZykKIHsKICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMgPiBt
X2J5dGVzTG9hZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9IG1f
cmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7Ci0KLSAgICAgICAgbV9yYXdEYXRhID0g
bmV3RGF0YTsKKyAgICAgICAgbV9yYXdEYXRhID0gbV9yYXdEYXRhLT5zbGljZSgwLCBtX2J5dGVz
TG9hZGVkKTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gbV9ieXRlc0xvYWRlZDsKICAgICB9CiAg
ICAgY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCBkN2UyYjc1YTQ1MzEyMGIwMmQ3Yzc0MmQ0NjBmNDZhNGRkNTk5NDhlLi5kNzgx
MTBjYzllZGI5ZGEwMDRkNDE1ODRhYzQ5ZGJhZTAwMjRlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0
dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAg
ICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxu
IiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAwZGNjODg5MDUwNjNkMmViMjcwOWU2MmUzNGU5
NWVhMDczYjI4OGE0Li4xODEwZTcyNWUxODM0OWFiMzY2NTY4ZWUxODUwY2RiYmJlZjk5ZjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTEwMjksNyArMTAy
OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZm
ZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXllciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOworICAgIGF1dG8gZXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Olllcyk7CiAKICAgICAvLyBEb24ndCBzZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2
ZW50IHF1ZXVlIHdpbGwgc2V0IGl0IGluIEdlbmVyaWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFu
ZCBzZXR0aW5nIGl0IGhlcmUKICAgICAvLyB3aWxsIHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMg
ZWxlbWVudCBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLgpAQCAtNjQ0NSw3ICs2NDQ1LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAo
aGFzTWVkaWFDb250cm9scygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xzPiBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOworICAgIGF1dG8gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShk
b2N1bWVudCgpKTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggZmY5NmY0
ZjI0MzViMDk4ZTA2NjYyZjMzY2MyMDVlMDAwYjM3OTE2ZC4uMmE2YTljNjEyMTQ1NGYzMjYxMTM2
ZDE1OGU4ZjU5ZTA5YmUxNGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwCkBAIC00NzMsOSArNDczLDkgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMg
SFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRl
cnM7CiB9CiAKLVJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0
ZVNoYXJlZENlbGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50
OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1
dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIAogICAgIGF1dG8m
IGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgc3dpdGNoIChj
ZWxsQm9yZGVycygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4
IDkxMDM1ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2Yw
NzFmODgyNWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBj
b25zdDsKIAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHls
ZSgpOworICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwog
CiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMVXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3
NmU5Li4zYThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxVdGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09O
KCkgY29uc3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpvcmln
aW4oKSBjb25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcAppbmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0
M2RkNWUzYjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyAr
NjcyLDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1M
RWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVj
dGlvbi5odG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYg
b3duZXJEb2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wg
aW5zaWRlVGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVt
ZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVs
bHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0
b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVU
ZW1wbGF0ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmlu
ZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAg
ICAgICAgICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAw
OGM2ZTUwYjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2Iw
M2UxYjdjMjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6
IDFlbSIuIE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9u
bHkgbmVlZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0g
bGVuZ3Rocy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1
c3QgcGFzcyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFu
ZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1T
aXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0VNUyk7CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNp
emUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5
bGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0
eWxlLT5zZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQz
YWIwZGJmOTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0
MjYyMDJkODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcApAQCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBh
cnNlcjo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lk
IFdlYlZUVFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0
YT4gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRD
dWVEYXRhOjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRp
bWUpOwogICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNl
dENvbnRlbnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1f
Y3VycmVudElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAot
ICAgIG1fY3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUo
Y3VlKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApp
bmRleCA2NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFl
YjE1NTMxZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9y
PE5vZGUqPiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJp
bmcmIG1hcmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNT
aWJsaW5nKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVh
dGVGcmFnbWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBm
cmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAo
bV9kb2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1M
KG1hcmt1cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1f
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBA
QCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9k
ZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpw
YXJlbnROb2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAv
LyBGYWxsIGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2Rv
bUVkaXRvci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBm
cmFnbWVudC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhh
YTIwMDRiMjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNi
MmJjNGNlMGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAg
ICAgICAgIGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RD4obV9jb250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0
ZVN0YWNrKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9h
ZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9h
ZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+
c2V0QXJyYXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlG
b3JBZmZpbmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBh
eWxvYWQtPnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250
ZXh0MmQuZ2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2Nv
bnRleHQpKSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJH
TEJhc2UgPSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwog
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENv
bnRleHRBdHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1
dGVzUGF5bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdl
YkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBo
YSJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xD
b250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVz
UGF5bG9hZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+
c3RlbmNpbCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFs
dWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAg
ICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+
YWRkSXRlbShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gdHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0
ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1v
dmUodHJhY2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShp
bmRleEZvckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3
NC4uYTBjMzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6
Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1h
aW5GcmFtZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9
IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFt
ZUxvYWRSZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45
NDk4ZTc2MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQw
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNo
ZWV0KiBzdHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNy
ZWF0ZSgpOwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5y
dWxlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5n
dGgoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0
LT5pdGVtKGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwog
CiAgICAgICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0
eSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAg
ICAgICAgICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAg
ICAgICAuc2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNl
KCk7CkBAIC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVy
dHlOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5j
b3B5UmVmKCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNh
bFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJv
cGVydHkuY29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1w
bGljaXQobmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhh
c1RleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRD
b250ZW50cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAg
ICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNl
RGF0YUxpc3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNv
bnRleHRGb3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAg
ICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBt
X3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0Lmdl
dCgpKTsKLSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3
U3R5bGVTaGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOwor
ICAgIENTU1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNo
ZWV0LnB0cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9w
YXJzZWRTdHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1
bHQpKTsKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkw
MzBlOWQuLmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAog
ICAgIGNvbnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0
cjxJbnNwZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3Jl
YXRlKGNvbnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNw
ZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGlu
c3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1f
aWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZp
ZXIoKSwgaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4CiAgICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAg
IFJlY29yZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0
aW9ucy5mcmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUo
KTsKLSAgICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29y
ZGluZ09wdGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdl
dCgpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1
cmUsIFdURk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5k
ZWE1YzlhMzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQ
YXRoRnJvbUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAg
ICAgICAgcmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVs
bCkucmVsZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShj
b25zdCBTdHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9
IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNl
KCk7CisgICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5
UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmlu
ZyhzdHJpbmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9m
PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikK
ICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQ
YXRoPiBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpB
cnJheSkucmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUo
KS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBh
dGgtPnNldEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRk
MjMxMTdkNS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNo
aXZlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJM
RShXRUJfQVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgp
OwotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJDb3VsZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVh
ZWJjOWRmNmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2
Mjg0ZTI1OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCkBAIC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAK
ICAgICBzdHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VO
YW1lc3BhY2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlT
dG9yYWdlQXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFn
ZSopIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsg
fQorICAgICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7
IH0KKyAgICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAg
ICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBm
aW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
LCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5h
bDsKIH07CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBV
c2VyQ29udGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3
YTE3ZWZkZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJM
KTsKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhU
VFBSZWZlcnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVm
ZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7
CisgICAgICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0
LCByZWZlcnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50
cmVlKCkudG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1l
TG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcm
IGNvbnRlbnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZy
YW1lT3B0aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNT
YW1lU2NoZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
X2ZyYW1lLnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJl
bnQoKSkgewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZl
cmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250
ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGl0ZW0ucmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRI
VFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwog
ICAgICAgICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNl
MDg1NDhjNDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3Jl
YXRlVW5pcXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxv
YWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwg
Y2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAg
YXV0byBsb2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFs
U2NvcGUsIGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkp
OwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2Fn
ZVJlY2VpdmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3Nh
Z2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3
b3JrZXJHbG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkx
YTI4YWY4NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5
MTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRk
UmVzb3VyY2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZl
KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3Vi
ZnJhbWUgPSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRN
TEFyY2hpdmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291
cmNlKTsKLSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVu
ZChXVEZNb3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0
IFN0cmluZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBh
cnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNv
bnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAg
ICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29u
dGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3
ICsyMTEsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBV
UkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2
ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29s
dmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAg
ICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1
dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmlu
ZGV4IGVlOTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIy
MGRkMWZiNTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNh
Y2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkg
ZXhpc3RzLgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1h
Z2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9u
SUQsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNo
ZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2Uu
cHRyKCksIHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVk
SW1hZ2UtPmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZElt
YWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEs
NyArNTM4LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmln
aW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBh
dXRvIHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwo
KSk7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAg
ICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4
NGQ2Y2ViNTE1NjIyN2I2YTk3ZGUyLi42ODk5NGFjY2JkYmRiZGI1NGNhYjUxYmI0MzNjOGZmNjRk
NGJhMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBA
QCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0g
ZnJhbWUtPnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlz
YWJsZWQoKTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0
aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1
bGVMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsK
ICAgICAgICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIyNDUsNyArMjI0NSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1l
IGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVu
dCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMg
YSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsK
LSAgICBSZWZQdHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICBy
ZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDZkMTQxZWFmZGFmYWNhNzIzNzhhMWUzNGNjOWI4ZWViMjUzMWMxZDMu
LjUxYmE4OTFmZTE3MzMzOTZiN2U4MGY3OWU4MTAxYjE3MWNlODllZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UgogCiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAg
ICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVu
dCgpLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5wdHIoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFjNDBiODBlMmM5NThhN2Y2ZmE3YmU1NjNiOTgw
N2NlMWUyM2FjMDkuLjNhNDY4YjZjNDZlMTM4NzQwZjFiNjhmZDA0MzlmYjMyODUzODNkZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdl
Ojp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3
aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8g
dG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2Fs
bGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4u
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0
aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCmluZGV4IGI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQu
LmI0MjhlNTIyMWFmZTFiMmI3NGQwMmYxYWQ0ZjJiMjU5MGFkNjUwYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTE5MSwxMSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVu
ZEZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlm
IChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVu
ZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6
IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3Ap
OworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZy
b21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4
ODAwZTczODE2NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3ZjdlNDNiY2M1
NzAyYjAyNjFmYTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSwx
NCArODEsMTQgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmluaXRGb3JT
eW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkb2N1
bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlzLCB1cmwp
OworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9j
dW1lbnQodGhpcywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9j
dW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50
LT5jcmVhdGVET01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgc2V0
RG9jdW1lbnQoZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBI
VE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVsZW1lbnQg
PSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gYm9keSA9
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAoIXN0eWxl
LmlzRW1wdHkoKSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVB
dHRyLCBzdHlsZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRl
cnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogbWFy
a2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAgICAgLy8g
Rmlyc3QsIGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAgICAgaWYg
KHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVj
ZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgYXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVu
dCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVjZWRpbmdU
ZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwg
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5n
ZUZvck1hcmtlci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFu
Z2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2Rl
LCBtYXJrZXItPmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRG
b3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAgICAgICAg
c2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0
ZXJuYXRpdmVzKCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIERldGVy
bWluZSB0ZXh0IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0
aGUgdmlzaWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAgTlNBcnJh
eSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICB9CiAK
ICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgotICAg
IFJlZlB0cjxSYW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RN
YXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
YWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRp
bmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJv
b3RDaGlsZENvdW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRl
eHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1h
cmtlci5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGlu
dGVycHJldGF0aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFm
dGVyTGFzdE1hcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVkZjk1Mzgw
YWM5MjFiMTVmMGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJmYmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OkhpZ2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBs
ZXRpb246ZmFsc2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktl
eSgiRmFkZUhpZ2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRvIHBsYXRm
b3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9u
LmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3Jt
Q0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3Jt
QW5pbWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpI
aWdobGlnaHQ6OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWluZWRTZWxm
LT5kaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5
ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1Bbmlt
YXRpb24uZ2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUwMDk0OGY1
MmE1MDA4OWQzNzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2VmOTE5YzJk
NjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikg
ewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUgeCAlbHVc
biIsIHNpemUoKSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGY2
NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3ZTk4Yjk1
NmEwYzBjNWIwNDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBIUlRGRWxl
dmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwg
aW50IGVsZXZhdGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVuc2lnbmVk
IHN0YXJ0RnJhbWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2lnbmVkIHN0
b3BGcmFtZSA9IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQdHI8QXVk
aW9CdXM+IHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVC
dWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJlZlB0cjxB
dWRpb0J1cz4gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGlu
ZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpj
cmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOworICAgIGF1
dG8gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKICAg
ICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5l
bChBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1
bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIu
Y3BwCmluZGV4IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEuLjg5Nzdm
Mzk4NjlkNmI2NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVk
IG51bWJlck9mU291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV3Jh
cCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJj
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
MSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1ZGlvQnVz
OjpjcmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgogICAgIGJ1
cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNkZDUxMDE1
YzE2Mjc4NGNkMjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5NTNmZTlm
NGJhYTlhNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAg
LTM1Miw3ICszNTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vycm9yT2Nj
dXJyZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBh
dWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1
ZSk7CisgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9j
aGFubmVsU2l6ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVS
YXRlKTsKIAogICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExl
ZnRCdWZmZXJzLmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmlu
ZGV4IDJhZjUxOGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0MTE1YWMy
OTZlODJmMzNiZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0xODAs
NyArMTgwLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhm
bG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENv
dW50ID0gbWl4VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUg
QXVkaW9CdXMgd2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxB
dWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVt
YmVyT2ZGcmFtZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0No
YW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRl
KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKSk7
IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUgbWl4VG9N
b25vIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCAxZmRm
ZWNkYTcxYzYwNGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3ZTUwYjQw
NGNmZDI2MzRmZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJ
Y29uPiB7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShI
SUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0
YXRpYyBSZWY8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEljb24oaEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDllZDJkZjI5
YTguLjEzZjE4Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6
IHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAgICAgV2Vi
VlRUCiAgICAgfTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNy
ZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKaW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBkZDY5NC4u
YTkzNTUwMDM4OWFiZGIzZDE0ZTc2ZWQ4N2QzM2RhNDczYTZmNjE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCkBAIC0xODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAg
ICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAg
ICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkld
CiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2Yo
VUNoYXIpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6
OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNp
emUsIDEpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwg
dHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAtMTkwOCw3
ICsxOTA4LDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYKIAotICAg
IFJlZlB0cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOworICAgIGF1
dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9v
d25lciwgYXZSZXF1ZXN0KTsKICAgICBtX293bmVyLT5tX3Jlc291cmNlTG9hZGVyTWFwLmFkZChh
dlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2Fk
aW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyMTI4
NzIxNGEzYmY1Y2UxNDA4MDQ1NTBkOWFlZWMzOGEzMDYxMWE5Li4xYTRiMTgxYWFjYjg5NjMwMDVj
Y2U1YWJkODczM2FjMWMyZDkxNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM5LDkg
KzM5LDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJp
dmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBw
YXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0
RW5hYmxlZChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGQwNTc4NWNh
ZTM2MTZkZmZiZTk5MzllMDNkYTUxOTNjNjkxNDk1NGYuLjMxMDc4MGMzYWNhYmQ4MTU1NWMzZDAx
OWUzYjQ4YzZjZjc3N2E5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc0OSw3ICsx
NzQ5LDcgQEAgc3RhdGljIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YShBVkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdCAqcmVxdWVzdCwgQXIKIAogICAgICAgICBBU1NFUlQoc3RhcnQg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CiAgICAgICAgIEFTU0VSVChlbmQg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7Ci0gICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gcmVxdWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGlu
dD4oc3RhcnQpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuZCkpOworICAgICAgICBhdXRvIHJlcXVlc3Rl
ZEtleURhdGEgPSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGlj
X2Nhc3Q8aW50PihlbmQpKTsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXF1ZXN0ZWRLZXlEYXRhLT5kYXRh
KCkgbGVuZ3RoOnJlcXVlc3RlZEtleURhdGEtPmJ5dGVMZW5ndGgoKV0pOwogICAgICAgICBbZGF0
YVJlcXVlc3QgcmVzcG9uZFdpdGhEYXRhOm5zRGF0YS5nZXQoKV07CiAgICAgfQpAQCAtMTgxNyw4
ICsxODE3LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAg
ICBSZWZQdHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7Ci0gICAgbV9yZXNv
dXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNl
TG9hZGVyKTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKKyAgICBtX3Jlc291cmNlTG9hZGVyTWFwLmFk
ZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIuY29weVJlZigp
KTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLmgKaW5kZXggMGMwNGFmOTA0MzAyOTFmMTJhMTIxOWViM2M0MzU4Y2NhNGYyYmQxYS4uMTY4
MTI3NTllMGExYWVmY2Y0OGJlZjFhNDM2NGQ1ODRjOTE4MWRjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNTMsNyArNTMs
NyBAQCBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0
ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNy
ZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7
CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMDg0YzkwZDVmZDc3ZTY2ZWJkMmFl
ODRlMzE2N2RmZDllOTM3M2NjLi4yYjM3ZWM3ZGZlYWI0NjVmMTFmN2E1MDdlMDg4OTJlZDk3ODkw
YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjcHJh
Z21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKIAotUmVm
UHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCitSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNs
aWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gbWVkaWFTb3Vy
Y2VQcml2YXRlID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50
LCBjbGllbnQpKTsKLSAgICBjbGllbnQtPnNldFByaXZhdGVBbmRPcGVuKCptZWRpYVNvdXJjZVBy
aXZhdGUpOworICAgIGF1dG8gbWVkaWFTb3VyY2VQcml2YXRlID0gYWRvcHRSZWYoKm5ldyBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7CisgICAgY2xpZW50LT5zZXRQ
cml2YXRlQW5kT3BlbihtZWRpYVNvdXJjZVByaXZhdGUuY29weVJlZigpKTsKICAgICByZXR1cm4g
bWVkaWFTb3VyY2VQcml2YXRlOwogfQogCkBAIC03Niw3ICs3Niw3IEBAIE1lZGlhU291cmNlUHJp
dmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZl
cihjb25zdCBDCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VCdWZm
ZXItPnNldENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgb3V0
UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlcjsKKyAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVm
ZmVyLmNvcHlSZWYoKTsKICAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUobmV3U291
cmNlQnVmZmVyKSk7CiAKICAgICByZXR1cm4gT2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4MzAwZGMzYjZlMzllOGNh
YjE0NWFlYmEyMTc2ZTk4MTFkZmM5ODcxLi5mMTc2MjYyMzRiOWI1YTBhZGU4YzI3NTQ3YTQ0NjU3
YTQ4MmFjZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakNFcnJvckNsaWVudCB7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQz4gY3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKICAgICB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNl
KCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBhOTlmZWI3ZjY1M2M5
OTExNmQwZjMzOWVjMzc3NWZjMjBjZWYwYmVkLi4xYzU2NjM2NjBkOWFlZGNjODllNmI1MjMzYjhm
YzRhYjNkNmVkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNDMwLDcgKzQzMCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBQQUw7CiAKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1l
ZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXNjcmlw
dGlvbkFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHN0YXRpYyBSZWY8
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KICAg
ICB2aXJ0dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygpIHsgfQogCiAgICAgQXRvbWljU3Ry
aW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb2RlYzsgfQpAQCAtNDg0LDkg
KzQ4NCw5IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmlj
YXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqLCBDRlN0CiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+
YnVmZmVyV2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyhwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyhwYXJlbnQpKTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVu
dCkKQEAgLTU1MSwxNiArNTUxLDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAKICAgICAgICAgaWYg
KFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3Vh
bF0pIHsKICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBSZWZQ
dHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IHZpZGVvVHJhY2sgPSBWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAg
ICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrOwotICAgICAgICAgICAgbV92aWRlb1Ry
YWNrcy5hcHBlbmQodmlkZW9UcmFjayk7CisgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsK
KyAgICAgICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAg
ICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwogICAgICAgICAg
ICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJh
Y2spOwogICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJh
Y3RlcmlzdGljQXVkaWJsZV0pIHsKICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0g
ICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGF1
ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRy
YWNrLCB0aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrOwotICAgICAg
ICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFjayk7CisgICAgICAgICAgICBhdXRv
IGF1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
KHRyYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlS
ZWYoKTsKKyAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFj
aykpOwogICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDOjpjcmVhdGUodHJhY2spOwogICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBl
bmQoaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGY0NTZmMGE5
NmYyZTJiYzI2MmRlYWZjMzlmNTMyZGI5ZDViMDZlOGYuLjVkZDdlNjIzMGZlOGUwNWI0ZmYzNDVl
M2IxOTQxNGFiMDkxZjNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDIsOSArNDIs
OSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRl
QVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVu
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgYm9vbCBzZWxlY3Rl
ZCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDgwY2ZjNGZhYzM0NWM5MmVjZDYx
NzM3ZmM5MjU0ZGNkOGI3NTViZjguLjkxZGI2NTQxYzRiMTIzYWViMzQ2ZWEzOTJhZTA0Mzg0MGQy
NDM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTcyNCw5ICs3MjQsOSBAQCBpbnQgVGlsZUNvbnRyb2xs
ZXI6OnJpZ2h0TWFyZ2luV2lkdGgoKSBjb25zdAogICAgIHJldHVybiAobV9tYXJnaW5TaXplICog
bV9tYXJnaW5FZGdlcy5yaWdodCgpKSAvIHRpbGVHcmlkKCkuc2NhbGUoKTsKIH0KIAotUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJ
bnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBU
aWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBU
aWxlR3JpZCYgZ3JpZCkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllciA9IG1f
dGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJl
Y3Quc2l6ZSgpKTsKKyAgICBhdXRvIGxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29t
cGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxl
ZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0aWxlUmVjdC5zaXplKCkpOwogCiAgICAgbGF5ZXIt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24o
dGlsZVJlY3QubG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAppbmRleCBhZTE5YjhjNTE3MWZkNTc0MWE1NTE1
Zjc2YTY5ODg2NjYyZmFmMDdjLi5kYjlkNDUzMTA3YmQ0OTAwNTE2NTIwZDVhMDY3NTIwYWMyNjZh
NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBm
aW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAgdm9pZCB1cGRhdGVUaWxlQ292ZXJh
Z2VNYXAoKTsKIAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVRpbGVMYXllcihj
b25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVh
dGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CiAKICAgICBjb25zdCBUaWxl
R3JpZCYgdGlsZUdyaWQoKSBjb25zdCB7IHJldHVybiAqbV90aWxlR3JpZDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZM
YXllclRyZWVIb3N0LmNwcAppbmRleCAyYTlkOTFhZTFjNzhkMWQ3MzVjZTQ5MWIzYWRhOWFhODBm
Njc0NDNlLi4xYWJhNDZmNGMzYmNhNWQxYjJhYzNjMGM0NTVhMWQ5YjZlZTA4MTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9D
QUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIENBQ0ZMYXllclRy
ZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJu
IGF2YWlsYWJsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3Qg
PSBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gQ0FDRkxheWVy
VHJlZUhvc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGF2YWlsYWJs
ZSA9IGZhbHNlOwpAQCAtMTI1LDcgKzEyNSw3IEBAIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
Q0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRlZENvbXBv
c2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxD
QUNGTGF5ZXJUcmVlSG9zdD4gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKKyAgICBhdXRvIGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAg
ICAgaWYgKCFob3N0KSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBsYXll
ciB0cmVlIGhvc3QgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLiIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQppbmRleCA0MDZlMDg1ZmZmMWYxOWE5
ZGJmZGI4MWM2NDkzMWY0NjhhNGY5Nzk1Li5mY2MyNzZkYmUxNDI5NTM4MWI0MzMyNWMwY2MyNmRm
ZDQ4NTM0YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCkBAIC01NSwxMSArNTUsMTEgQEAg
UmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIEdQVUJ1ZmZlckRlc2NyaXB0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBw
dHIpIHsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRl
cyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZvaWQqIHB0cikgewogICAg
ICAgICBHaWdhY2FnZTo6YWxpZ25lZEZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKICAg
ICB9KTsKICAgICBhcnJheUJ1ZmZlci0+cmVmKCk7Ci0gICAgQXJyYXlCdWZmZXIqIGFycmF5QnVm
ZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5nZXQoKTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlC
dWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLnB0cigpOwogICAgIC8vIEZJWE1FOiBEZWZhdWx0
IHRoaXMgTVRMUmVzb3VyY2VPcHRpb25zLgogICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbXRs
QnVmZmVyID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkKICAgICAgICAgbmV3QnVm
ZmVyV2l0aEJ5dGVzTm9Db3B5OmFycmF5QnVmZmVyLT5kYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggOTQ3NjhkYzFhOTJhMmY2NGJm
MmNlMjEyNjg4MTRhYTI5YTA5ZjZjZi4uZGU3OGRiNjA3ZmExMWY3YTU4ZGVmZjRhOTgyNDIzYmI4
YmE4ZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTczNCw5ICs3MzQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dXBkYXRlVHJhY2tzKCkKICAgICAgICAgICAgIENSRUFURV9UUkFDSyh2aWRlbywgVmlkZW8p
CiAgICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIEdTVF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VN
ZWRpYVNvdXJjZSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgICAgIFJlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBzdHJlYW0pOwotICAg
ICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICAgICAg
bV9wbGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICAgICAgYXV0byB0cmFjayA9
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsr
LCBzdHJlYW0pOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2su
Y29weVJlZigpKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0
KCkpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgR1NUX1dBUk5JTkcoIlVu
a25vd24gdHJhY2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFtICVzIiwgc3RyZWFtSWQudXRmOCgpLmRh
dGEoKSk7CkBAIC04OTQsMTAgKzg5NCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7
CisgICAgICAgIGF1dG8gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09
IHRyYWNrLT5pZCgpKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNr
KTsKLSAgICAgICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soKnRyYWNrKTsKKyAgICAgICAgbV92
aWRlb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxh
eWVyLT5hZGRWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFs
aWRWaWRlb1RyYWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyPiB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFr
ZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAg
ICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7CiAgICAgICAgIG1fYXVkaW9U
cmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7CiAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRpb1Ry
YWNrKCp0cmFjayk7CkBAIC0xMDI5LDkgKzEwMjksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUZXh0KCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFj
ayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOwotICAg
ICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOworICAgICAgICBtX3RleHRUcmFj
a3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRk
VGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFsaWRUZXh0VHJh
Y2tzKHZhbGlkVGV4dFN0cmVhbXMpOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICBjYXNlIEdTVF9NRVNTQUdFX0VMRU1FTlQ6CiAgICAgICAgIGlmIChnc3RfaXNfbWlzc2lu
Z19wbHVnaW5fbWVzc2FnZShtZXNzYWdlKSkgewogICAgICAgICAgICAgaWYgKGdzdF9pbnN0YWxs
X3BsdWdpbnNfc3VwcG9ydGVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1pc3NpbmdQbHVnaW5DYWxs
YmFjayA9IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpj
cmVhdGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1l
ZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1
Z2luQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICBhdXRvIG1pc3NpbmdQbHVnaW5DYWxsYmFj
ayA9IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpjcmVh
dGUoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1lZGlh
UGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1Z2lu
Q2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgR1NUX0lORk8oImdvdCBtaXNzaW5nIHBsdWdpbmcgaW5zdGFsbGF0
aW9uIGNhbGxiYWNrIGluIGRlc3Ryb3llZCBwbGF5ZXIgd2l0aCByZXN1bHQgJXUiLCByZXN1bHQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMxMywxMCArMTMxMywxMCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hhbmdlUGlwZWxp
bmVTdGF0ZShHU1RfU1RBVEVfUkVBRFkpOwogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+
Y2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5DYWxsYmFja3MuYXBwZW5kKG1pc3Np
bmdQbHVnaW5DYWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJh
Y2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2suY29weVJlZigpKTsKICAgICAgICAgICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGRldGFpbChnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9n
ZXRfaW5zdGFsbGVyX2RldGFpbChtZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBkZXNjcmlwdGlvbihnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3Jp
cHRpb24obWVzc2FnZSkpOwotICAgICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwg
U3RyaW5nOjpmcm9tVVRGOChkZXNjcmlwdGlvbi5nZXQoKSksICptaXNzaW5nUGx1Z2luQ2FsbGJh
Y2spOworICAgICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpmcm9t
VVRGOChkZXNjcmlwdGlvbi5nZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShH
U1RSRUFNRVJfTVBFR1RTKQpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNl
Y3Rpb24KICAgICAgICAgICAgIGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSogc3RyZWFtID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKj4oZ19wdHJfYXJyYXlfaW5kZXgocG10
LT5zdHJlYW1zLCBpKSk7CiAgICAgICAgICAgICBpZiAoc3RyZWFtLT5zdHJlYW1fdHlwZSA9PSAw
eDA1IHx8IHN0cmVhbS0+c3RyZWFtX3R5cGUgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIEF0
b21pY1N0cmluZyBwaWQgPSBTdHJpbmc6Om51bWJlcihzdHJlYW0tPnBpZCk7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJh
Y2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKKyAg
ICAgICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1By
aXZhdGU6Ok1ldGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEYXRhLCBwaWQpOwogCiAg
ICAgICAgICAgICAgICAgLy8gNC43LjEwLjEyLjIgU291cmNpbmcgaW4tYmFuZCB0ZXh0IHRyYWNr
cwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5l
d0xvY2F0aW9uKTsKICAgICAgICAgY29udmVydFRvSW50ZXJuYWxQcm90b2NvbChuZXdVcmwpOwog
Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOwogICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4t
PmNhblJlcXVlc3QobmV3VXJsKSkgewogICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVs
aW5lKCksICJOZXcgbWVkaWEgdXJsOiAlcyIsIG5ld1VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCmluZGV4IDg5N2YyOTIwMjVkZDRhYWMyNjVkZDliZGRmMmI3NzgzODZjYjliNjEuLjM1
NjM1MTM0MmYwYTU1MTk3OTk4ZmU3MTgxYjljOGE1NTNmZGM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg3OCw3ICs4
NzgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRlcmluZ0NhbkJl
QWNjZWxlcmF0ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsK
IAotICAgIFJlZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOworICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdT
dHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRl
eCAwMjZhMjA1NzNlYzMyYWRiMmEzYmM4YTY4NjAyM2VhODBhZDgzMTA4Li5kMDkyOTIwYzI2YmQ2
MGU5ODNiZmExNDM2NmQ1NjM5ZWZmZmNlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtO
ZXdTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU2FtcGxlR1N0cmVhbWVyPiBtZWRpYVNhbXBsZSA9IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3By
ZXNlbnRhdGlvblNpemUsIHRyYWNrSWQoKSk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IFdlYkNv
cmU6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3ByZXNl
bnRhdGlvblNpemUsIHRyYWNrSWQoKSk7CiAKICAgICBHU1RfVFJBQ0UoImFwcGVuZDogdHJhY2tJ
ZD0lcyBQVFM9JXMgRFRTPSVzIERVUj0lcyBwcmVzZW50YXRpb25TaXplPSUuMGZ4JS4wZiIsCiAg
ICAgICAgIG1lZGlhU2FtcGxlLT50cmFja0lEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAg
LTQ1Niw3ICs0NTYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdS
ZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgbWVkaWFTYW1wbGUtPmFwcGx5UHRz
T2Zmc2V0KE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CiAgICAgfQogCi0gICAgbV9zb3VyY2VCdWZm
ZXJQcml2YXRlLT5kaWRSZWNlaXZlU2FtcGxlKCptZWRpYVNhbXBsZSk7CisgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlLT5kaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlLmdldCgpKTsKIH0KIAog
dm9pZCBBcHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCmlu
ZGV4IDdjYmY1NGViM2MzNWVhMTM5YzBlNzA2MjlkZjhkYWJkYjU0NWQwN2UuLjZlNGI2NGZiNDIw
MGJiMDkwYzA1NTg3N2JjOTZiNTEyZDU1MWY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCkBAIC00NCw5ICs0NCw2IEBAIGJvb2wg
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmll
dywgdW5zaWduZWQmIG9mZnNlCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHN5c3RlbUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2
KTsKLSAgICBpZiAoIXN5c3RlbUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZz
ZXQgKz0gMTY7CiAKICAgICBtX3N5c3RlbUlELnJlc2l6ZSgxNik7CkBAIC02Myw4ICs2MCw2IEBA
IGJvb2wgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmll
dyYgdmlldywgdW5zaWduZWQmIG9mZnNlCiAgICAgICAgICAgICBhdXRvJiBjdXJyZW50S2V5SUQg
PSBtX2tleUlEc1trZXlJRF07CiAgICAgICAgICAgICBjdXJyZW50S2V5SUQucmVzaXplKDE2KTsK
ICAgICAgICAgICAgIGF1dG8gcGFyc2VkS2V5SUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgMTYpOwotICAgICAgICAgICAgaWYgKCFwYXJzZWRLZXlJRCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBvZmZzZXQgKz0gMTY7CiAgICAgICAgICAgICBt
ZW1jcHkoY3VycmVudEtleUlELmRhdGEoKSwgcGFyc2VkS2V5SUQtPmRhdGEoKSwgMTYpOwogICAg
ICAgICB9CkBAIC03Niw5ICs3MSw2IEBAIGJvb2wgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNlCiAgICAgaWYg
KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0IDwgZGF0YVNpemUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBhdXRvIHBhcnNlZERhdGEgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgZGF0YVNpemUpOwotICAgIGlmICghcGFyc2VkRGF0YSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCiAgICAgb2Zmc2V0ICs9IGRhdGFTaXplOwogCiAgICAgbV9kYXRhLnJlc2l6ZShkYXRh
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCmluZGV4IDU3YTU2OTRkNWVhZTEzOWVl
ZDI4NTk1YTEzMjMwNmJjNWM3NWEwNGYuLjJjOTRmNGQzY2MxYjc2MTc1ZDkyMzg4NjI2ZjE4MGI5
Y2I4MDIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCkBAIC02NCw5ICs2NCw2IEBA
IGJvb2wgSVNPVHJhY2tFbmNyeXB0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWdu
ZWQmIG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBrZXlJREJ1ZmZl
ciA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFrZXlJREJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAg
bV9kZWZhdWx0S0lELnJlc2l6ZSgxNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAKaW5kZXggNjY3ZjIzMDE3MjM1OTE0NjMxN2ZjODYxYTI3ZWM4NDA2YmUwNzQxZi4uMDFhMjc0
MjQzOWMyMjdmMjIyYjhjZWIyY2E2MGEzMWZjOTRmZjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmNwcApAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyBGaWx0ZXJPcGVyYXRp
b25zIGFwcGx5RmlsdGVyQW5pbWF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNv
bnN0CiAgICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChibGVuZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3Ag
OiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVu
ZCh0b09wID8gdG9PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21P
cCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBw
ZW5kKGZyb21PcCA/IGZyb21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcAppbmRleCBjNjZlNDYzNjIwMDI4NjUwYjQ1YzUwNjExYmIyNmRjNDQyZTI3YzhmLi44Y2M1
OGQ2MWQ5YjUwMzc5N2YwNzI3MjVlMGM2ZDc4M2RlNWQxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTYwLDkgKzYwLDkgQEAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmYKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CisgICAgYXV0byB0ZXh0dXJlID0gQml0bWFw
VGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwg
bV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0
aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPigqdGV4dHVyZSkuY29weUZyb21FeHRlcm5hbFRleHR1
cmUobV90ZXh0dXJlSUQpOworICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1
cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RG
TW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5jcHAKaW5kZXggZjk0NGYwN2E1OGUyYWRkZGIyZGExOTI1YTM1M2Y3M2JlNDRl
MjgyZi4uYjE0NTJmZTJiNjY3YmRlZjMxYThiYzljZTMxZjRlNmQyZWM3YjM4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCkBAIC04NywxMSArODcsMTEgQEAgVHJhbnNm
b3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRp
b25zKGNvbnN0IFRyYW5zZm8KICAgICAgICAgaWYgKGJsZW5kZWRPcGVyYXRpb24pCiAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3BlcmF0aW9uKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVudGl0
eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIGF1dG8gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlv
biA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9w
ZXJhdGlvbikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGZyb21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uIDogaWRlbnRpdHlP
cGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZy
b21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9wZXJhdGlvbikp
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDg2
MGRhMzg2MzhlZjUyYTkwZWQxZmQ4OWI1MmRlZTk2NTQzMDE1M2MuLjA2YzBhMTlmMzBkMzlkMTkx
OWQyYjRjZmQ0MWQ0NDdlYzA1NDIxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBA
IC0xNDQsOCArMTQ0LDggQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNv
ZGVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gQ29weSBvdXQgUE5HIGRhdGEgdG8gYSBz
ZXBhcmF0ZSB2ZWN0b3IgYW5kIHNlbmQgdG8gdGhlIFBORyBkZWNvZGVyLgogICAgIC8vIEZJWE1F
OiBTYXZlIHRoaXMgY29weSBieSBtYWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBh
bgogICAgIC8vIG9wdGlvbmFsIG9mZnNldC4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdE
YXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdl
T2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAg
bV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxsRGF0YVJlY2VpdmVk
KCkpOworICAgIGF1dG8gcG5nRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRh
dGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5t
X2ltYWdlT2Zmc2V0KTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRh
LmdldCgpLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAogdm9pZCBJQ09JbWFnZURlY29kZXI6
OmRlY29kZShzaXplX3QgaW5kZXgsIGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a0JveC5jcHAKaW5kZXggZTU0YmEzNzZkYTYxNjY0NTdjMjMyODk3MTgxNGNmZjM4NWZhNmUxOC4u
MTAwOTEyYjMyOTMzM2ZjM2ViYzMzYzUxN2JiMmQ0NzM3NmI4ZDI2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC05
NywxMSArOTcsMTEgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25C
b3goQXJyYXlCdWZmZXIqIGRhdGEpCiAgICAgc2l6ZV90IG9mZnNldCA9IDE2OwogCiAgICAgd2hp
bGUgKG9mZnNldCA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc3Vi
QnVmZmVyID0gZGF0YS0+c2xpY2Uob2Zmc2V0KTsKLSAgICAgICAgaWYgKE1vY2tCb3g6OnBlZWtU
eXBlKHN1YkJ1ZmZlci5nZXQoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCisgICAgICAgIGF1
dG8gc3ViQnVmZmVyID0gZGF0YS0+c2xpY2Uob2Zmc2V0KTsKKyAgICAgICAgaWYgKE1vY2tCb3g6
OnBlZWtUeXBlKHN1YkJ1ZmZlci5wdHIoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVy
LmdldCgpKTsKKyAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5wdHIoKSk7
CiAgICAgICAgIG9mZnNldCArPSB0cmFja0JveC5sZW5ndGgoKTsKICAgICAgICAgbV90cmFja3Mu
YXBwZW5kKHRyYWNrQm94KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCmluZGV4IDJhOGIyNGJkMmY5MjFlMWMxZjM1MDAyMjI3N2E4MzM4N2VjMzdhZmUuLjQy
NTg4OTdiZTZiZTM5MTFlNjBiZWRhYzEwMWYzM2UwOTliY2QxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgUmVmPE1lZGlhU2Ft
cGxlPiBNb2NrTWVkaWFTYW1wbGU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKIAog
Y2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3Jl
YXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja01l
ZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tNZWRpYURlc2NyaXB0
aW9uPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW9ja01lZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFE
ZXNjcmlwdGlvbigpID0gZGVmYXVsdDsKIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmNvZGVjKCk7IH0KQEAgLTExOCw5ICsxMTgsOSBAQCBj
bGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9u
IHsKICAgICBNb2NrVHJhY2tCb3ggbV9ib3g7CiB9OwogCi1SZWZQdHI8TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU+IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNl
UHJpdmF0ZSogcGFyZW50KQorUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVudCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVu
dCkpOwogfQogCiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQpAQCAtMTQyLDE3ICsxNDIsMTcgQEAg
dm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYmIGRhdGEpCiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IHJl
c3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZDsKIAogICAg
IHdoaWxlIChtX2lucHV0QnVmZmVyLnNpemUoKSAmJiByZXN1bHQgPT0gU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9p
bnB1dEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6
cGVla0xlbmd0aChidWZmZXIuZ2V0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsK
KyAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0
cigpKTsKICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlw
ZShidWZmZXIuZ2V0KCkpOworICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBlZWtUeXBl
KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmICh0eXBlID09IE1vY2tJbml0aWFsaXphdGlvbkJv
eDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9
IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgTW9ja0lu
aXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLnB0
cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoaW5pdEJv
eCk7CiAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBNb2NrU2FtcGxlQm94Ojp0eXBlKCkpIHsK
LSAgICAgICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZm
ZXIuZ2V0KCkpOworICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2Ft
cGxlQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlU2FtcGxlKHNhbXBs
ZUJveCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6UGFyc2luZ0ZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAppbmRleCBiM2Y4YWY0MmEyZjQyYWViOWVkZWNlNmFiMzNiNWU4N2E1MjcyNTI5Li4x
NTc2MDA1M2NiZjBmMDUyOTQzMzhjNDdmMjYxMTUyM2JhOTgyNGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlOwogCiBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBT
b3VyY2VCdWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOworICAgIHN0
YXRpYyBSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlKik7CiAgICAgdmlydHVhbCB+TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAg
IHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJh
Y2tzLmgKaW5kZXggYjQ2Y2E2YjYwMTFiMDIyOTBkNmI4MzBmYmUwYjYwM2ZkMmRiYWQwYy4uZjRj
MDA5MjI5NDg4MWE0ZmFlZjFjMGRmNzUyMDgzNGM2OWUyMjAyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlIHsKIAogY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVGV4dFRy
YWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgTW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1v
Y2tUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0
dWFsIH5Nb2NrVGV4dFRyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRv
bWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNzIsNyArNzIsNyBAQCBj
bGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
IHsKIAogY2xhc3MgTW9ja1ZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFZpZGVvVHJhY2tQcml2
YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tWaWRlb1RyYWNrUHJpdmF0ZT4g
Y3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9j
a1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVmlkZW9UcmFj
a1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2Nr
VmlkZW9UcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAppbmRleCBkN2MxZTVmYWEwZGU1MDc4M2JmYjQ3NzI0YmY1OTkxOWFi
NjZmOTFkLi5jNDlmNDIxNzgxMjBhNGMzZDJiNGQzMDI2ODRiMmQ4M2FmMWY0NmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMDUsNyArMzA1LDcg
QEAgdm9pZCBGb3JtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgogUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6
OmNyZWF0ZSgpOworICAgIGF1dG8gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS0+bV9hbHdheXNTdHJlYW0pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTMxOSw3ICszMTksNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1f
aWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRhdGE7
CisgICAgcmV0dXJuIFdURk1vdmUoZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
U3RvcmFnZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCmluZGV4IDYyNGNjYzVlMTI4MDcxZDc0MTdiOGQxNmU0
ZTg1NGZkNzUzYWVlNjkuLjhlNzczM2M1N2FkNTBkMWVlNjY0NWJkY2I5YTMyMzhjY2RkN2RlNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2ll
U3RvcmFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvb2tpZVN0b3JhZ2VPYnNlcnZlciA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRlKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKik7CisgICAgc3RhdGljIFJlZjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hU
VFBDb29raWVTdG9yYWdlICopOwogICAgIENvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29r
aWVTdG9yYWdlICopOwogICAgIH5Db29raWVTdG9yYWdlT2JzZXJ2ZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2Jz
ZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0
b3JhZ2VPYnNlcnZlci5tbQppbmRleCA5MTgxNzFjNmIwNzA3YWEwODAwZTliOGRmMjk0YjQxZTFj
Zjc4OWQwLi41ZDI1YWUxMGQyZjFhYmE3MzgzYjcwMzYyMTZlMzc3OTE2NzJlNDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VP
YnNlcnZlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nv
b2tpZVN0b3JhZ2VPYnNlcnZlci5tbQpAQCAtNzQsOSArNzQsOSBAQCBAZW5kCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFn
ZU9ic2VydmVyOjpjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKK1Jl
ZjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5T
SFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CiB9CiAK
IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Q29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggYWE5
NTczN2JlNzlhYmQxNGYxOWJhMjFiOTIyY2NiMTAxNjUwYzQ4OC4uMGY2ZWExOTc4N2E0NmM3NDc0
YjQxNjQ4ZjI0NTg0OTU3YjAwZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVz
c2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBpZiAoZmlsZU1vZGlm
aWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBi
bG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpLT5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CisgICAgICAg
IGlmIChhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKSkgewogICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNv
dXBNZXNzYWdlKSBjb25zdAogICAgICAgICAgICAgICAgIGJvZHlTaXplICs9IGJ5dGVzLnNpemUo
KTsKICAgICAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2Ut
PnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBieXRlcy5kYXRhKCksIGJ5dGVz
LnNpemUoKSk7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShmaWxlRGF0YS5maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxlRGF0YS5maWxlbmFt
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlw
aGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcAppbmRleCBjOTA4NjkzMDE2MTg1NThiNjBlMWYzMDQ4MThkYmRkOWU1MWRi
YzEyLi4yZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYwNmJiNDhiN2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhl
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCkBAIC0xNjksMTQgKzE2OSwxNCBAQCBjbGFzcyBIeXBoZW5hdGlvbkRp
Y3Rpb25hcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IHsKIAog
ICAgIHZpcnR1YWwgfkh5cGhlbmF0aW9uRGljdGlvbmFyeSgpID0gZGVmYXVsdDsKIAotICAgIHN0
YXRpYyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKKyAgICBzdGF0
aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0
cmluZyYgZGljdFBhdGgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNy
ZWF0ZShjb25zdCBDU3RyaW5nJiBkaWN0UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOwogICAgIH0K
IAogICAgIEh5cGhlbkRpY3QqIGxpYmh5cGhlbkRpY3Rpb25hcnkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBh
YzdjYjY2N2JjZThhMjcxOGJhYzdkZjE2ZTZiYzQ5MThkNDNkYjc2Li44ZTc0YjA3NjkzNWFhMGRj
Y2Q3ZWE4MzdhY2U2N2IzY2U3Y2UxNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2lu
KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVu
dVdpbihjbGllbnQpKSkKIHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVXaW46OnBv
cHVwTWVudSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9w
dXAucHRyKCk7CiB9CiAKIGJvb2wgU2VhcmNoUG9wdXBNZW51V2luOjplbmFibGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCBl
NTA2MGI4YWI5YjlmZWFmMzViZmI4YjM3YjE5YTNjZDE5NTY1MTFlLi45YTdhZTg4MjNjNWM0M2Zm
OTQ2YTYxNTdhZmM1N2I1OWRjMTU0M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNlYXJj
aFBvcHVwTWVudVdpbiA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewogICAgIHZpcnR1YWwgYm9v
bCBlbmFibGVkKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudVdpbj4gbV9wb3B1
cDsKKyAgICBSZWY8UG9wdXBNZW51V2luPiBtX3BvcHVwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDUyYjRkNzQ1Yjk5NzMzYWM2YWYw
YjViNzJjMzYwYjZiMmQ0YjBhOWIuLmVlMWUyMjY4MzFjZjY0OTdjMDRkZjNiNTA3N2FkNzU3OTg4
NWU4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTU2Miw3ICs1NjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJh
ZGl1cyhSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlckJveCYgYm94KQogc3RhdGljIHZvaWQgYXBw
bHlDb21tb25CdXR0b25QYWRkaW5nVG9TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1
bWVudCgpOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKKyAgICBh
dXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUyk7CiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxp
bnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBkb2N1bWVudC5yZW5kZXJTdHls
ZSgpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFj
dG9yKCkpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAs
IHBpeGVscykpOwogfQpAQCAtOTE3LDEyICs5MTcsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWlu
dEkKICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0
IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zm
c2V0OwotICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3Jl
YXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxS
ZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOworICAgIGF1dG8gc3Ryb2tlR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0p
OwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigweDhkLCAweDhk
LCAweDhkKSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigw
eGVlLCAweGVlLCAweGVlKSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1
LCBDb2xvcigweGVlLCAweGVlLCAweGVlKSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgxLjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKLSAgICBjb250ZXh0LnNldFN0cm9r
ZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQu
c2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShzdHJva2VHcmFkaWVudCkpOwogCiAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSkpOwogCkBAIC05MzcsMTAgKzkzNywx
MCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3VuZGVkQ29ybmVyUmFkaXVz
LCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVy
UmFkaXVzKSk7CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0ID0gcHJvZ3Jlc3NCYXJI
ZWlnaHQgLyAyLjsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9KTsKKyAg
ICBhdXRvIHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJE
YXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAu
NSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBl
ckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9KTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC4wLCBDb2xvcigxMzMsIDEzMywgMTMzLCAxODgpKTsKICAgICB1cHBlckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcigxOCwgMTgsIDE4LCA1MSkpOwotICAgIGNvbnRleHQuc2V0
RmlsbEdyYWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZSh1cHBlckdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwg
cmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVpZ2h0KSk7CiAKQEAgLTk0OSwyMCArOTQ5LDIw
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIC8vIDIpIERyYXcgdGhlIHByb2dy
ZXNzIGJhci4KICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gY2xhbXBUbyhyZW5kZXJQcm9ncmVz
cy5wb3NpdGlvbigpLCAwLjAsIDEuMCk7CiAgICAgICAgIGRvdWJsZSBiYXJXaWR0aCA9IHBvc2l0
aW9uICogcmVjdC53aWR0aCgpOwotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhckdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKKyAgICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC4wLCBDb2xvcigxOTUsIDIxNywgMjQ3KSk7CiAgICAgICAgIGJhckdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwogICAgICAgICBiYXJH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDksIENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAg
ICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUxLCBDb2xvcigzNiwgMTE0LCAyMTApKTsK
ICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBDb2xvcigzNiwgMTE0LCAy
MTApKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDU3LCAx
NDIsIDI0NCkpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92
ZShiYXJHcmFkaWVudCkpOwogCi0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyU3Ryb2tlR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0p
OworICAgICAgICBhdXRvIGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDk1LCAxMDcsIDE4MykpOwogICAgICAgICBiYXJTdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsK
ICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAx
MDQsIDE2NikpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdy
YWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRp
ZW50KFdURk1vdmUoYmFyU3Ryb2tlR3JhZGllbnQpKTsKIAogICAgICAgICBQYXRoIGJhclBhdGg7
CiAgICAgICAgIGludCBsZWZ0ID0gcmVjdC54KCk7CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2b2lk
IFJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiBzZWxlY3Rv
ciwgUmVuZGVyU3R5bGUmIHN0eQogICAgIC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoSW50IG9ubHkgbmVlZHMgdGhlIGVsZW1lbnQncyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVu
Z3Rocy4KICAgICAvLyBTaW5jZSB0aGUgZWxlbWVudCBtaWdodCBub3QgYmUgaW4gYSBkb2N1bWVu
dCwganVzdCBwYXNzIG51bGxwdHIgZm9yIHRoZSByb290IGVsZW1lbnQgc3R5bGUKICAgICAvLyBh
bmQgdGhlIHJlbmRlciB2aWV3LgotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXpl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TKTsKKyAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29t
cHV0ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRy
LCBudWxscHRyLCAxLjAsIGZhbHNlKSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhC
b3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIApAQCAtMTc0MywxMSArMTc0Myw4IEBAIHN0YXRp
YyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5k
ZXJBdHRhY2htZW50SW5mbyYKICAgICBpZiAoIWluZm8uaWNvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPEltYWdlPiBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZv
Lmljb24gQ0dJbWFnZV0pOwotICAgIGlmICghaWNvbkltYWdlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKKyAgICBh
dXRvIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaWNvbkltYWdlLmdldCgpLCBpbmZvLmljb25SZWN0KTsK
IH0KIAogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZmFiYzhiMmFi
OGJmZmExOWYzZWFiZGU0YzA2YTk5ZGZiZmUzNjk0Yy4uMTU1NzQ0ZDNmZGRiNzA0NDEzYjdhMDY5
Y2FmNTZiZTM1ODRkYzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MjMsOCArNDIzLDggQEAgdm9pZCB3cml0
ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRpbmcg
YSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgogICAg
ICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBSZWZQdHI8U1ZHRmlsdGVyPiBkdW1t
eUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3Qs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKLSAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9
IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoKmR1bW15RmlsdGVyKSkgeworICAgICAgICBhdXRvIGR1
bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVj
dCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBpZiAoYXV0byBidWlsZGVy
ID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsKICAgICAgICAg
ICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIAogICAgICAgICAg
ICAgaWYgKEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGJ1aWxkZXItPmxhc3RFZmZlY3QoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDU2ODcyMzg4OTI3OGVjN2FiMjQ0YjVj
OTVhNGY2YjVlZDI1ZGZmNzYuLmMyNjlhODU1OTQ2YmVlYmQ2YTBiZWQ5MWE4YWFiOTA5MjA0YjJk
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMzcsMTcgKzM3LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFN0b3JhZ2U+IFN0b3JhZ2U6OmNyZWF0ZShET01X
aW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorUmVmPFN0
b3JhZ2U+IFN0b3JhZ2U6OmNyZWF0ZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVh
PiYmIHN0b3JhZ2VBcmVhKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2Uod2lu
ZG93LCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOwogfQogCi1TdG9yYWdlOjpTdG9yYWdlKERPTVdp
bmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitTdG9yYWdl
OjpTdG9yYWdlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFy
ZWEpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93KQogICAgICwgbV9zdG9yYWdlQXJl
YShXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7Ci0gICAgQVNT
RVJUKG1fc3RvcmFnZUFyZWEpOwogCiAgICAgbV9zdG9yYWdlQXJlYS0+aW5jcmVtZW50QWNjZXNz
Q291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKaW5kZXggODM2NmJiYzFiNTljNzlm
OWU3NTdkZTNhMTNmNzUwYTFjYjM3ODIwMS4uOTgzZTg1YTYyYTg2NGM3YTcwZGYxN2QzYWE1MDJm
MjVmN2RjOWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
Y2xhc3MgU3RvcmFnZUFyZWE7CiAKIGNsYXNzIFN0b3JhZ2UgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBS
ZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERP
TVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAgICAgflN0b3JhZ2UoKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpAQCAtNTAsMTIgKzUwLDEyIEBAIGNsYXNzIFN0b3JhZ2Ug
OiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwgcHVi
bGljIERPTVdpCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVz
KCkgY29uc3Q7CiAKLSAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJuICptX3N0
b3JhZ2VBcmVhOyB9CisgICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JhZ2VBcmVhLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZShET01XaW5kb3cmLCBS
ZWZQdHI8U3RvcmFnZUFyZWE+JiYpOworICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmPFN0b3Jh
Z2VBcmVhPiYmKTsKIAotICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJl
YTsKKyAgICBjb25zdCBSZWY8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZS5oCmluZGV4IDQwOWE0MzNlMWQ1YzFmNmUyZDdkMThhMTE5NzZkOWJiMmZmYzI1MmEuLjU1YzY2
MjgyYjhiZDY4YmMwNDc4MmRmNDdjYWRlZDBjMjEyOTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zNyw4ICszNyw4IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RvcmFnZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2UoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAw
OworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkg
PSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDY5YzFiMzM1MzA4
YmJmY2Q5N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYuLjU5MzlhZmZkM2ViMmY4ZWVkNDZiZjYyYmFi
NGIxNWFlYjVlOTVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OnJlbW92ZVBhZ2UoUGFnZSYgcGFnZSkKICAgICBtX3BhZ2VzLnJlbW92
ZSgmcGFnZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZjxTdG9yYWdlQXJl
YT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICAvLyBUaGlzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB3YXMgcmV0
cmlldmVkIGZyb20gdGhlIERvY3VtZW50J3MgUGFnZSwKICAgICAvLyBzbyB0aGUgRG9jdW1lbnQg
aGFkIGJldHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDE5MTZjY2IyMjdl
ZDkxZjVmZjkyNjQyNGYwMDY5ODI5NjJiMWE3NmYuLmRkN2Y5YTQ2YmQ4NDc5MjQ5Yzc0ZDJhNGMy
MjQ1Mjk2NGU2N2FlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIGNsYXNzIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cj4gewogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCi0g
ICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkg
PSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKIAotICAgIFJl
ZlB0cjxTdG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOworICAgIFJlZjxT
dG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOwogCiAgICAgdm9pZCBhZGRQ
YWdlKFBhZ2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwpAQCAtNTksOCArNTksOCBA
QCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBTdG9yYWdlTmFtZXNwYWNlJiBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoKTsKICAgICBTdG9yYWdlTmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9
IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKIAogICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAwMjViOTZiYmNiNDQ0ODYxMWM3MzQ1
YjBjZGZjN2ExMGQ5NmNlNTA2Li44NWY2ZmYxMmYzODU1ZTcyZjM1MTVjZjMyN2I1MzliNWYzZDAy
M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBS
ZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IFNWR0VsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOworICAgIGF1dG8gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0
ZU5hbWUoYXR0cmlidXRlLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIGF1dG8gY3NzVmFsdWUgPSBzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCmluZGV4IDhjNjZkMmMyMjE2MGM0MmVlZDY0MDI5YzI3YTJjYjY0OTFkMWE1
NmIuLmMyNDFlMzBlMzllNjUwOGEyOWI3NTRjODc4NmE5ZDhmODBlM2FjNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJs
ZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6
Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVD
YXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJj
ZDdlNTNhN2JiNGY1OGZkYWI4MjViZjYxYzk3Yjc5Li43NTEzYWNlNTE3OTBmODZkOGU5Y2Y4ZTBj
ODE2NDYyOTA3MjMzOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlw
ZSwgZmlsdGVyVmFsdWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0
ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVm
ZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5k
ZXggNTdmYWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4uNTJiZTk3MTJiYzVm
NjFhYjQ3ZTIyNjgwMDBmMmIxOTY4MGY2Njk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNW
R0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KICAgICAK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpj
cmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgYXV0byBlZmZlY3Qg
PSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICBy
ZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcAppbmRleCBhMTBlM2E3MjFjZmVhYmQ0NzIyYWEwOTdiMWRjZjg3ZTJjMjVmOWE3Li5k
Mzg1NTc0NzdjMTY4OWIyMThhYmRjOWYwYTkxNjNmMTQ5NWNiYjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBG
RUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMo
KSwgazQoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwg
c3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0
VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0
RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1
dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0Li4w
NjdmMTJjYjcwMzk4MmM3ZWQxNDI4NGYwNGM2MGQzN2M3ZTFkOWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9IHJl
bmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHls
ZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZlY3Qg
PSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgp
LCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0
aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1ZmM3MDFk
ZjYwN2NmMGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMTRmNzdmOWY2Zjg4MTMxOTY0YmI0MmVh
Mjk1ZDkxMzdlNjljZGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlcgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1l
bnRNYXA6OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3Rv
cigpLCBzY2FsZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVh
dGUoZmlsdGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUo
KSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0
RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5w
dXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDU1MGY2NWUyNzQzY2YxZWQ2YTY0NDNmOTUxZWNmNGJi
OGVmOGM1OWIuLmQ1NGU1ZjJiNjg1ZTk5MzU3OWFmOTUxOTM3NzY1ZmEzNGVhM2IxZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTEzNCw3
ICsxMzQsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGlmICghaW5wdXQxKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRp
b25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
RHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25Z
KCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0
OWE0ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjMyMGY5MjFmZTBhZmJlZTI4MmY0ZGY3ODc3
M2RlYmNjNzg4MTJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWkKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERl
dmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VN
b2RlKCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CmluZGV4IDUwMmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmZiOTJhMzVl
OGQ0NDAzNzhjMjBjMGM2MjU4NWM3YjVlYTk4NGQwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1l
bnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRAogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAg
YXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAo
YXV0byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Pigq
dGhpcykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5OWQ4YjBiNmZjLi5lM2U4MWFm
ZTFhZjdmMTI2ZTRkOWIwN2U4MDM5YzJlOGFiOGQ4NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAgfHwgeVJhZGl1cyA8IDApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5
UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwg
c3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1
MTZiYmY3MDQxYWFkYmQwMjIyLi5jNDAyZTQwM2ViMmI5NDQzOTg4YzhiMGVhOTQ5YjM3ZmQwMjRl
YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTIs
NyArOTIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsCiAgICAgaWYgKCFpbnB1dDEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkpOworICAgIGF1dG8gZWZmZWN0ID0g
RkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRl
eCAzYTJmNGQyM2Y5NzNkNTdiMWNkYzY5ZGRlMjE3NzM3ODczZDBjZmU3Li45ZTRkN2ZkNDI3ZmNi
MWQwYzFiYmNlYTQzNDVkNWViZTk1ZGNlNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVy
LT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2
Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5p
dExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xv
ciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgp
LCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0
U291cmNlKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAg
ICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMyNjNiN2ZlMDA2MjU0ODkyNDQuLmFlMGQxOTE5
ODA1N2I4ZjI0MjJmMWJiZmM1MTgwZjUzZDBlYTU0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1
dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZm
ZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4IDg2ZDk1OGY1NzYwNTFiODA3ZTA1MWMxNWFl
YTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgwNDc1ZTNkZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCkBAIC0zNSw5ICszNSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NPYnNlcnZhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYu
Li4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPEdDT2Jz
ZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAKICAgICBib29sIHdhc0NvbGxlY3RlZCgpIGNvbnN0
IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2YTRlY2Y4ZjQzNWZkZjJjM2I4NDVmLi45OTAx
N2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIwMTdjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJv
Y2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3VsdC5jb3B5UmVmKCkpOwogICAgIH0K
IAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5cGUpOwogICAgIGRlY29kZXItPnNl
dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/IFVURjhFbmNvZGluZygpIDogVGV4
dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdG
cm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNldERlY29kZXIoV1RGTW92ZShkZWNvZGVyKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3NWUwZjQ5MGJhYTYwODg1Zi4uYjQyNTBhMDJj
ZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBj
aHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVh
dGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBh
dXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRF
bGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBib29sIHdlbGxGb3JtZWQgPSBwYXJz
ZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsKICAgICAvLyBEbyBub3QgY2FsbCBmaW5p
c2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGltcGxlbWVudGF0aW9ucyB0b3VjaCB0aGUg
bWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4gY2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJh
Z21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgpOyAvLyBBbGxvd3MgfkRvY3VtZW50UGFy
c2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVmb3JlIGRlc3RydWN0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3OGQwYmE1YzliOWNlZGI3Zi4uMzY2Yjk4M2Nj
MGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgSVBDOjpDb25uZWN0aW9uKiBj
dXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzIxYTA4Mzg2OTM4NmM0ZmJmNWYy
OGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3OWUzMzE3ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYy
Y2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9u
PiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJQ
cm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQppbmRleCBiOWZjODk1MGZhMzNj
YTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5jNzY0OTZiNzMxMjQ2N2MzNjYwNjJmYWVlYzQ3
NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsxMDMsOCBAQCAtICh2b2lkKXNldERlbGVnYXRl
OihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKHZvaWQpc2VuZE1lc3Nh
Z2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSBib2R5OihpZCltZXNzYWdlQm9keQog
ewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaD4gd2tNZXNzYWdlQm9keSA9IFdl
YktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOwotICAgIHNlbGYuX2Nv
bm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkuZ2V0KCkpOwor
ICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUo
bWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5h
bWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwogfQogCiAtIChXZWJLaXQ6OldlYkNvbm5lY3Rpb24m
KV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBiOWJlZDFkZTk0ZWY3MTc2YzNmZWJkYWNjMTdlNGRjNGUxZGVhYTdmLi5k
MTRiZDlkMmI3ZWIzMmIzZTE4ZGZlZjMyZDA0MzVjOTIzZGI3MTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExMzQsNyArMTEzNCw3
IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25m
aWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkgOiBudWxscHRyOwog
ICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBzaXplOk5TTWFrZVNpemUoc25hcHNo
b3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAgICAgIGhhbmRsZXIobnNJbWFnZS5nZXQoKSwg
bmlsKTsKQEAgLTIwNjMsOCArMjA2Myw4IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hv
dD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKICAg
ICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVzc2VkRm9ybWF0ID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAoV2ViQ29yZTo6SU9TdXJmYWNlOjph
bGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25hcHNob3RGb3JtYXQsIGNvbXByZXNz
ZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gdmlld1Nu
YXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRyKTsKLSAgICAgICAg
V2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2Vi
Q29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgeworICAgICAgICBh
dXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7
CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3Vy
ZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3Qg
PSB2aWV3U25hcHNob3QuY29weVJlZigpXShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJm
YWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAgICAgICAgICBpZiAoY29udmVydGVkU3VyZmFj
ZSkKICAgICAgICAgICAgICAgICB2aWV3U25hcHNob3QtPnNldFN1cmZhY2UoV1RGTW92ZShjb252
ZXJ0ZWRTdXJmYWNlKSk7CiAgICAgICAgIH0pOwpAQCAtNTkwMiw3ICs1OTAyLDcgQEAgLSAodm9p
ZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9m
V2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICghYml0bWFwKSB7CiAgICAgICAgICAg
ICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0Mi4uOTVi
MDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGkKICAg
ICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHN0YXRpY19jYXN0
PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAg
ICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKICAgICBjb3JlUG9zaXRpb24uYWx0
aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVy
RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKKyAg
ICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlv
bi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5RXJy
b3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3YWZh
NzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMzLi5iY2U4MDU4ZTU5ZTYzODcwNDJk
Y2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTQ1NSw4ICsxNDU1LDggQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVybl9pZl9mYWlsKEdfSVNfVExTX0NF
UlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChob3N0KTsKIAot
ICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNl
cnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0
ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7Ci0gICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3
ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOworICAgIGF1
dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNh
dGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5wdHIoKSwgU3Ry
aW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlv
blNlc3Npb25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZkY2EwMDU2Y2M2Y2RkZjI3Y2Y2ZDcy
ZDExNjFkMS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcxNjU4YzUwZjZiODQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNSw3ICszNSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9j
b2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDY3ZjEyMjJhNzQ2YzY3MmM2
ODdkMmFmYmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5ZTFlODI4MDRlMTg5MWZkNTQ5OTIw
ZjhkN2I2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
Y29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KQEAg
LTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5H
RGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRhSGFuZGxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGFIYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghYml0bWFw
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QmFja2luZ1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUwNmI2Mjc2NTEwYjczNDg1ZmNkNDY2
MmVmNDgxLi41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNlNGFlNTEzMmZiOTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9p
ZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0
ZUluZm8pCiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRhdGVJbmZvLnZpZXdTaXplKTsKICAg
ICAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0ZGYxODA0M2QzYjVhNjRiMTBkNGMy
ZTYzNzQwZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2YjU2MGExNjc5NmJhNGJiNGI1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiBwYQogCiBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKFdLV2Vi
VmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgTlNFcnJvciAqb3Jp
Z2luYWxFcnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFtZUhhbmRsZT4gZnJhbWVIYW5kbGUg
PSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOworICAg
IGF1dG8gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94
eS5mcmFtZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tX
S1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3
OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVIYW5kbGUpIHVybFN0cmluZzpvcmln
aW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7
CisgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJy
b3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcgZnJhbWVI
YW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5nOm9yaWdpbmFsRXJyb3Iu
dXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1dKTsKIAogICAgIGF1
dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5nZXQoKSwgX1dLUmVjb3ZlcnlBdHRl
bXB0ZXJFcnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKaW5kZXggOWQ3NzQx
MGMwOWMxYjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4uNjRhMzVmN2U4NzlkYjAzZGMwYmY4
NzcyMjE0NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTE3MSw3ICsx
NzEsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBS
ZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBjbGFzcyBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYp
OworICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KCk7
CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCA0
YzhmY2JmOGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3MDY3Li44Njc3YTA0MWM3MGQxMWI5
NzY5OGM0N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0y
OTIsOSArMjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBpY3R1cmVJ
blBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogCiAjcHJhZ21hIG1hcmsgLSBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBw
YWdlKQorUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOwogfQogCiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShX
ZWJQYWdlUHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IGE5Mjk5ZjFiNzQ2
OWIwM2FkMjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5NjhiMzUyOWUwYzM1NWNkNGRiMWE4
OTljMjBlOGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xMTksNyArMTE5LDcg
QEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAKIGNsYXNzIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CisgICAgc3RhdGljIFJl
ZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUyMTJmZjM1NjEyNjQyNTZkMTYuLjRj
ZjMwYmYzMzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAjcHJhZ21hIG1hcmsgLSBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdl
LCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkpOwogfQogCiBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzEwZGYxOWM0MjY1OGY2
ZjU5YzdjMTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5OTZiMWVmOWQ0YzFhOTliMTcwYmY3
NjIzZDM2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci0gICAgbmV3Q2hhbmdl
Q291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5
cGUoYnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9y
eUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBw
YXN0ZWJvYXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJP
ZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBudW1iZXJPZkZp
bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAxNTM2NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5YTMxM2IyLi5lNDYzYWM5OTRiYjlm
OGFhYzQ0ZmU4MjkzOGJlMTM2MTZiYjA1OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCw3ICs0Mzc0LDcgQEAgUmVmUHRyPFZpZXdT
bmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIGlmICghc3VyZmFj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiBz
bmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworICAgIGF1
dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKICAg
ICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5ZDgwZGNlZS4u
ODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApA
QCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFByb3h5TWFwKCkK
IAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9h
ZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3Vy
Y2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJ
RCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIG1f
ZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHku
Y29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHktPmRv
d25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCBkb3du
bG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOworICAg
IHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHlNYXA6
OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUwNDMzOWU3ODQ5
ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5
MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05
NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0
aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmlj
YXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRl
R2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3Rp
ZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwg
dGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHks
IGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlv
bklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0aW9uKTsKKyAg
ICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIo
Z2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBtX3By
b3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwg
dWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggMDI1YzljNmNmNTZjZjI1NDM0ODc2ZmRiZDE2NmYxNGMwOGY4MTUz
NC4uNDcwODgxMDBlZTMxZDA3YTY2ZDdlOTE1OGU0OTk1OGI4ZGY4NTljNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ5LDEwICszNjQ5LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogCiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAg
ICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5Ojpj
cmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5
OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0aGUg
cHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCAq
c3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIHN1YkZyYW1l
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRvdyh1aW50NjRf
dCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmYTQzYTNkMWU3
ODMwOTJiYjdjMDIxODE0N2ZkMTY0ZjgyN2IwM2MwLi45ZTNmNDA0YmQ2ZTZhYmIzYWIyNDM5YWJh
NzI3YzZiNWMzOWJlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0
aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiByZXF1
ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0
ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0ID0gU3RhdGlz
dGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNz
UmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3Rp
Y3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhyZXF1ZXN0Lmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0
aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+
OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3Jr
LgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3Mo
U3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0
TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBn
ZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVu
YXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBtX3N0YXRpc3Rp
Y3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRfdCByZXF1ZXN0
SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3RhdGlzdGljc1Jl
cXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNz
KHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCAwNjM0MzI0OWJhYTcyNWFmYjZjYjQ0NGM1NTIzMjUzZDE3ZTA4MGJjLi5lNmI0
NDRlOTE0MjdiOTZjYWE4ODQzYWViM2ZhMjI3Y2RkN2I1NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFzcyBXZWJQcm9j
ZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQ
cm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZvaWQgcmVxdWVz
dFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAgdm9pZCByZXF1
ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAgICB2b2lkIHJl
cXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOworICAgIHZvaWQg
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CiAKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUzZmI2NWMyMzBk
YmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgwNDk4YWZlMTJh
MWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVh
bWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7Ci0gICAgaWYg
KHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMs
IGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvckluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMuLjkyZWFkMDQ1
ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcApA
QCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1f
d2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAv
LyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcg
YnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldExvZ3NQYWdl
TWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgUmVmUHRy
PFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9y
UGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3Vw
ID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBh
Z2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNz
UG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKG51bGxwdHIp
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdl
dCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQo
KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0
cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIo
KSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgq
cGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
bV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCks
IHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV93ZWJWaWV3
KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGI2
NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0MjM0MTEyZTg1
NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFdl
YlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdl
KCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9y
Vmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
YXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJL
aXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBB
bGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVp
bGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBXZWJQYWdlUHJv
eHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5k
aWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7CiAgICAgfSk7
Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVh
dGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7
CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdl
R3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAgIGF1dG8gcGFn
ZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGlu
c3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX29i
amVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVz
dHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2JhOTg1N2EwYTYx
YWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUxNzNjMmZiNGIx
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIFVSTCBy
ZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAgICAgICAgICAg
IFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4uZ2V0KCkpKTsK
LSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+
IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1
aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBhdXRvIGNo
ZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURl
bGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBXS1dlYlZpZXcg
KnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVjaXNp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMTEy
MzVhMTI3ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEzMS4uOWZlZmZkZGY0MTA0MTJlNzZk
MmMwYzNkZmQ2N2JmMWUxYmQyYjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3Qg
U2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2
aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7Ci0gICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGlt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUo
aW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvckltYWdl
KGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJM
LCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9pbXBsLT5zZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4u
Y3BwCmluZGV4IGNiZmUzMGU5ZTBiZTgzMjE1MTgxOTYzNTVmNzc5ODA4YjgyNGYyZjYuLjM3OThi
ZmJiNWE5YzQxNGY2MGZkYzNjYmVhOWM3YzBkYjNlMDIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMTkyLDcg
KzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRl
RnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIFJl
ZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIu
Iik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFu
Z2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZlcmVu
Y2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgcHJlZmVyZW5j
ZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8V2ViUGFnZUdy
b3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJ
ZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdl
KGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAKICAg
ICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsKICAgICAgICAg
eyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUwOTAxNzkwMGY0
Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVkM2I1NDI0YzUz
MDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUwLDggKzUwLDgg
QEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAogLSAoaWQpaW5p
dFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9X
ZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1w
bDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUo
KldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxmID0gW3NlbGYg
X2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZmLi44YzI5NWJh
ZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVj
dC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5k
ZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUxMjMwMmIyODJl
NDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5z
dHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRz
T2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgp
KTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVt
LT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2NDg5ZDY2M2I4
ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChX
ZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAg
ICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1v
dmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRv
QVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9B
UEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
YzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEyZDljNjMxMmQy
YzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAt
NzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpz
bmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVnaW5TaXplOwog
ICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3RvcigpKTsKIAotICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAg
IGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5z
dGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
YzJjYmEwOTBmYmJkYjJkOWExOTBiMWFmZjhmZTM1NWNkNmZjMzI2NC4uMDE5OWI4NGY4ZjRlMjhm
NzY5YTc0MjE5NTE4ODkxMzFkYzg3NzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBQ
REZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9u
c2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtD
RkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9w
ZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1dG8g
cmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBT
dHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgp
LT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNp
emUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFj
dG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXpl
LCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3Rvciwg
LWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2b2lkIFBERlBs
dWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5T
QXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGFpblRleHRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFp
blRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNo
YXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVtY3B5
KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0NzlhZmMyOWFkZjRh
Yzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2QwZDNhNmY0Njdl
OTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC04
NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0
aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9u
cy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdp
blByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAtOTQsNyArOTQs
NyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5lY3Rp
b25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5n
ZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7CiB9CiAKIHZv
aWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAK
aW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4uZDY1MDUzNThk
YjZmMzVjODEyMzBjYWYxOWQ5OWY0YzRjMDFiNGY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAgICAgaWYgKHNu
YXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKKyAgICBhdXRvIHNuYXBzaG90QnVmZmVy
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7CiAgICAgcmV0
dXJuIHNuYXBzaG90QnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVjOTkxMTIyZDA4NDNkYWIwYzg0ZGE2MGJh
NWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4NTI3MDA2Y2VlYmM5YzM3MWU4M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KFVS
TFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAgLy8gVGhpcyByZXF1ZXN0IGlzIHRvIGxv
YWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAgICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0g
PSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwg
cmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJlYW0oc3RyZWFtLmdldCgpKTsKKyAgICBh
dXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3QtPnJl
cXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgIGFkZFN0cmVhbShzdHJlYW0ucHRy
KCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3ZmFmNzg2MjU1Li43OGU2NzM1NDA3MWIz
NjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
NzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAgYXV0byBjdXJyZW50
UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwogICAgIGF1dG8gY3VycmVudE9yaWdp
blVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsKICAgICB1aW50NjRfdCBuZXdRdW90
YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlP
cmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRh
dGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdl
KCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEu
ZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBuZXdRdW90YSA9
IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgm
bV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3Bs
YXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJl
bnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAgICBpZiAoIW5ld1F1b3Rh
KSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBpZiAobV9wYWdlLmluamVjdGVkQnVuZGxl
VUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgmbV9wYWdlLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRlZCkpCisgICAgYXV0byBzZWN1cml0
eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRv
U3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJl
YWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0
cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgY2Fj
aGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkMDVmYzk5NmMxZDRlZDlmNzU2
ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0YTA1OWY5ZWY3ODFlMTQ2MTEwOTg3M2Ez
NzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc2NywxMCArNzY3
LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4g
YWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFtZSwg
bmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBhdXRvIGFjdGlvbiA9IEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24s
IGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9s
aWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJh
bWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7CisgICAgV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9s
aWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJh
bWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7CiAgICAgaWYg
KHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKICAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNmMGJmYWYzNGY2NGRhOGIzMTYwNzg0NzE0
MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYyOTk0MjNiN2NiOGYzNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBh
dGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1lcywgc2FuZGJveEV4dGVu
c2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFtZXMuc2l6ZSgpID09IHNh
bmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCisg
ICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZN
b3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAgICAgIGV4dGVu
c2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0Ns
aWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlhYzIzZDhkMTNlYmRmOTNjNjdkZjMzZDg5
Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1ZWZmZjI0NGYyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9f
c3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50U2l6ZSBpbWFnZVNpemUo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwor
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VT
aXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBmZmVlMmE2NDZj
YzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5mODdkOTM0NDNmN2M1OGE4MmM0MzYzZjAz
NGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xMzIs
NyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIHRpdGxlID0g
V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAotICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGVsZW1lbnQpOwor
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKIAog
ICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNw
b25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEzOGNkMmJmNjM3OTRjOGU5ZjFkMjEyYTNl
NzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3NTJlZjgxMWExMjQ1ZWI1NWRkY2Y5YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdl
YlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiBy
YQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0b3JQcmVzZW50
YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCiAgICAgICAgIGluZGljYXRvck9w
dGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25I
aWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGluZGljYXRvck9wdGlvbnMs
IHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5kaWNhdG9yT3B0aW9ucywgcHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGVk
aXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA3ODI0ZTVjZjcxYjQ3ZGIwOWVl
YTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4NmY0MmEwMWNmNDhlNWRmNjkwMGFjZjU4
ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1w
bDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIEludFNpemUgYml0bWFwU2l6
ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBh
Z2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxl
KGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOworICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFwU2l6
ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXgg
OWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMwOTI5ZDFmMy4uNjNjYzI4MzkyZTQ4MGRm
YmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZv
aWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1
cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092
ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4g
aW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2Vs
ZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hl
c1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9u
ZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0
aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdp
bklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYxNzZkNjIwYjQ1ODlkYzM2NTk5YTJmNi4u
NmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJlZWE1NWJmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDMxLDcg
KzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkK
ICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsK
IAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKLSAgICBkaXNwYXRj
aF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciwgcGFnZUlEXSB7Cisg
ICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBX
VEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFja2luZ1N0
b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIyNGI2NDQ2ZDA1MjdkZjg2NTBmMGExYTM4
NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFiNzE5Yjc5ODJjMDJhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTgzOCw3ICs4
MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRlckRldGFjaGVkKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFdl
YkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lk
KiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNh
bGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJvb2wgeworICAgIGF1dG8gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCktPmRvY3VtZW50KCksIFt0
aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBib29sIHsKICAgICAgICAg
aWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJlNmJlZmI4MTQ3ODY1ZmMw
ZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3Y2M4NDVlNTUzMmMzYjIwNmU3ZDljMGUy
NWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6bmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50IGRvCiAgICAg
Y29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAvLyBGSVhNRTogU2V0IG1vZGlmaWVyIGtl
eXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHNldCBJc1NpbXVsYXRlZDo6
WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50
OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKKyAgICBhdXRvIG1v
dXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXND
b21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwgc2lu
Z2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBvaW50LCB7IH0sIHsgfSwgMCwgMCwgbnVs
bHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIpOwogCi0gICAgbWFpbkZyYW1lLT5sb2Fk
ZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSwgZW1w
dHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIG1haW5GcmFt
ZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVy
bCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRyKCksIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0zNzA1
LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogCiAgICAgICAgIG1fcGVuZGlu
Z0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAg
IGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQorICAg
ICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQogICAgICAgICAgICAgICAg
IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5hcHBlbmQoZXh0ZW5zaW9uKTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGM4NGY2NGM4YzYzZWQxYmJkNjBi
NzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5ZmFkMDE3MWMxODgzZjAwY2ViZjVhMzU3
ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0Zp
bmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQsNyArOTQsNyBAQCBib29sIEZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlz
U2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0b3IgPSBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0
SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5v
bmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGljYWxNYXJnaW4p
KTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2Vs
ZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxI
b3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CiAgICAgaWYgKCF0ZXh0SW5k
aWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggOWRmNjE4YTRkOWFkOGU5
YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uNWQ1NjUyMmI1OTAzZGE3NTdhYzU1Y2E4NDg1NGY2
MDkwNmM5ZmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsNyArMTgyMCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwogICAgIGlmIChw
b3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9jdW1lbnQoc3Rh
dGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBh
dXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCiAgICAgaWYgKHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQ
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9y
OjpjcmVhdGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlG
aXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5k
aWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3Vu
ZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250
ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9y
T3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1Jl
Y3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0
Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUs
IEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBv
aW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGV4dEluZGljYXRvcikKQEAgLTIxNTYsNyArMjE1Niw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3RvcklkZW50
aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKCplbGVtZW50KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0cyA9IGVsZW1l
bnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpyZXF1aXJlc0V4dGVuZGVkQ29udGV4
dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1l
bnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtSYW5nZS0+
c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VF
eHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5z
dGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVj
dGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRBZnRlciA9IHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25B
dFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRl
bmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsyMTgxLDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUg
Z2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JT
cGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNp
emUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0
aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRy
YXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZhMjRjMWMxYmRkMTU2ZjJkM2QyOTA0
ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1ZjkzZjY0ZTQxMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0gdHJhbnNp
ZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKLSAgICBSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CisgICAgYXV0
byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUo
cmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5pbWF0aW9uLT5z
ZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gc2hhZG93Q0FM
YXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgICAg
ICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShzY2FsZSwgb3JpZ2lu
KTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2ll
bnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOworICAgIHpvb21MYXllci0+YWRk
QW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmlld0FuaW1hdGlv
bi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAgICAgICBGbG9hdFJlY3Qg
c2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShmcmFtZVZpZXcsIHNjYWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVmZTllNGNiYjVkNzI2ZmYyMjZmZWQ1
OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlkMjJmNmI2MDQ0NGIxODA2MGVmZjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwyNCArNDAsMjQgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3Jh
Z2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBpZGVudGlm
aWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIGlkZW50aWZp
ZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpM
b2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVu
dGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExv
Y2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFu
c2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsK
IH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0
cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3JhZ2VBcmVh
TWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVt
ZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShzZWN1
cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBwdWJsaWMgU3RvcmFnZUFyZWEgewog
ICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CiB9OwogCi1SZWZQdHI8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgYXV0byYgc2xvdCA9IG1f
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAgICAgICBzbG90ID0gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4s
IG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90LmdldCgpOworICAgIEFTU0VSVChz
bG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAg
QVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQ
YWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFn
ZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0ZXMpOwogCiAg
ICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsK
LSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVm
KG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0b3JhZ2VOYW1lc3Bh
Y2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMpKTsKKyAgICBSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9w
TGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3IgKGF1dG8mIGl0
ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdOYW1lc3BhY2Ut
Pm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5j
b3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEzYTIyZGNiZDIxYjY3NDBlNDUyMzdm
NGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0N2Q3MmVlNWEwNjU1ZTY3NTAwZWQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0
X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7
CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdl
Kikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2FsU3RvcmFnZUFy
ZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9z
dG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJRDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDQ2MmRlODZjNDkwMDRmMWFm
NjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0YWQ4NzI2NTdlYWY4NDk2ODUyMWE3
MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNDEs
MTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyCiAgICAgcmV0dXJuIHN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRl
bnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmFkZChpZGVudGlmaWVyLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNsb3QpCi0gICAgICAgIHJldHVybiBz
bG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWZQdHI8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKLSAgICBzbG90ID0gc3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8gc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoaWRlbnRpZmll
cikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIucHRyKCk7CiAKICAgICBy
ZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpAQCAtNjUsMjIgKzY1LDIyIEBAIFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigp
CiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2Us
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+
cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
K1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICBy
ZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSht
X2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5z
aWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKIHsK
ICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDhlYTI1ZTZlNzUwOWViMmMxN2Jk
MWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMyNWFjZTA0
MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zMSwxNiArMzEs
MTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBn
ZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7CiAg
ICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCB1aW50
NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBjZjMwODViODQwZjA3
ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2MzI1MmJmZTRmYThjMWUxMjliOWFl
OGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjAyLDkgKzIwMiw5IEBAIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRl
TW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50KCppbnRlcmZh
Y2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmFkZENsaWVudChp
bnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1v
ZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggN2Y2MzMw
OWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4uNWQ2MTEwYjc5MDlmMzRjY2UzZTc2
MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTE1MCwxMiArMTUwLDEy
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJl
ZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBhdXRvIG1vZGVsID0gVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJm
YWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250
ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50Rm9yQ29udGV4
dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7Ci0g
ICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBtb2RlbC0+YWRkQ2xpZW50KGlu
dGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9k
ZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDE4MTVjMTNhYzJhMTAy
OTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uODZkYjJkODcxOGE1NGIyZjZjMjY1M2Y5M2MwYWFl
OWIyYjlmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMsMzEgQEAgU3RvcmFnZU5hbWVzcGFj
ZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAgICAgIGNsb3NlKCk7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKikK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKikK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3du
KTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBt
X3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKKyAgICBh
dXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9z
dG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9z
dG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0b3JhZ2VBcmVhTWFwLnNl
dChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAogICAgIHJldHVybiBuZXdOYW1lc3Bh
Y2U7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVh
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1faXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJl
YTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkp
Ci0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVh
LnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6
Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90
YSk7CiAgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5nZXQoKSk7
Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNl
Tm9uTnVsbCgpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmlu
ZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5NjY2MTYxMzcuLmM4OGYwNjFlZjVl
NTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01Nyw4ICs1Nyw4IEBAIGNs
YXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdl
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5
KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikg
b3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSog
bmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAg
ICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
aW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3N2M4ODRhYmQ5ZS4uODM2MjA1N2Zm
ZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
QEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogICAgIHJldHVybiBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgp
CkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5
bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShxdW90
YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAg
Ly8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBzcGVjaWFs
IG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgogICAgIC8v
IFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMGQy
MDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2FiYi4uZTU4OWZlZTdhNWM2YzkxY2Y5
NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGlj
IFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9zZUxvY2FsU3RvcmFnZSgpOwpAQCAt
NDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1
b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBv
dmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKIAog
ICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAKaW5k
ZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFhNjIxM2I5ZC4uNjNjYWUyZDBhZDUy
Y2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcApAQCAtNDIsMTggKzQyLDIyIEBA
IHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJWaWV3R3Jv
dXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0KIAotUmVmUHRyPFdlYlZpZXdHcm91
cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlZpZXdHcm91cD4gV2ViVmll
d0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3R3Jv
dXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogCiAgICAgYXV0byYgd2Vi
Vmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1lLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAgICAgIHdlYlZpZXdHcm91cCA9IGFk
b3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7
Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIg
JiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYg
IWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCisgICAgaWYgKCF3ZWJWaWV3R3Jv
dXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFdlYlZpZXdHcm91cChu
YW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgd2ViVmlld0dyb3VwID0g
cmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBp
ZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dy
b3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiAKLSAgICByZXR1
cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmlld0dyb3VwOwogfQogCiBXZWJWaWV3
R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCmluZGV4IGZlMDVj
ZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYuLjRkNDEzN2NlMmFhYWMzYTE0MGQ1
OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyArMzgsNyBAQCBPQkpDX0NMQVNTIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdH
cm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlld0dyb3VwPiBnZXRPckNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAg
ICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdlYlZpZXdHcm91cCogZ2V0KGNvbnN0
IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCBkMDg0OTNiMGY0
MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5YjFjY2MyNzJjMzQ3MjU5OWU0OTQy
ZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKQEAgLTI2LDEzICsy
NiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNlYXJjaFBvcHVwTWVudUlPUzo6
U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1
cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQorICAgIDogbV9wb3B1cChhZG9w
dFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsKIH0KIAogUG9wdXBNZW51KiBTZWFy
Y2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7
CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZvaWQgU2VhcmNoUG9wdXBNZW51SU9T
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJl
Y2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKaW5kZXgg
NzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5YWY0Zi4uMGVmNDRiNDJhNjYwYWUz
NTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVibGljIFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKKyAgICBSZWY8UG9wdXBNZW51SU9T
PiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUlPU19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9z
aXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
YmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2YjlhNWU2ODlmYzE5Yzg3Mzc0NDJi
NWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMyYTEzNjFmNjY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9z
aW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihOU0FycmF5ICoqKWFsdGVy
bmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1hcmtlckFsdGVybmF0aXZl
cy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJsZUFycmF5ICopKmFsdGVy
bmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtlckFsdGVybmF0aXZlc1tqXSldOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFy
a2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsK
KyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAg
ICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAg
IApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoQ29y
cmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXpl
KCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbWFya2Vy
c1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8PSBvZmZzZXQgJiYgbWFy
a2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGtpdChy
YW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNl
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2NDk2YzJjNDQ2MDk5MmM1YzEyYzBk
Y2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlmMzRiOWMwOTYyOTNkYzM2Y2E1ZWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQ
bGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUsMTMgQEAgLSAodm9pZClzaW11bGF0
ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAgaWYgKCFVUkwpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAgIGF1dG8gZXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVz
LAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwgMSwgeyB9LCB7IH0sIHsg
fSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBNb3VzZUV2ZW50OjpJc1NpbXVs
YXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRo
aXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwogICAgIEZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgZnJhbWUtPmxvYWRl
cigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQucHRy
KCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRl
eCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2FhOGY0YWQ0Li4xYjZjODIyODU0YTA3
ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihD
R0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAgICAgUmVmPFJh
bmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2RlKTsKIAogICAgIGNvbnN0IGZsb2F0IG1h
cmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAg
ICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50
IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8CiAgICAgICAg
IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwKICAgICAgICAgVGV4dEluZGlj
YXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9u
VXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdlcyB8CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCAxZjMyZGM5NDk4YmE0MjIxZDEy
OTM5MWI4NDc5YWJhMzBhOTc5ODk0Li43NzRkMjFhOWZmODRmMDFhM2MxNjliYTY3OTkyNTdhNDdj
OTllZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3MSw3
ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBOZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgogICAgIE5TRGF0YSAqZGF0YSA9IFtO
U1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6cHJvcGVydGll
cy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAg
ZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwogICAgIAotICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOworICAgIGF1
dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0ZShob3N0UHJv
eHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAgdWludDMyX3QgcmVxdWVzdElEID0gaW5z
dGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJuX3JldHVybl90IGtyID0gX1dLUEhJbnN0
YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwgcmVxdWVzdElELCBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0ZXNdKSksIFtkYXRhIGxlbmd0aF0s
IGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAoa3IgPT0gTUFDSF9TRU5EX0lOVkFMSURf
REVTVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDg4
M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4YjdjMzIuLmFiY2E2YmJlMzMwNTM1YTk4
MmU2NDJkNGMyYTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwog
ICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRo
b2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96
aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPEhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQo
KSwgc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQo
KSwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxS
ZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApA
QCAtNzk5LDEwICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gKICAgICAgICAgbV9w
bHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1f
cmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJl
ZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgICAgICBh
dXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVx
dWVzdElELCByZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhy
ZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbSk7Cisg
ICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0uY29weVJlZigpKTsKICAgICAg
ICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWE3
NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4MC4uMWQxZThhZWY2NzUyMzYxZjNl
Y2MwNDY1MDVkNDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE1MTcsNyArMTUx
Nyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2ViUGx1Z2lu
UmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdT
dHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0
byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpT
RGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwog
ICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0g
PSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBb
SlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVn
aW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VS
TFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDpVUkwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIg
CkBAIC0xNjc4LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVV
UkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAgICAgICBb
c2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0Oikgd2l0aE9i
amVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAgICAgICAgIFtwbHVnaW5SZXF1ZXN0
IHJlbGVhc2VdOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0
LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOworICAgICAgICBhdXRvIHN0
cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBz
ZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAgICAgICBzdHJlYW1zLmFkZChzdHJl
YW0uZ2V0KCkpOworICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAg
ICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0KaW5kZXggOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRiOGQ5MTJkNTFmM2ZmYi4uMjM0Nzgx
YjBiZTg2YTRiZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KQEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBm
cmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2Vs
ZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9y
ZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3Ip
KTsKKyAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7
CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1l
Vmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihQ
YWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
aW5kZXggZWM4ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFkMDY3NjJhNTY3ZC4uODQ2MGIwM2Y1
MGM3YzJiMTNhMTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGlmIChpc01haW5GcmFtZSAmJiBj
b3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1lLT52aWV3KCktPnNldFBhcmVudFZp
c2libGUoZmFsc2UpOwogICAgIGNvcmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsKLSAgICBSZWZQ
dHI8RnJhbWVWaWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwor
ICAgIGF1dG8gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKICAgICBj
b3JlRnJhbWUtPnNldFZpZXcoY29yZVZpZXcuY29weVJlZigpKTsKIAogICAgIFttX3dlYkZyYW1l
LmdldCgpIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDdiOWJiODk5MDhh
ZTVjMWE2NTJlMzZjYzg4OWJlMDRlNTY1NGM5NDYuLmE5M2RlZjYxMzk5YTVjYzU0ZWY2MWNhZTlj
MDM3OTkwNTg5MGNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQpAQCAtMTc0Niw4ICsxNzQ2LDggQEAgLSAodm9pZClnZXREaWN0YXRpb25SZXN1bHRS
YW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAqKikKICAg
ICAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVu
ZE9mZnNldCgpKTsKLSAgICAgICAgICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5n
ZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQs
IG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7
CisgICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UucHRyKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0YWRhdGEgIT0gcHJldmlvdXNNZXRhZGF0YSkg
ewogICAgICAgICAgICAgICAgIFttZXRhZGF0YXMgYWRkT2JqZWN0Om1ldGFkYXRhXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDljM2My
YmI5OWNjMGM2Y2QzMDUzNzk4ZGRiNjY0NGM5ZTdkYjgxNDIuLjRhODZjNzk0NTVmYjM2ZDBjNWJl
YmZiMzkwY2U4NDYzZmViMjQyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgLSAodm9pZClfd3JpdGVT
ZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJk
OihOU1Bhc3QKIHsKICAgICAvLyBQdXQgSFRNTCBvbiB0aGUgcGFzdGVib2FyZC4KICAgICBpZiAo
W3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewotICAgICAgICBp
ZiAoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9mcmFtZV0pKSkgeworICAgICAgICBp
ZiAoYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rp
b24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBkYXRhID0gY29yZUFyY2hpdmUgPyBjb3JlQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2Vu
dGF0aW9uKCkgOiAwKQogICAgICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJp
ZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkgZm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCA1ZWI5NTc1MjgyYzFiNjUzZGNiYzlhYTZhNDdlZDcwYzA1ZTdkNWVmLi40ZjkwZjYzOTM5NzQx
MjY5NzY4ZDYzMDM2Y2IwZDNiMGQzMGM5MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC00NzI5LDggKzQ3MjksNiBAQCArICh2b2lkKV9hZGRVc2Vy
U2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxk
ICopd29ybAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdH
cm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3Jv
dXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ3NTQsOCArNDc1Miw2IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDoo
TlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShn
cm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA1YzA3NzEyMTFl
YWVkNjQ5MDczZTEwM2U5MDRhNWVjOTA0OWI0NjNmLi5iYzc5ZDg5YmQ0NDZjNTZlYTFiYTlkNTdj
NzVhZTM5OWFhOGYwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgUGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2goKQogICAgICAgICAgICAgcmVtb3ZlKG9sZFBhY2thZ2UuZ2V0KCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVn
aW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKKyAgICAgICAgYXV0
byBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmll
ZCk7CiAgICAgICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNrYWdlLnJlbGVhc2VOb25OdWxsKCkp
KQogICAgICAgICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZjg1NWRkMjYz
Zjc5Y2RmZDQxYjY0NjU5NTAyMmE4YzQ0Y2NhMmY0NS4uZDNlMzM5Zjc1OTQ4YTNlM2UxZDkyOWRl
ZTc2ZDhjMmVkNDZkZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAvLyBpZiB0aGlzIGlz
IG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lz
ZSwKICAgICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0aGUgbG9hZGVyCiAgICAgICAgIGlm
ICh0YXJnZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2lu
U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1l
LmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4o
KS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAg
ICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRG
cmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1
Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7CiAg
ICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7CiAgICAgICAgICAgICBzdHJlYW0tPnN0
YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAgICAg
ICAgIGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVm
UHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9w
YXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVx
dWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEo
KSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3Mo
KSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9w
YXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVx
dWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEo
KSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3Mo
KSk7CiAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtLT5zZW5k
SmF2YVNjcmlwdFN0cmVhbShyZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9CkBAIC02OTAsNyArNjkw
LDcgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBQbHVnaW5WaWV3OjpiaW5kaW5n
SW5zdGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8gcm9vdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlw
dCgpLmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0gICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVj
dCwgV1RGTW92ZShyb290KSk7CisgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJ
bnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CiAKICAgICBfTlBOX1JlbGVh
c2VPYmplY3Qob2JqZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE5
M2UwMmIwNTAxOGVmNThmZTQxNmZjYmZiNjc1ZWRlM2ZjNTg5NmMuLjAzNTlkOTAxYWNjY2Q5MTI0
NjkxMWNlOTFmYzIzY2UxYjBiYTI0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTExNTgsNyArMTE1OCw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNCiAKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3Jl
YXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1
Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiAKICAgICBpZiAocGx1
Z2luVmlldy0+c3RhdHVzKCkgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAg
ICAgICByZXR1cm4gcGx1Z2luVmlldzsKQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYgcGx1Z2luV2lkZ2V0
KQogUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFVSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQ
bHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQs
IFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBs
ZXQiLCBmYWxzZSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNv
cmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywg
cGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOwogCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlIHBsdWdpbiBjYW4gYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseQogICAgIGlm
IChwbHVnaW5WaWV3LT5wbHVnaW4oKSAmJiBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bG9hZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZiNjJkOGZjNjM1
ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZiZjgyMWNhZWYw
YWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2NCw3ICs1NjQs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVz
dCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERh
dGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9p
ZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3Ry
aW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3ICs2MTAsNyBA
QCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5f
IEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5U
ZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmlu
Z0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVvZihVQ2hhcikg
KiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBwbGFpblRleHRNaW1lVHlw
ZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVY
VCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgcGxh
aW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0cik7CkBAIC02MTksNyAr
NjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIg
cGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkSFRNTFN0cmlu
ZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJl
YWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwg
c2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPiho
dG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CiAg
ICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0
YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VVUkwsIHVucmVh
Y2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDFiYWRkMDFj
M2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlkZjZiOTBkMGEyNzdkNzli
MWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMTk5
LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdE
Qy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBf
SW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGlu
Z05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZv
aWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBw
YWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9h
dCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAg
IHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2ODZlMDRjNGRl
MC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6fkNBVmlldygpCiAgICAg
bWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENBVmlldzo6Y3Jl
YXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+IENBVmlldzo6
Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6c2V0Q29udGV4dERpZENo
YW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uLCB2
b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRlYzAxNTJlNTFkNDI0ZjQy
ZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3MGM2MmM1ZjQ4
OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENBVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0NsaWVu
dCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVmUHRyPENBVmlldz4gY3Jl
YXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxDQVZpZXc+IGNyZWF0ZShE
cmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAgIHR5cGVkZWYgdm9pZCAo
KkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lkKiBpbmZvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4MjRjZTQ0ODNj
N2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVkN2U2NWFkODMwODU0MTYx
OWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApAQCAt
NDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAgICAgOjpDbG9z
ZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlzcGxheUxpbms+IENWRGlz
cGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCitSZWY8Q1ZEaXNw
bGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVu
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxpbmsoY2xpZW50KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsKIH0KIAogdm9p
ZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5o
CmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMuLmNhMDI2YWZl
YWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlzcGxheUxpbmtDbGllbnQ7
CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlMaW5rUmVmCiBj
bGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENWRGlzcGxh
eUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlzcGxheUxpbms+IGNyZWF0
ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxDVkRpc3BsYXlMaW5rPiBj
cmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3BsYXlMaW5rKCk7CiAKICAg
ICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAK
aW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4uY2Y5MjE4NWEx
MGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
SW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBnZXRJ
bWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2UsIFJlZlB0cjxJ
bWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5IZWlnaHQpOwog
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOwor
ICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVlYjcuLmZiYzA0
ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVz
ZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRX
bwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXAp
Ci0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJT
Y3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZp
ZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91
cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357557</attachid>
            <date>2018-12-18 03:05:12 -0800</date>
            <delta_ts>2018-12-18 03:37:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218200510.patch</filename>
            <type>text/plain</type>
            <size>398475</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmQ2MTBlZGFl
OWFjYTEwN2E0NjgzNWE3ZTgyZDE3YWM5YmFmZTkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmlu
Zyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsu
aDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5j
cHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdl
YlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIwMTgtMTItMTIgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmdd
W1dlYktpdExlZ2FjeV0gd2FybmluZzogZXhwZWN0ZWQgYSBxdWFsaWZpZWQgbmFtZSBhZnRlciAn
dHlwZW5hbWUnIG9mIENPTUVudW1WYXJpYW50IGFuZCBDT01Qcm9wZXJ0eUJhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDRhZGM3NjllNmU2YTY5MDE4
NDkwMDQyYTMzMjExMGNlY2FkOGYzYTguLjRhOTVmY2Q5NWIzOTA3N2UxYzYxMDJhNDdlYmE0NTdh
MGI2NzNhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
QEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAgICAgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlwZShhcnJheVR5
cGUpKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVu
Z3RoLCBbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKICAgICAgICAgICAg
IGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IDE3
M2QwM2U1Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBkNzk0MmFhZjc5YWQyYTY3
Zjk2ZDcyNDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIFdhdGNocG9pbnQqIHdh
dGNocG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KICAgICAgICAg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmlu
Z1dhdGNocG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAgbmV1dGVyaW5nV2F0Y2hw
b2ludC0+c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQo
bmV1dGVyaW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0
IHRoaXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNmIwZjMxOTM4ODY0OGNkMjk1YjZmMTFjNTczYWI3Mzg0NDIx
OTc4Ny4uMGIzNGY0NmNlMjYxOGQ3MmE0NmE5ZWI4YmQ3MmZkMmE2NWRiM2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkK
ICAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVh
dGVGdWxsVGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZp
dHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKGFk
b3B0UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAgICwgbV9zdG9wSWZOZWNl
c3NhcnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKKyAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCisgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVTRShGT1VOREFUSU9OKQog
ICAgICwgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBAIC0yMzM5LDcgKzIzMzks
NyBAQCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIAog
SW5jcmVtZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAgICByZXR1cm4gKm1fc3dl
ZXBlcjsKKyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEdh
cmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IGM4YWVkNGEzNmE1ODgyMDFmMTUyN2U1ZWFhZmExNDUzMjk1YzAwMTku
LjlkYTRhYTNhYmQxYzJlNzJlYTg5NTk3YzNiZWY5ZDg4ZGQ1ZGM2ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBIZWFwIHsKICAgICAKICAg
ICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsK
ICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwot
ICAgIFJlZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBSZWZQdHI8U3Rv
cElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CisgICAgUmVmPEluY3Jl
bWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4g
bV9zdG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29i
c2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAK
aW5kZXggNjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEyY2M0ZS4uYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNvQ2VsbFNldDo6fklzb0Nl
bGxTZXQoKQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pjo6cmVtb3Zl
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29D
ZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlN
YXJrZWRCbG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNr
PE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBAIC03OCw3ICs3OCw3IEBA
IFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0Ojpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAogTkVWRVJfSU5MSU5FIEJp
dG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6
ZV90IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5k
ZXggMTZjOWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNlNy4uZGFkYTY3MmM0OTFk
YzAzODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAKICAgICBib29sIGNvbnRh
aW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRvIGEgY29tYmluZWQgc2Vh
cmNoIG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsIHVzZXMgYW5kCiAg
ICAgLy8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElzb0Nl
bGxTZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gewogICAgIHZv
aWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JF
YWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAgIFJlZjxTaGFyZWRUYXNr
PHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBG
dW5jJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4NjkxNGU0YzNmYjAyNjMx
ZjAyMmQ5Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1ZWQzNGE2Zjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5j
JiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFs
bGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVu
YykKIHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRv
ciYpPiB7CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBh
cmFsbGVsKGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXNvQ2VsbFNldCYgbV9z
ZXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBt
X2Jsb2NrU291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxl
KigpPj4gbV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7CiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKCp0aGlz
LCBmdW5jKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywgZnVuYykpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4NzIxMzMxMGFmYjhiMzEu
LmUxNGEzNzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgTWFya2VkQmxvY2s6
OkhhbmRsZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3Bh
Y2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0
b3J5KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKIHsKICAgICBjbGFz
cyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+IHsKICAgICBwdWJs
aWM6CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9y
eSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKG1fZmly
c3REaXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKG1fZmlyc3REaXJl
Y3RvcnkpKTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJl
ZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5
TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQYXJhbGxlbFNvdXJjZUFk
YXB0ZXI8QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxlKj4oCiAgICAgICAgIHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAppbmRleCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5YTVmNGIxLi44M2VmNGQ3
NDlmYmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1
bmMmKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3Rv
cnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2soY29uc3QgRnVuYyYpOwpA
QCAtNzgsNyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsK
ICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKGNvbnN0IEZ1
bmMmKTsKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4NjA5NzQwYTYyNjMuLjE2
NzEyN2ZmNDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMp
CitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAg
LTEyMSwxMyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uCiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwotICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAg
ICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7
CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAgYm9v
bCBtX25lZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjY0NDA3MWQzZjk3YzZkZDZhNmE2NDAxNGQx
NWYxZTQyZGE3NDA4Yy4uMGI5OTYxYjhhYzM5ZjNlZDAyZGYyOGZlODQ2ZTJkMmM4OThkNWRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJlbnQoKS5kZXF1ZXVlKCk7
CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CisgICAgUmVmPEFy
cmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJl
bGVhc2VDb250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2Rl
ID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVm
ZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZm
ZXIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcAppbmRleCA0ZTVlZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhkNWUxOTk5NzFmLi44OTVi
MjliNmM5ZTE1MjM1ZDM0NWQ5NDI4YTM1MzkzYTNjOGE4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODksMjAgKzI4OSwyMCBAQCB1
bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiAgICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQp
IGNvbnN0CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJl
Z2luKSwgY2xhbXBJbmRleChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwo
Y2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9
IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBi
ZWdpbiwgc2l6ZSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwog
ICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmlu
ZGV4IGY2OTljOTQ1YWU0MDRlMmUwYmJkN2NmYmM1ZTk0OWQyODNlYThiZGQuLjMwZmJhNmE2YTA4
NDZhMTcyYjM5ZjE2N2NhMmU0NGMwMDFiZjI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI4LDggKzEyOCw4IEBAIGNsYXNzIEFycmF5QnVm
ZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBp
bmxpbmUgc2l6ZV90IGdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0OwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJs
ZSBlbmQpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8QXJy
YXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0
OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWlu
Z1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25l
ZCk7CiAgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIGlubGluZSB1bnNpZ25lZCBj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CiAgICAgc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGQxYTZjMmI5NmNhNWE4ZmY3Zjdh
MzE0ZTYwMmExYWNhODI1NGMxMjguLjY0ZmZmNGE4N2IwNWMzOThjODgxMWU4ZGI2YzVkM2Q2NmEx
MDA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8g
PSB7CiAKIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBX
YXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQorICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRj
aHBvaW50U2V0KElzV2F0Y2hlZCkpKQogewogfQogCkBAIC02Miw3ICs2Miw3IEBAIFN0cnVjdHVy
ZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
KQogCiB2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0g
ICAgc2V0KCktPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Cisg
ICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCA5
YTZmNzFhOTY4Y2MxOTQ2YTBkNzkzNjExZTA1MmJkNmViYmUwMWE3Li5lNWQ2ZDA5NzRhNThlYmIw
YjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaApA
QCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYpOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJu
IG1fc2V0LmdldCgpOyB9CisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQu
Z2V0KCk7IH0KICAgICAKICAgICB2b2lkIGZpcmVBbGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKICAgICAKLSAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7CisgICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMGI5NzEwNWI3
ZTc3MTk2OTdiNTQyMWEyNjM2ZjFhNGFmMmUwN2UuLjc5MThiNjJiMDcyMmFjYmVmN2FhNzI5YzQw
YjQ3NjkzMWMwZGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC01Niw5ICs1Niw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBlbmQgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7Ci0gICAgaWYgKCFu
ZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCmluZGV4IGFm
OGZmNWEwYTgwY2U4YmFhYWQwN2ExZDViY2E2MTQwY2VlMDMwZTEuLjIzOGVlNjdjMzgyODQxOWIz
M2YxNDllMmI0M2I2MjY1ZTg3NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3Im
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0
IGltcGxlbWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCi0gICAg
ICAgIFJlZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24gPSBDRE06OmNyZWF0ZShkb2N1
bWVudCwga2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMp
LCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAwN2E0Y2RkZDFkNGIzY2Y0MzM5ZjJiMGM5ODdhM2Ux
ZDI3MWFmMmYwLi4yY2UzYzhhMGY4NzM5OTQxOWI5ZjA4Y2IzZmU0YmNiMmQ3NzgwZDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzQsMTQgKzIz
NCwxNCBAQCB2b2lkIEZldGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgbV9jb25zdW1l
ci5sb2FkaW5nU3VjY2VlZGVkKCk7CiB9CiAKLVJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAorUmVm
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKQogICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkK
ICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJv
ZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoKTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihibG9iQm9keSgpLnVybCgpKTsKICAg
ICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQpAQCAtMjUxLDE1ICsyNTEsMTMgQEAgUmVmUHRyPEZv
cm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVu
Z3RoKCkpOwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keSA9
IGNvbnN0X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOworICAgICAgICBSZWY8Rm9y
bURhdGE+IGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHko
KSkpOwogICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9Ci0gICAgaWYgKGF1dG8qIGRhdGEg
PSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpOwor
ICAgIEFTU0VSVChkYXRhKTsKKyAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiB9CiAKIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6
dGFrZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBkYWFk
N2M0MmM0Nzc5YjFhNDA2OTVkMGYxNTBkN2Y5ZjRiOTk2YzUyLi5iN2IyMjAxNWNkYzAyNjNiZWI0
MzBmNDliOTgzNTkyNjVmNDYwZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRmV0Y2hCb2R5IHsKICAgICB2b2lkIGxv
YWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoKTsKIAotICAgIFJlZlB0
cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0
OworICAgIFJlZjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGNvbnN0OwogCiAgICAgdXNpbmcgVGFrZW5EYXRhID0gVmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IDlkMjUwNjc1ZmRlN2MyZWMxZmI2MzFhOTFmZWVhN2NjNDM4YzVhOWIuLjU4
YTcyYjEyMWNlMWY5MzUzOTY3YWIyYTNkNGJiN2Q3NzlkZjhkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zMDQsMTAg
KzMwNCwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUmVmPFBvc2l0
aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZQogICAgIGlmICghZnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05v
dGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShl
cnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5vdGlm
aWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhp
cywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCi0gICAg
bV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworICAgIG1fb25lU2hvdHMuYWRkKFdURk1vdmUobm90
aWZpZXIpKTsKIH0KIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlv
bkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMzE1LDE0
ICszMTUsMTQgQEAgaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNh
bGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFAKICAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdl
b05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5v
dGlmaWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCiAg
ICAgaW50IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGls
IHdlJ3JlIGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7CiAg
ICAgICAgIHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVu
dGlhbElEKCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIFdURk1vdmUo
bm90aWZpZXIpKSk7CisgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlm
aWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjU4ZDg5YTVh
ZGFiY2E1ODhhMTlhNDhkOTc4ZjZlZTIyMWY4ZGU3ZS4uMTg0NzQzOTE5MGE4Yjc5YmVmNzA2NDMy
ZmQyZjlkNzU1NjkwNzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIHVpbnQ2NF90IElEQkRhdGFi
YXNlOjp2ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAot
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKK1JlZjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVO
YW1lcygpKQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQobmFtZSk7CiAgICAgb2Jq
ZWN0U3RvcmVOYW1lcy0+c29ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNzZhMTI4NTkxMDEwNDZlNjUyYjhlZGFiNGY3MDNlMGQ0
YWQxNTkzZS4uMTVkYWNiMTI4MTFkMDMxYjcwZTFlMWNmNzRlOWIwOTM5ZDlmMzI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01NCw3
ICs1NCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgLy8gSURCRGF0YWJhc2UgSURM
CiAgICAgY29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAg
ICAgc3RydWN0IE9iamVjdFN0b3JlUGFyYW1ldGVycyB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA3ZGM1ZTBmNzk5YzBhNjI4NjIwMzJlZmQx
ZWZjYmFhZDhhZDY0ZTk0Li44ZTA3MmE4MzY4MjRiZDY3OTcwYWRjNmE3ZTA1MDA4N2E1MTlkNjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5m
by5rZXlQYXRoKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6
aW5kZXhOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFtX2Rl
bGV0ZWQpIHsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLmluZGV4TmFtZXMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5o
CmluZGV4IGVkNjA2NDdlMjA3N2IzOWE5N2RiYzRkZTgwNzkzNWJhMzlhMWQ3OWQuLmQwNDQ5OTMx
OWM4MTdlNTllYmNiNTUxNTZkZDhhMDQyNTNjZThhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBj
bGFzcyBJREJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5h
bWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCgpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkg
Y29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2Rj
MTIuLjE3NWJkZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTM3MiwxMyArMzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURC
UmVxdWVzdCYgcmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwog
fQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFw
LmNvbnRhaW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBt
X3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlv
bikpOwogCiAgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMx
NDZlNWQ2OTJlZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFi
YTQ5OGZhOTcwZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRy
YW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwg
cHVibGljIEV2ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBh
Ym9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNj
aGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYm
KTsKKyAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uPiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCBjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZl
Yy4uOGRkYjU2ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAg
fQogfTsKIAotaW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNh
Y3Rpb25PcGVyYXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYp
LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRp
b24mKSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJl
ZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlv
biwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihv
cGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAyPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBN
UDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
KQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxN
UDEsIE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9u
LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8
VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1
dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0
cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitS
ZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAg
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJ
REJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0g
ICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFu
c2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUs
IHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5z
YWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBA
IC0yNDcsMTIgKzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0
IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3Bl
cmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYs
IGNvbnN0IElEQlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3Bl
cmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFu
c2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIsIHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBh
cmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKaW5kZXggMTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNh
OTlhZTA5ODFjOGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzEx
MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5z
ZXREZWZhdWx0VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OlVzZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0
cmFpbnRzKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAg
cmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwog
fQpAQCAtMTIzLDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0
RGlzcGxheU1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0
ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVl
c3Q6OlR5cGU6OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzLnZpZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAg
ICAgICAgcmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2
MTI2YWYyYjM2ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJN
ZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShwcm9taXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVk
aWFSZXF1ZXN0KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7
CiAgICAgcmVzdWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuaAppbmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42
ZGU3ZTVjOGQ3YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVk
aWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwg
flVzZXJNZWRpYVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdm
ZGRiYzAwODBiYzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRk
ZjI3ODRkOWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRl
RmluYWxWYWx1ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAK
ICAgICAvLyBOb3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhl
ciAodW5pdHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVj
dGlvbnMgd291bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYg
bmVjZXNzYXJ5LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpj
cmVhdGUoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1
cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA4OGFlMDRhYmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFm
Yzc2MTFiMzcwMzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3
LDggQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVh
dGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAg
ICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUg
bWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251
bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0
Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1
ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCks
IHNhbXBsZVJhdGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVs
cywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVm
ZmVyID0gbV9udW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAg
ICAgICAgIG1faW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0
cHV0QnVmZmVycy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5
YmRjNjgzOWQwYmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQw
NGY3YWIwNjM1YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1l
bnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRy
PFNRTFJlc3VsdFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBh
dXRvIHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNv
IHdlIGNhbiBmZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5z
dGVwKCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0
YWJhc2UmIGRiKQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJl
c3VsdFNldC0+c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAg
bV9yZXN1bHRTZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3Vs
dFNldCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5
MDcuLjBkYzQxMWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdl
YkdQVT4gV2ViR1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlz
ZSYmIGRlZmVycmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShkZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVk
LnJlamVjdCgpOwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJy
ZWQucmVzb2x2ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRl
eCBlZWVjNGRmNjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMx
NjE5ZTAwZGI5MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNy
ZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3Jp
cHRvci4KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwog
fQogCiBXZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNm
ZWMuLjhkMDRlNTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURl
dmljZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcAppbmRleCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlh
NWM3NjQyZjI0YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQ
VUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BV
QnVmZmVyOjpXZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVk
NjgyZmJlMjQyOGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFk
YWNkN2NiY2IyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
R1BVQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwog
CiAgICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMw
MzM4NDI5NDIuLmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1
ZmZlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJl
ZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5S
ZW5kZXJQYXNzKFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNv
bG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsgY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2ht
ZW50LmNsZWFyQ29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxs
cHRyOworICAgIGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KG1fY29tbWFuZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikp
KQorICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywg
ZW5jb2Rlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMy
NTI2MzkyNDM3YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOwogCiBjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7
CiAKICAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDc3YmE0Y2JjMDhmOTZiMWUzMjJjNjlk
NDg3ZjcwNTk0MTI4NmM0MzguLmU0MGVhOTgyNzc5YTc5MzVkODM2MDgyNzA4OWEwZjAxNzUzNDE5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cApAQCAtNDYsOCArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVE
ZXZpY2U+IFdlYkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIp
CiB7Ci0gICAgYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFr
ZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVy
biBkZXZpY2UgPyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRl
dmljZS5yZWxlYXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9
IEdQVURldmljZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50
IHdoZW4gY3JlYXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxX
ZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjAs
MTUgKzYxLDE3IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVy
PiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9y
IG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVm
ZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSB9KTsKLSAg
ICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
QnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3Iu
dXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
aGF0IGNhbiBiZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KTsKLSAgICByZXR1cm4gbW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
bW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUg
PSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
eyBkZXNjcmlwdG9yLmNvZGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxp
ZGF0ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpAQCAtODksMTQgKzkyLDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5k
ZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5k
ZXJQaXBlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxp
bmUgPSBtX2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwg
ZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwot
ICAgIHJldHVybiBwaXBlbGluZSA/IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxp
bmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0g
bV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciB7IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2Ny
aXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAg
IGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0g
ICAgcmV0dXJuIGNvbW1hbmRCdWZmZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29t
bWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29t
bWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJl
dHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBX
ZWJHUFVEZXZpY2U6OmdldFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5
NzUwY2I3NGE2ZGI3NjU3YjJjZTgxZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1
MzFjMGZmOTg2NDdiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
IGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVy
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdU
Rk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5k
QnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmgKaW5kZXggMzEyOTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3
Zi4uODdhN2VhZjE5ZjA5OTA3MWRiN2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVh
dGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CiAKICAgICAvLyBGSVhNRTogTGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2ln
bmVkIGxvbmc+LiBXaHkgaXMgdGhlIGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5n
IHRoZSBJREwgd2FudHMgYSBzZXF1ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVy
dGV4QnVmZmVycyh1bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYs
IFZlY3Rvcjx1bnNpZ25lZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4
Zjk3Mzg2MmE0ODhlYzBjMzFlYTlmYS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEz
OTI4NjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRl
clBpcGVsaW5lPiYmIHBpcGVsaW5lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJH
UFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzcz
Y2FjZDkyMGY5N2QyMi4uMzkxN2ZhZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBl
bGluZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+
IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAg
UmVmPEdQVVJlbmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmUuY29weVJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5
MjMwNDFjZjhlNTk2Yjg2MWI5OGUuLjk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmEx
YzdmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4g
V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZSht
b2R1bGUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdU
Rk1vdmUobW9kdWxlKSkpOwogfQogCiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1v
ZHVsZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2Vj
MjRhMWZlMDlhNmViNGM2Zjc0NTdhMGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2
Y2FkNDViMzMzNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVT
aGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1v
ZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBj
b25zdCBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0
cigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHAKaW5kZXggYzY3ODBlZjYxYjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5
ZDdmOTYzYmQyZTkxNTdkODVjZGQzN2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAg
V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQog
CiBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpCiB7Ci0gICAgYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVE
ZWZhdWx0VGV4dHVyZVZpZXcoKTsKLSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1
cmVWaWV3OjpjcmVhdGUoZ3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7Cisg
ICAgaWYgKGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCkpCisgICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1
cmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3LmNwcAppbmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0
YjEyMzQ2NTFjLi43MjY1OTQ1YTIzZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcu
Y3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdl
YkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJl
PiYmIHZpZXcpCitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVh
dGUoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVW
aWV3OjpXZWJHUFVUZXh0dXJlVmlldyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBm
ZDgxNDkyYjA4MWRmY2RjOTFiZWY1MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2Uw
ZGYzOTUwM2Y4NzkxYmVjYTA5MmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVUZXh0dXJlVmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4
dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVUZXh0dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVU
ZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IGYxMTRiYTk0OWIwYjMyZDBmNmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3
N2M4MTQ0YmI2YmY2NTdiN2ZkMGFjMmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQ
dHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRy
PFJhbmdlPiBvcmlnaW5hbFJhbgogICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgZW5kUG9zaXRpb24gPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdl
LT5lbmRDb250YWluZXIoKSk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9
IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwot
ICAgIGlmICghc2VhcmNoUmFuZ2UgfHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1
dG8gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uKTsKKyAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpOwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWlu
VGV4dCgqc2VhcmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwor
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
cmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQs
IHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJS
KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5
MzM2NzZjZDA5ZjAuLmY3Y2QzYWE4YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4
dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAg
ICAgICAgLy8gQ29uc2lkZXIgcHJldmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJl
c2VudCBmb3IKICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8g
ZW5zdXJlIHdlIGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxp
bmUgdGV4dCBhcmVhcykuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBv
ZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdl
dCgpKTsKKyAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUt
PnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNl
dCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0Vt
aXQsIHRleHRUb0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMy
MzRmNjA4ZGE2MDcuLmJjMTZlNGIyOTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBs
aW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmpl
Y3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5k
b2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3Ro
Rm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAg
LTI4Niw4ICsyODYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0
RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSks
IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxl
bmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9
IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICBy
ZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwog
fQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRr
SHlwZXJsaW5rKiBsaW5rKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDE4YzllOWI1Nzk3Yzk5MTZkMjYyNWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2Zj
NDE1YjBlZWQ1N2I0NGZmMmQ3OWFiY2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKQEAgLTQwNiwxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAK
ICAgICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0
aGUgb2JqZWN0LgogICAgIFBvc2l0aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobm9kZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBu
b2RlUmFuZ2VTdGFydCk7CisgICAgYXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAK
ICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlh
bCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxh
dGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zm
c2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5n
ZUluUGFyZW50LmdldCgpLCB0cnVlKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VF
bmQpOwotICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9k
ZVJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0
a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJl
bnQucHRyKCksIHRydWUpKTsKKyAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9k
ZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJh
bmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4g
d29ya2luZyB3aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0
eSgpID09IFVQU1RSRUFNKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IDhjN2IxY2YzOGI5Y2I4OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhl
OWQwYTdkM2VjYWU3MDJhNDM5NTYyZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2Nv
bnZlcnRUb05TUmFuZ2U6KFJhbmdlICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWlu
ZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNj
b3BlKSkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAg
UmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CisgICAgYXV0byB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRD
b250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+
c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlv
biA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1
cm4gTlNNYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9u
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0VGFzay5jcHAKaW5kZXggOWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBk
ODcxNS4uMzU0NWQ1ZDUxMWZmODY4MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
CkBAIC03OCw4ICs3OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0
VGFzazo6SlNHbG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2soeyB9KQogewotICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFz
aykpOwotICAgIG1fdGFzayA9IFtjYWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgYXV0byBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJh
Y2stPmNhbGwoKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkx
YTI4N2FhYi4uZTdkOTM3ZWVhNzRjMTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDks
OCArMjA5LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwog
Ci0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tD
YWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWlj
cm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWlj
cm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIFtjYWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0g
SlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwor
ICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKaW5kZXggMzgwYWQ1YmQxNTIwMTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYw
NGNiYWViODdmMDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMz
LDkgKzEzMyw5IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZl
bnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZSY+KG9iamVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNr
KSk7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
T2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtj
YWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwg
Y29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5
NmM4OWQxMzhjMzU2NmEzMWMwY2MyNDkuLmRmOTQ3NmExNmJiM2ZiYzhjNDhjNmVjN2Q2OGIzYzJl
YmQ2NWEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQpAQCAtODUsMTAgKzg1LDEwIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
CiAgICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNj
cmlwdGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJp
bmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7
CisgICAgICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0
ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxs
ZXIgaXMgZXhwZWN0ZWQgdG8gcmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0
KG5wT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgICAgICByZXR1cm4gV1RG
TW92ZShpbnN0YW5jZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1Mjhi
YThjZWI5ODczY2I2ZjEzMzU5MzYzNWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVh
ZTM4MDVhNzAyYjY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xv
bmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAg
SW50U2l6ZSBpbWFnZVNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbGVuZ3RoIHx8IChpbWFnZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVu
Z3RoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAg
ICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1
OCw3ICsyOTU4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3No
YXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0
KGluZGV4KSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZ2V0SlNWYWx1ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
KmV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUx
NWU1NTYwZDQ0OTY1ZGE2NDA0MTU0ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVm
ODNhOWMzMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNl
IDogcHVibGljIEluc3RhbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0
YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAg
IHN0YXRpYyBSZWY8T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8
Um9vdE9iamVjdD4mJik7CiAgICAgdmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3Qq
IGV4Y2VwdGlvbkVudmlyb25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVu
dCBtZWFucyB0aGUgZXhjZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBl
bnZpcm9ubWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
CmluZGV4IDBhZWMwY2VlYWY5YzZjMmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2Fm
ZmM2NmFkZjcyNDJjYzQ2MDFjZDMyYTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3Rh
bmNlOjpPYmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RP
YmplY3QpCiB7CiB9CiAKLVJlZlB0cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJ
bnN0YW5jZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2Jq
ZWN0PiYmIHJvb3RPYmplY3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5h
ZGQoKF9fYnJpZGdlIENGVHlwZVJlZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBh
ZG9wdFJlZihuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RG
TW92ZShyb290T2JqZWN0KSkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3Jh
cHBlci5wdHIoKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3Rh
bmNlOjp+T2JqY0luc3RhbmNlKCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY3Nzg0MTIwNmZiZTFlNGUzNzg5YTBmODAy
YmRkMWMxZDMzNGI4ZWEuLjZjOTUwNjY5NDFkNTNlNjVhZWU1ZmQxNWJjZjMwMGRjNDIxYWFhY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRp
b25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnQKICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0CitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGRvZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBj
b21wdXRlZCBzdHlsZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQpAQCAtNDIxNywxMiArNDIxNywxMiBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKQogICAgIHJldHVybiBjb3B5
UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVz
KTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKK1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChw
cm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0
KS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1
cm4gbGlzdDsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCkBAIC00MjU0LDEyICs0MjU0LDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2lkZXNTaG9ydGhhCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQp
CitSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNDM1NCw4ICs0
MzU0LDggQEAgUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFj
a2dyb3VuZFNob3J0aGFuZFZhbHVlKCkKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwIH07CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcikpKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hv
cnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0
b3IpKSk7CisgICAgbGlzdC0+YXBwZW5kKGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
cHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9y
KSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggYmRmMzQzMjcyYTZhYTQxYjc2ZTMxZDJh
MTlmZjcxMTc3MjM2N2Y3My4uYWZlMjA0YmUxNjg4OWNhNzFkYzk1NDVjYjY3MTQ5Yjc2YWJlOTlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaApAQCAtODcsMTQgKzg3LDE0IEBAIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3Igewog
ICAgIFJlbmRlckVsZW1lbnQqIHN0eWxlZFJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCk7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQ
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJiBj
dXJyZW50Q29sb3IpIGNvbnN0OworICAgIFJlZjxDU1NWYWx1ZT4gYWRqdXN0U1ZHUGFpbnRGb3JD
dXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQ29sb3Im
LCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKICAgICBzdGF0aWMgUmVmPENTU1Zh
bHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29u
c3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1
c3RQaXhlbFZhbHVlcyk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0Owor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0
IFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKIAotICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmKTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKICAgICBSZWY8
Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
Jik7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFBzZXVkb0lkIG1fcHNl
dWRvRWxlbWVudFNwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmluZGV4IDMzYTg1ODllMTc2MWIwYTgxY2Q5YzQ1NDY1ZjU5YmVkNWIwZTBiYTkuLjA5NTI3
ZjFiMTI2YzdjYjVmMmRkZGNiZGE0MjFhMjg1ZTA1YWRmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTcwLDkgKzE3MCw4IEBAIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgIGlm
IChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgQVNTRVJU
KGJ1ZmZlcik7Ci0gICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSgqYnVmZmVyLCBTdHJpbmcoKSwgd3Jh
cHBpbmcpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkp
LCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3Rl
ZCBpbiB3aGV0aGVyIG9yIG5vdCBmb250Rm9yRmFtaWx5KCkgcmV0dXJucyBudWxsIG9yIG5vdC4g
THVja2lseSwgbm9uZSBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDFl
Y2M1YmEzNzA4NzkyZmE2MzdmMTZiMTJjZDczZTExZWZiMDRhNjIuLjgyYjY1Zjg3MDg0OGYxNjcy
OWI3MmZmMjhiM2Y1N2EyYWRmZWNlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTI1OSwxMSArMjU5LDExIEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVl
dDo6cnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgLy8gSUUgYmVoYXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0
PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVDb3Vu
dCA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7ICsr
aSkKICAgICAgICAgcnVsZUxpc3QtPnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwotICAgIHJldHVy
biBydWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVs
ZVN0cmluZywgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBhMjRh
NTM2MjY4OTBhOGE5MWQxMTczOGNhOWE1OGE0NTM3MWJiOGI4Li5lMzQ5MTcxMjg3ODkwYjk4NzRh
NzA0YWI3YjQxYmY2OWNkYTU1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTM3Myw3
ICszNzMsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgbV9i
YWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdl
cygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9zOwotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9iYWNraW5nLT5yYW5nZXMoKSkKICAgICAgICAg
dmFsdWVzLT5hcHBlbmQoQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0ZShyYW5nZS5mcm9tLCBy
YW5nZS50bykpOwogICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsKQEAgLTM5MCw3ICszOTAs
NyBAQCBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiAgICAgbV9iYWNr
aW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVT
ZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CiAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKSkK
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFn
KGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAgICByZXR1cm4gbGlzdC0+Y3Nz
VGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3Jh
cHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CmluZGV4IGZkYjhlM2FmNzlhYzYyYjc4OTU2MGI4M2MzN2ViNzQzYzhmZTYxMmYuLmJkZWZlYzRh
N2ZhN2M0MGIzNjlhMGEzZDJmMGUzZDM2YjcyODc3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNo
ZWV0Q29udGVudHMqIHMKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOwotICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNl
dC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIu
Z2V0KCkpOworICAgIGF1dG8gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoKnN0eWxlU2hlZXQpOworICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldC5hZGQoc3R5
bGVTaGVldFdyYXBwZXIuY29weVJlZigpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVy
LnB0cigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0
eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDMzMWU4MzYzZmFlODdhYjQ1M2ZjMWU3ZDU1MzllMDk4MDZmYjEzNTIuLmIz
ZTRiOWEwYzU0ZmI5MzY3ZTA0NjcxNDIyNTk0OTdjYjIxNDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50
YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKEdseXBoT3JpZW50CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFy
cmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3Qg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQogewogICAgIGlmIChkYXNoZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVOb25lKTsKQEAgLTYwLDEwICs2MCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFs
dQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50
VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBw
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENv
bG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKHBhaW50VHlwZSA+PSBTVkdQYWlu
dFR5cGU6OlVSSU5vbmUpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgdmFsdWVz
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6Q1NTX1VSSSkpOwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkKICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSkpOwpAQCAtNzEsNyArNzEsNyBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yKFNWR1BhaW50VAogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyZW50Q29sb3IpKTsKICAgICAgICAgZWxzZSBpZiAocGFp
bnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJUkdCQ29sb3IpCiAgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNvbG9yKSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZXM7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiAgICAgfQogICAgIGlm
IChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NGZhM2Y1Mzk4ZmU2ZmJlNDI0NmNlNmMxMGQzOGQ1
OWY4ZTJiM2E2Li42YTIwMzYwYTU0NjAyNmExY2ZmODEyN2FlODE1MWVhZjIzMzAwNDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTgwLDggKzE5ODAsOCBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGlu
VmFsdWUsIEZpbHRlck9wZXJhdAogICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChjc3NVcmwpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShj
c3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDBkYzEwOThmNTRmODRiYmYyYmE3YmJh
MzU5NzFiNjhkNWE5ZGJiZWMuLjFlZWZlYjhiZDEwYzI1NGI4MjRiYzA2Y2Q1YjhhZWYwNjYwMjE4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0
IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ugewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAg
IHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIocGFyZW50U2hlZXQsIG51bGxwdHIpOwogfQogCi1S
ZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUq
IHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVh
dGVDU1NPTVdyYXBwZXIobnVsbHB0ciwgcGFyZW50UnVsZSk7CiB9CkBAIC0xMzEsNyArMTMxLDcg
QEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIENS
QVNIKCk7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0
eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAg
IFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9j
YXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBAIC0xNjksMTEgKzE2OSwxMyBAQCBSZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0LCBDUwogICAgIGNhc2UgQ2hhcnNldDoKICAgICBjYXNlIEtleWZyYW1lOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBBU1NFUlQocnVsZSk7CisKICAgICBpZiAocGFyZW50
UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1
cm4gcnVsZTsKKyAgICByZXR1cm4gcnVsZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB1bnNpZ25l
ZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5k
ZXggNjgwNzE0MWZlZWE3MWIwNzZhZmE5YTRhNjlhM2NkMjZmYzUzMjI4OC4uNzE4MDUyMzEzODQ0
MDMyZjc1YzljNmNkMWU1YWE5M2RiZWRkNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAt
ODQsOCArODQsOCBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRl
ZEJhc2UgewogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25z
dDsKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVu
dFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4g
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IGZhbHNlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2Ug
OiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUp
IGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNTsKICAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0
TWF0Y2hlZENTU1J1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCmluZGV4IDBmZWU4NGNkN2ViMjY3OTJlM2RmNmQ0NjdlOTBhNjJmMWZkMGNjNTQu
LjgxNGQ0NmIwNWE2N2MxNTk5YTIzMjhjMzgzMmZlNDBhZjViNjMzYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IoKQogICAgIGFjY3VtdWxhdG9yTWFwKCkucmVtb3ZlKG1fdGFyZ2V0LnB0cigpKTsKIH0KIAot
UmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNj
dW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKK1JlZjxDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRP
ckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiB7CiAgICAgQWNjdW11bGF0b3JNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBhY2N1bXVsYXRvck1hcCgpLmFkZCgmdGFyZ2V0LCBudWxscHRyKTsK
ICAgICBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gYWNjdW11bGF0b3I7CkBA
IC03MCw3ICs3MCw4IEBAIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDCiAgICAgICAgIGFjY3VtdWxh
dG9yID0gYWRvcHRSZWYobmV3IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24o
dGFyZ2V0KSkpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWNjdW11bGF0b3Iu
Z2V0KCk7CiAgICAgfQotICAgIHJldHVybiBhY2N1bXVsYXRvcjsKKyAgICBBU1NFUlQoYWNjdW11
bGF0b3IpOworICAgIHJldHVybiBhY2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBp
bmxpbmUgYm9vbCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3Jk
ZXIoTm9kZSYgY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuaAppbmRleCA5Yjk0MzcxNmRiYzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2
NzY3NzY4ZjBkNzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIGlzIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlz
dE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5v
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKaW5kZXggZDU1YzU2ZjEzNjkzMjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYz
MGMzMzAwYjlhNzkwMmZhN2JjYmUyMmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXImIG1hcmtlciwgTm9kZSYgbgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXco
KSB8fCAhbm9kZS5kb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2Ug
KGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0
aCBhYnNvbHV0ZVRleHRRdWFkcygpLgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgp
LCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAg
ICAgICByZXR1cm47CisgICAgYXV0byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5k
T2Zmc2V0KCkpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAg
ICAgbWFya2VyUmFuZ2UtPmFic29sdXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRy
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmlu
ZGV4IDEwOWY3MjRjNTgzMTYwYTcxOGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQy
ODRiNzcwMzU1ZGM0ZTBhNmQxYzI3NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5
bGUoZG9jdW1lbnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNL
bm93bk5vbmNlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+
IG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFR
dWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50
KSk7CiAKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1
ZSk7CiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsK
ICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVl
dCBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1l
ZGlhUXVlcmllcykgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBp
ZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFs
LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3N0eWxlU2NvcGUpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0
T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCku
Z2V0KCpjYWNoZUtleSkpIHsKICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNo
ZWFibGUoKSk7CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKCpjYWNoZWRTaGVldCwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFR
dWVyaWVzKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAg
ICAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0g
U3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVt
ZW50KGVsZW1lbnQpKTsKIAogICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUoY29udGVudHMuZ2V0KCksIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1f
c2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAg
aWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxl
KGVsZW1lbnQudGl0bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5
MTQzMTI4YzllMmIxMzkyZWE5ZmM5N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZj
MzY2YzA3Y2RlN2I4MDk4ZmQyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9p
bnRlckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFBvaW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKICAgICAgICAgYm9vbCBpc1ByaW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmUHRyPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
SW5pdCYmIGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0
aWFsaXplcikpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oCmluZGV4IGNmOGUzOTNiODYzZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0
NjkwNTJiNWNiMzEwYTlhMjZlZGQ0M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNl
ckdlc3R1cmVUeXBlIHsgRXNjYXBlS2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRv
a2VuIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGlj
IFJlZjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUg
c3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVy
ZVR5cGUpKTsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggNTgyYmUwZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4u
OThhYmM3MzZkNzUwNjg0M2YzMjFjMGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVy
bmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRv
IHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFs
dWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVh
dGUgYSByYW5nZQogICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFw
aCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVm
UHRyPFJhbmdlPiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBv
c2l0aW9uKCkpOworICAgIFJlZjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25P
ZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICgh
c3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRl
cm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0
aGF0IHdlIGNhbiBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgot
ICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgp
KTsKKyAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5w
dHIoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhp
cyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAg
IGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYs
MTIgKzI2NiwxMiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1Vu
YXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdG9yKG1fZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
CiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0
ZWQsIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVT
ZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LmVuZCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vy
cy5yZW1vdmVNYXJrZXJzKHJhbmdlLmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0
b2NvcnJlY3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtl
cnMucmVtb3ZlTWFya2VycyhyYW5nZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1
dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlP
dmVybGFwcGluZ01hcmtlcik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2Uu
cHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQz
LDEwIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVk
RWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXND
cmVhdGVMaW5rQ29tbWFuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgp
KTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1h
cmtlcnMoKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFy
a2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbik7CiB9CiAKIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JE
ZWxldGVkQXV0b2NvcnJlY3Rpb25BCiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGlu
Z0NoYXJhY3RlclBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHByZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0
cmluZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gcHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7
CisgICAgU3RyaW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5w
dHIoKSk7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdX
aGl0ZXNwYWNlKHN0cmluZ1tzdHJpbmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1hcmsgdGhpcyB3aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRl
ZCBhbiBhdXRvY29ycmVjdGlvbiBmb2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNv
IGlmIHRoZSB1c2VyIHR5cGVzIHRoZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBw
b3NpdGlvbiwgd2UKICAgICAvLyB3b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2Zy
YW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2lu
YWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCks
IERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdG
b3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0
IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUs
IGNvbnN0IFN0cmluZyYgc3RyaW5nVG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAg
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29y
ZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFy
a2VyLCBlbmRPZldvcmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFp
bmVyTm9kZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgq
bV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFy
a2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkp
OworICAgIGF1dG8gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgp
LCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsK
KyAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAg
ICBpZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
bV9vcmlnaW5hbFRleHQgPSBjdXJyZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkp
IHsKICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdp
dGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2
ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmco
KTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5
cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQ6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3
b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRS
YW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAg
ICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lv
bik7CiAgICAgICAgIGJyZWFrOwpAQCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRN
YXJrZXImCiAgICAgICAgIGF1dG8mIG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtl
cjo6RGljdGF0aW9uRGF0YT4obWFya2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29y
ZCAhPSBtYXJrZXJEYXRhLm9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9y
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRh
aWxzID0gbWFya2VyRGF0YS5jb250ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJ
VGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4
MTRhZDFkM2ZkYTZhZjg2OTY4OGJmYzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0
MjZmNzRiNjAzNjk3MWZjOGNlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29w
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0
UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBh
dXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25J
bk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGlu
dCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3Jh
cGgodmlzaWJsZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFy
dChlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0
LDEyIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5
bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChw
YXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwg
MCwgdHJ1ZSk7Ci0gICAgZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2Ug
JiYgZW5kUmFuZ2UpCi0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRv
IHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0
cnVlKTsKKyAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1
cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpOworICAgIH0KIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUp
CkBAIC0xMDUxLDkgKzEwNTMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklu
bGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAg
ICAgZWxlbWVudHNUb1B1c2hEb3duLmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQot
ICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5n
ZXQoKSk7CisgICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1
c2hEb3duLnB0cigpKTsKIAogICAgICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91
Z2ggY2hpbGRyZW4gb24gZWFjaCBsZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFn
Z3JlZ2F0ZSBpbmxpbmUgY2hpbGQgZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3
cmFwIGVhY2ggY2hpbGQgc2VwYXJhdGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHls
ZSYgc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMg
Y29udGFpbmluZyB0YXJnZXROb2RlIGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdl
dE5vZGUKICAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQg
dGhlbiBhbHdheXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0
YXJnZXROb2RlIHx8IHN0eWxlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVT
dHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5w
dHIoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBv
dXRlciBsb29wIChjb250YWlucyB0YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFj
aGVkIHRhcmdldE5vZGUsIHN0b3AgdGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBv
ZiB0aGUgY3VycmVudCBpbm5lciBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2
NGNiNWMxZGIwODMuLjMwYjM3MmZiNTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBA
IC0zODIsOCArMzgyLDcgQEAgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCBy
YW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZp
cnN0UmFuZ2UpIH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3
NjcsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVz
ZXJ2aW5nTWFya2VycyhUZXh0JiBub2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXImIG1hcmtlckNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRv
IG1hcmtlcnMgPSBjb3B5TWFya2VycyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNv
dW50KSwgRG9jdW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5O
b2RlKG5vZGUsIG9mZnNldCwgY291bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiBuZXdSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwg
Jm5vZGUsIG9mZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9m
ZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBt
YXJrZXIgOiBtYXJrZXJzKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYg
KG1hcmtlci5pc0RpY3RhdGlvbigpKSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFk
ZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9u
KCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAg
ICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBl
KCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5t
ZXRhZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50
eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5h
ZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlv
bigpKTsKICAgICB9CiB9CiAKQEAgLTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAg
ICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFn
cmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
Ci0gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
c3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAg
ICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigp
LCB0cnVlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAg
ICAgICAgICAgaWYgKGVuZEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNp
YmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVj
dGx5IHRvIGNyZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAg
UG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwogICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRS
YW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFu
dC5kZXByZWNhdGVkTm9kZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFy
dFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUo
KSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24g
bm9kZXMgaW4gdGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0
ZXIgdGhvdWdoLCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBz
bWFsbC4KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhp
cyB1c2VkIHRvIHVzZSBhIHRlcm5hcnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25m
dXNlZCBzb21lIHZlcnNpb25zIG9mIEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlICE9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZSgqcmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAg
ICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBl
bXB0eVN0cmluZygpKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlz
IG1vdmVkIHdoZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8g
YW55dGhpbmcgaWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkg
cGFyYWdyYXBoIGNhbiBoYXZlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2
ZDZlNjY1NWViMDk3NWE2Li5hNmQxNzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKQEAgLTY5Myw5ICs2OTMsOSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1l
cmdlUGFyYWdyYXBocygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVu
dCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVw
bGFjZWQuZ2V0KCkpKQorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3Io
KS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdl
VG9CZVJlcGxhY2VkLnB0cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQ
YXJhZ3JhcGhzIHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0
aGF0IHdvdWxkIHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCmluZGV4IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0
ZWVlNWMuLjg2ZDAyMWQxOGE0NzkxM2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBu
b2RlLCBpbnQgaW4KICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxl
Y3ROb2RlQ29udGVudHMobm9kZSk7Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsK
KyAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShp
bmRleCAtIDEpOwogICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24o
KSA6IGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAw
MTM4OWQxYzhhZGI0NzM4YS4uYjM4YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcx
NCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxl
T2ZOb2RlKE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJlbnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVk
U3R5bGUobm9kZS5wYXJlbnROb2RlKCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZu
b2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAg
ICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAK
ICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsK
QEAgLTgyOCw4ICs4MjgsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGlu
ZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVj
b3JhdGlvbkNoYW5nZTo6UmVtb3ZlOwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwg
c2hvdWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVMaXN0ID0gdGV4dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkg
ewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVM
aXN0LT5jb3B5KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRW
YWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAg
YXV0byBleHRyYWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAKICAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVV
bmRlcmxpbmUpOwogICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1
ZUxpc3QtPmhhc1ZhbHVlKHVuZGVybGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBi
b29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxl
ZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlz
dC0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGlmIChuZXdWYWx1ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwg
bmV3VmFsdWVMaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHls
ZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rp
b24gb25seSByZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rp
b24gd2FzIG1vZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJv
cGVydGllcywgdGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hp
Y2ggb25lIG9mIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxs
ZWQuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsK
KyAgICBhdXRvIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShw
b3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVz
KiBzdHlsZUF0UG9zaXRpb24gPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHls
ZS5nZXQoKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcg
KzExNTgsNyBAQCBzdGF0aWMgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RF
ZGl0aW5nUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1l
bnQsIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJv
cGVydGllc1RvSW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21S
dWxlcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVG
cm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5s
aW5lU3R5bGUoKSkKQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJn
ZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQog
ICAgIC8vIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3Qg
cmVmbGVjdCB0aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6
IHN0eWxlPSJoZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAg
ICAvLyBGSVhNRTogVGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2Js
ZW0vNTE5NTEyMz4gU2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IgY29tcHV0ZWRTdHlsZSgmZWxlbWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24o
U3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21w
dXRlZFN0eWxlKTsKKyAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxp
Y3QoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9w
ZXJ0aWVzSW5TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVy
dGllc0Zyb20sIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4
LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChT
dHlsZWRFbGVtZW50JiBlbGVtZW50LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMp
OwogCiAgICAgLy8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92
ZXJyaWRkZW4gYnkgbWF0Y2hlZCBydWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21w
dXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRp
ZXNJbkVmZmVjdCk7CisgICAgYXV0byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVh
dGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlKSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9t
dXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpKQogICAgICAgICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAg
LTE4MDIsNyArMTgwMiw3IEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBleHRyYWN0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5k
YW50UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0
aWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0
aWVzKGJhc2VTdHlsZSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVj
ZGZjM2M5N2Q4YjNkMy4uNTlhNGI4MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGlu
Z0RpcmVjdGlvbik7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0
cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVj
dGlvbiBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25z
dApAQCAtMjAyMyw4ICsyMDIzLDggQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3Rh
cnQsIGV4dGVudE9mZnNldCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihz
dGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwot
ICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVk
UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6Tm8pOworICAgICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShi
YXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAg
ICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJh
bmdlLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Ok5vKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggNTZjYTViZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4u
OWZkYWMxZDYxMTk1MzhhY2UzZDRiZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHls
ZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFj
dGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFs
dWUpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlE
LCBwcm9wZXJ0eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBs
eVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9y
IHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9y
S2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRv
U2VsZWN0aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBs
eVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVKdXN0aWZ5UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdE
aXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZy
YW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCks
IEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIENTU1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5l
ZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGly
ZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0
bCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlv
bjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcAppbmRleCA2ZjUzMjA4ZmU2YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2
YzdmZGUyMWRiYjIwMzRiNTljNWI5NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9p
ZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCwKICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5v
ZGUoKSA6IHNwbGl0VHJlZVRvTm9kZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1Nw
bGl0VG8pOwogICAgIFJlZlB0cjxOb2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91
dGVyQmxvY2s7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCog
cmVmTm9kZSA9IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiBy
b290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVs
bCBmb3IgZWxlbWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290
IHx8ICFyZWZOb2RlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1h
dEJsb2NrKHJlZk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFy
dCkKLSAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNv
bnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRP
ZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFu
Z2UuZ2V0KCkpKQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2Vu
ZGFudE9mKCpyZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVu
dCB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChy
ZWZOb2RlLT5oYXNUYWdOYW1lKHRhZ05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1
NzQwNWY5NDhiYWNjYWMyLi40ZWMwYjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAK
QEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdz
IHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3Jl
IG9wZXJhdGluZyBvbi4KICAgICBOb2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUocm9vdCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVy
eXRoaW5nIGJ1dCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgYWNjZXNzIHN0eWxlKCkuCiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAK
LSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIGRlZmF1bHRTdHlsZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29t
bWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBw
bHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlz
RWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAKaW5kZXggNTAyYmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5
MS4uMDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNw
cApAQCAtODksOCArODksNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5n
ZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAx
LCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
Km1fcmFuZ2VUb0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggNDgwNGU5MGE4ZTIyOWNiOTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFh
NzFmZmMxZjcxNTE3NmVhMGY1MzY2YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRL
ZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50
ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0g
ICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoaW5saW5lU3R5bGUpOworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUp
IHsKICAgICAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPFF1YWxpZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNl
bWVudEZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5n
U3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRp
b25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2Vy
dGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Q
b3MtPnN0eWxlKCktPmFzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBh
cmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyAr
ODA0LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJ
bnNlcnRlZE5vZGVzJiBpbnNlcnRlZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAg
IGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5s
aW5lU3R5bGUoKSk7CiAgICAgQ29udGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVT
cGFuLT5wYXJlbnROb2RlKCk7CiAKICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3
aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5n
IGludG8gYSBxdW90ZWQgcmVnaW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4
Zjg1OGRmNGRiYzM2YWYzNzgzYi4uN2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4
MjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCkBAIC0xMjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0
aWNSYW5nZT4+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVG
cm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07
CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9C
ZUNvcnJlY3RlZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFi
NzY4M2FiM2U0NzJmMWE5ZjM1N2FkNzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1
MTQwYzUyMGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcApAQCAtMzM3LDggKzMzNyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAg
ICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
bV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUg
Y2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5n
ZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3
aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRP
ZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJh
Z3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1
cnJlbnRFbmRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFu
Z2UucHRyKCkpOwogICAgICAgICAgICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGN1cnJlbnRTdGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAg
LTM5Nyw4ICszOTcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAg
IGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdy
YW1tYXJQaHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFp
bExvY2F0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBz
cGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzcGVsbGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFw
aE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJh
Z3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFw
aFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxp
bmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1Jh
bmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBv
dXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9m
ZnNldCA9IHNwZWxsaW5nT2Zmc2V0OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJh
c2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
cGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2
N2Y4ODVlYWI1ZWRjYTk4YTIyY2U1YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUx
MWZkZjRkOTk4YTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBv
c2l0aW9uVHlwZSk7Ci0gICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwg
KmNtZCwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRv
IGNtZCA9IFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4
dCwgb3B0aW9ucywgY29tcG9zaXRpb25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21t
YW5kKGZyYW1lLmdldCgpLCBjbWQuZ2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVu
dFNlbGVjdGlvbik7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERv
Y3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJv
b2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1h
bmQgY29tbWFuZFR5cGUsIFRleHRHCiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJl
YU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBs
eUVkaXRpbmcoKnRoaXMsIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5k
aW5ncygpKTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNS
YW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9y
KCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5k
Ojp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JB
ZGRlZFR5cGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAz
OTUwMzYxYmJhZDU5MTRkZGRkMzIzNDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0
MWZhZWNlNTBkNzE5Yzk2MmNkZmFjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCkBAIC0xODkzLDEwICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBv
CiAgICAgYm9vbCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11
c3QgY29tZSBmaXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9k
ZSgpLT5kb2N1bWVudCgpLAorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhl
ciA6IHZwKSk7Ci0gICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5nZXQoKSk7CisgICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZS5wdHIoKSk7CiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDog
ZGlzdGFuY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KaW5kZXggNWNjZjQ0NjI0MDk2ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2
ZmExYWM0YTliNjljODVmMDk2NmJhMjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0
b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVy
RGF0YSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5k
SU9TLmNwcAppbmRleCA3NWY1NGExMzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4y
YzRiNjBkMDE0MzMxMTE1Y2I5MTJjNzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCAr
NjcsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQq
IHJvb3QgPSBhZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklY
TUU6IEFkZCB0aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUg
cmVzdWx0cyBhcmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3Jz
LgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVz
dWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0Vu
ZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCks
IHRydWUpOwogICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAK
ICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KaW5kZXggZjM3ZmRlN2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4u
MjMwZjVlM2I0MTczMmIxZTYyODQ1MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uIGRpcgogICAgIC8vIElmIHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVu
dCwgZmxpcCBsZWZ0LT5yaWdodCBhbmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwg
ZG8gbm90aGluZy4KIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0g
RWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSk7CisgICAgYXV0byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAg
IGlmICghc2VsZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMzgsMTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUu
cHRyKCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90
IG1vZGlmeSBieSBhcHBseWluZyB0aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVm
YXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAog
ICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJ
VmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAg
IGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRv
cjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBs
ZW1lbnRzIHVuZGVybGluZQogCiAgICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3Rs
eWUgPHJkYXI6Ly9wcm9ibGVtLzkxNTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRj
aCBzdHlsZSBzaG91bGQgc2F5ICJVbmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1Nl
bGVjdGlvbihkZWZhdWx0U3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMp
OworICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rp
b246OkNoYW5nZUF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50
JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hl
ZEltYWdlKQpAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAg
ICBQb3NpdGlvbiBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24o
JmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVm
UHRyPFJhbmdlPiBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1l
bnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGll
bnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsK
KyAgICBhdXRvIGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVu
dCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwog
CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3
ZTc5YmUxZDY5MmYyNWYuLjNmZTZmNGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAs
OCBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihu
b2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBv
c2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rp
b246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKTsKIApAQCAtMTc2LDkgKzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZy
b21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxh
aW5UZXh0OwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJD
b250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWlu
VGV4dCkpIHsKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9z
ZVBsYWluVGV4dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50
KCpub2RlLCAqZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZy
YWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAg
ICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7
CiAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVt
ZW50JiBpbWFnZUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAo
IWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYx
YWFiZGExOTgzNC4uYjgzZGFjZDBjMmIyODYzYWEyMmI2ZGYzOTM1NGJjZmFmM2NlZmIwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzY0LDkgKzc2NCw5IEBAIHN0YXRpYyBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUm
IG5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0
byBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAg
ICAgc3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7Ci0gICAgcmV0dXJuIHN0eWxl
OworICAgIHJldHVybiBXVEZNb3ZlKHN0eWxlKTsKIH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50
UHJlc2VudGF0aW9uYWwoY29uc3QgTm9kZSogbm9kZSkKQEAgLTEyMTEsOCArMTIxMSw4IEBAIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21l
bnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8vIEJhc2VkIG9uIHRoZSBkb2N1bWVudGF0
aW9uIEkgY2FuIGZpbmQsIGl0IGxvb2tzIGxpa2Ugd2Ugd2FudCB0byBzdGFydCBwYXJzaW5nIHRo
ZSBmcmFnbWVudCBpbiB0aGUgSW5Cb2R5IGluc2VydGlvbiBtb2RlLgogICAgICAgICAvLyBVbmZv
cnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIu
CiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEg
ZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgotICAgICAgICBS
ZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRl
KG91dHB1dERvYyk7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBm
YWtlQm9keS5nZXQoKSk7CisgICAgICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShvdXRwdXREb2MpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0
cmluZywgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0g
InRleHQvcGxhaW4iKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6
Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCAwNDM0MTI5MDJhNDBmZTQx
NzFiNzY1MmQ5OGIwYTNlMmUyOGQ1MTU3Li44OTcxNTVhMTIyOTFkYzRlNTM1MjM0ZTA4OGE4YzQy
ZWZhMDliNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAKQEAgLTIxNyw5ICsyMTcsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogdm9pZCBGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCiB7CiAgICAgaWYgKG1fdmFyaWFi
bGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4gbV9ieXRlc0xvYWRlZCkgewotICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNMb2Fk
ZWQpOwotCi0gICAgICAgIG1fcmF3RGF0YSA9IG5ld0RhdGE7CisgICAgICAgIG1fcmF3RGF0YSA9
IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7CiAgICAgICAgIG1fdG90YWxCeXRl
cyA9IG1fYnl0ZXNMb2FkZWQ7CiAgICAgfQogICAgIGNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggZDdlMmI3NWE0NTMxMjBiMDJk
N2M3NDJkNDYwZjQ2YTRkZDU5OTQ4ZS4uZDc4MTEwY2M5ZWRiOWRhMDA0ZDQxNTg0YWM0OWRiYWUw
MDI0ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAKIHN0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERp
cmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0
aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVj
dG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1
cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MGRjYzg4OTA1MDYzZDJlYjI3MDllNjJlMzRlOTVlYTA3M2IyODhhNC4uMTgxMGU3MjVlMTgzNDlh
YjM2NjU2OGVlMTg1MGNkYmJiZWY5OWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIq
KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwogCiAgICAgLy8gRG9uJ3Qg
c2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5l
cmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8gd2ls
bCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBk
ZWxldGlvbi4KQEAgLTY0NDUsNyArNjQ0NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3Jl
YXRlTWVkaWFDb250cm9scygpCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9scz4gbWVkaWFDb250cm9scyA9
IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBhdXRvIG1lZGlhQ29udHJv
bHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFtZWRpYUNv
bnRyb2xzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IGZmOTZmNGYyNDM1YjA5OGUwNjY2MmYzM2NjMjA1ZTAwMGIz
NzkxNmQuLjJhNmE5YzYxMjE0NTRmMzI2MTEzNmQxNThlOGY1OWUwOWJlMTRlNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNDczLDkgKzQ3Myw5IEBAIEhU
TUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJz
KCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1SZWZQdHI8U3R5bGVQcm9wZXJ0
aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxl
UHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoY2VsbEJvcmRlcnMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdh
MTk4MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBj
bGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAg
IENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVz
PiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
KiBsYXN0Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRh
MGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4
NTUwNjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGls
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBA
QCBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIFN0cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAg
ICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1
cm4gb3JpZ2luLT50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYWNhNTFhNzdmMDMxNTMzOTI2
NjJmNDBjM2Q0ZTI1NzliZGRkMDRiMi4uZTJiNDNkZDVlM2IxNTk5ZmVkZjg0MDQ1YjJmMjgxZjA2
ZDAzMTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50
ZXJmCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1m
b3ItdGhlLXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50
Rm9yQ3VycmVudE5vZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25l
ckRvY3VtZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxl
bWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQs
IGluc2lkZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1
dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2Fs
TmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZv
cm0oKSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAo
YXV0byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVy
RG9jdW1lbnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFn
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggMDhjNmU1MGI1ODU0OGRjODc3MTNlMjBjMjA4NDA5
NjY0MmExM2ZhNC4uZTExOTJhZmY3MGFlOTdiMDNlMWI3YzI2YzFjMDU0MWEwMmQyNDZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmUK
ICAgICAgICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAg
ICAgLy8gc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1p
Z2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBm
b3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMp
OwogICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAx
LjAsIGZhbHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBp
eGVscywgRml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDgu
LjM1YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRG
cm9tQ3VlVGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgp
CiB7Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0
ZSgpOworICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5z
ZXRTdGFydFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9j
dXJyZW50RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9T
dHJpbmcoKSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0
aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7Cisg
ICAgbV9jdWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQy
OTQyYmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRj
aE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2
aW91c1NpYmxpbmcgPSBub2RlLnByZXZpb3VzU2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKG1fZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50Ojpj
cmVhdGUobV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkK
ICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgp
ID8gbm9kZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsK
ICAgICBlbHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNo
U3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAg
ICAgaWYgKGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCku
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2Uu
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnRO
b2RlLCAqZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9y
LnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZjM4YWEyMDA0YjI1NzM0ODhiMTYwZDczOWNmZTk2MzNl
ZmM2ZWM1Li5jMGVjM2Y4YjcyNTg1NTE5NTczYjJiYzRjZTBkZWFlZmU3MDJhMjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3
NSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRD4obV9jb250ZXh0KSkgewogICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3du
Y2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAo
YXV0byYgc3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJz
ZXRUcmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5z
Zm9ybSkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhG
b3JLZXkoImdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMz
LDcgKzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxT
dGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8V2Vi
R0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0QXR0cmlidXRlcyA9IGNvbnRleHRXZWJH
TEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOworICAgICAgICAgICAgYXV0byB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1
dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxwaGEiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMt
PmFscGhhKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRC
b29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+ZGVwdGgpOwogICAgICAg
ICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oInN0ZW5jaWwi
X3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPnN0ZW5jaWwpOwpAQCAtNjQzLDggKzY0Myw4IEBA
IFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUocGFy
YW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMp
KTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHRyYWNlID0gSW5zcGVjdG9yOjpjcmVh
dGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6
OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7Ci0gICAgYWN0aW9u
LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZNb3ZlKHRyYWNlKSkpOworICAgIGF1dG8gdHJhY2Ug
PSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0
YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHRyYWNlLnB0cigpKSk7CiAK
ICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDhlMWM0ODI5ZGZm
NWJlYWMxZDZmYzAzMjA5Y2ViZmQwYzQ1MDU3NzQuLmEwYzM4ODdhNmVmYzJhMDUxYzNhMzUzMTQ3
ZDcxMzZjZjhhYzhhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJp
bmcmIHVybCkKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZy
YW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7
IH0sICJfYmxhbmsiX3MsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8s
IE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3
RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdywgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIGJv
b2wgY3JlYXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0s
IGNyZWF0ZWQpOworICAgIGF1dG8gZnJhbWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZy
YW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggM2NkZWM4NTA1MWVkMGMz
MTRlN2U0MmM0OWJmYmEwODU1NTUzNzdjNy4uOTQ5OGU3NjBiZDk2NDJhOTdkNjVlM2U5YzVhMzM0
MDM0MjExOTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKICAgICBpZiAoIXN0
eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFN0YXRpY0NT
U1J1bGVMaXN0PiBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8g
bGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8UmVmUHRyPENT
U1J1bGU+PiYgbGlzdFJ1bGVzID0gbGlzdC0+cnVsZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBzaXplID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAg
IGxpc3RSdWxlcy5hcHBlbmQoc3R5bGVTaGVldC0+aXRlbShpKSk7CkBAIC02MzYsNyArNjM2LDcg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxl
OjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KIAogICAgICAgICBhdXRvIHN0YXR1cyA9IGl0LT5k
aXNhYmxlZCA/IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkRp
c2FibGVkIDogSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0
aXZlOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNy
ZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldE5hbWUobmFtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnku
dmFsdWUpCiAgICAgICAgICAgICAucmVsZWFzZSgpOwpAQCAtNjk2LDExICs2OTYsMTEgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJ
bmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZl
UHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9u
aWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29weVJlZigpKTsKIAogICAgICAgICAgICAgICAg
IGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52
YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0
dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91
c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNl
dChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5LmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBib29sIGltcGxp
Y2l0ID0gbV9zdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0KG5hbWUpOwpAQCAtMTMzMiwxMiArMTMz
MiwxMiBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAg
IGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG5ld1N0eWxlU2hlZXQgPSBTdHls
ZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOworICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVT
aGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlciht
X3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVu
dCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7Ci0gICAgQ1NTUGFyc2VyOjpwYXJzZVNo
ZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5
bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKKyAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJ
bnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVldC5wdHIoKSwgbV9wYXJzZWRTdHlsZVNoZWV0
LT50ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0
YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5
bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBmMmVkNWVm
ODc2NmQwNDc5YWU0N2QwZDIzMzRkZDk3YTQ5MDMwZTlkLi5jYWQ2NjY5M2E3ZTc1MzhmMjljYzIx
YTk5OWZjMTY3MmM3NTExMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNDM4LDggKzQzOCw4IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAKICAgICBjb250ZXh0LmNhbnZhc0Jhc2UoKS5hZGRP
YnNlcnZlcigqdGhpcyk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JD
YW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBtX2lkZW50aWZp
ZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGlu
c3BlY3RvckNhbnZhcyk7CisgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52
YXM6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5z
ZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVm
KCkpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0
NTAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJp
bmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleAogICAgIGlmIChtX3JlY29yZGluZ0F1dG9D
YXB0dXJlRnJhbWVDb3VudCkgewogICAgICAgICBSZWNvcmRpbmdPcHRpb25zIHJlY29yZGluZ09w
dGlvbnM7CiAgICAgICAgIHJlY29yZGluZ09wdGlvbnMuZnJhbWVDb3VudCA9IG1fcmVjb3JkaW5n
QXV0b0NhcHR1cmVGcmFtZUNvdW50LnZhbHVlKCk7Ci0gICAgICAgIHN0YXJ0UmVjb3JkaW5nKCpp
bnNwZWN0b3JDYW52YXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhdG9y
OjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CisgICAgICAgIHN0YXJ0
UmVjb3JkaW5nKGluc3BlY3RvckNhbnZhcy5nZXQoKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVj
b3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09wdGlvbnMp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYWUzYWNhZmQwOTBiMGFj
MTVjN2VmZDZmZWI4OTU5NDY0OGQ4OTk1MC4uZGVhNWM5YTMxZDRjOTI4YmIzNGUxOGNiZGQ0NTQ5
NGFlYjFhYmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBA
IHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAgIHJldHVybiBLZXlQYXRoOjpjcmVhdGUo
KS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51bGwpLnJlbGVhc2UoKTsKIAogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAg
ICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtl
eVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBL
ZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgp
OwogICAgICAgICBrZXlQYXRoLT5zZXRTdHJpbmcoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGtl
eVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikgewogICAgICAg
ICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3IpCiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShz
dHJpbmcpOwotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0
ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJh
eSkucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRBcnJheShXVEZNb3ZlKGFycmF5KSk7
CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVlNDRl
YWNhYmRlNWFhMTA3MzI0NTU5NDgyNWNhNzZkZDIzMTE3ZDUuLmMwZWMzZWY2OGJiZTdjMTI5ZDk2
YTAyMWVkYzQ4YjU2MjQxMWQ3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg5Miw3ICs4OTIsNyBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IFN0cmluZyogZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKICAg
ICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGZyYW1lKTsKICAgICBpZiAoIWFyY2hp
dmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2
ZSBmb3IgbWFpbiBmcmFtZSJfczsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZjY1YWViYzlkZjZhNjViZDJmZjQ4N2RmYTM2N2I3YzNl
ZGZiOTYyLi41NjBjM2E1MDYwY2FlNjJlMDBjNjI4NGUyNTk3Mzc4MjEwMzllY2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzgzLDE0ICszODMsMTQgQEAgY2xh
c3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyIHsKICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVz
cGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKLSAgICAgICAgUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CisgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7
CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250
ZW50UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MTMs
MjIgKzUxMywyMiBAQCB2b2lkIEVtcHR5RWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVu
ZG9TdGVwJikKIHsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5z
aWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVz
cGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1
bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTUz
NTQ3OTExNDdlNTg4YTA5NGViNmNiYWMxYjQyN2ExN2VmZGRhZS4uYTg3M2IxZDBlYWM3MjhkOGZl
ZjZkMGIyNTgwZTJmODU0ZTczNGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1l
TG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5
KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwotICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOworICAgICAgICBhdXRvIHJlZmVycmVyT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOwogICAgICAgICBh
ZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgcmVmZXJyZXJPcmlnaW4tPnRvU3RyaW5nKCkp
OwogICAgIH0KICAgICBpZiAoJm1fZnJhbWUudHJlZSgpLnRvcCgpICE9ICZtX2ZyYW1lKQpAQCAt
MzQ4OSw3ICszNDg5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb24KIAogICAgIHN3aXRjaCAo
ZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFhGcmFtZU9wdGlvbnNTYW1lT3JpZ2luOiB7Ci0gICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh1cmwpOworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcEZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50KCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKQEAgLTM2MzksNyArMzYzOSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0m
IGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
UE9TVCIpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUo
KSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOworICAgICAgICBh
dXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRl
bS5yZWZlcnJlcigpKTsKICAgICAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNl
Y3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKICAgICAgICAgYWRkSFRUUFVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RzSWZOZWVkZWQocmVxdWVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBlMWQ2MGViOTBlN2I3MzQ5N2MxYWFk
YzFiMzRlZDdjMzVjNDZhZTZlLi40YmFkMTgzZTA4NTQ4YzQ3ZGRkOTgyMjllZTllNjJiNGViNDli
NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyCiAgICAgU3Ry
aW5nIG1vZGUgPSBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZTsKICAgICBtb2RlLmFwcGVu
ZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKIAotICAgIFJlZlB0
cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0
KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKICAgICB3aGlsZSAoIWxvYWRl
ci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICBy
ZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2VyR2xvYmFsU2NvcGUsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CmluZGV4IDVmZDM5YmU3YmQxNDBiZWU0MmI5MWEyOGFmODZkZjc0YTdlNzRkNzIuLmMzYjVlM2Ux
ZjIyOTM0MTA2NjYyNjA5YjRhMDEwMzljMjBlOTExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTEzMSwxNiArMTMx
LDE2IEBAIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNv
dXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHN1YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKICAgICBzdWJm
cmFtZS0+c2V0TWFpblJlc291cmNlKCpyZXNvdXJjZSk7Ci0gICAgbV9mcmFtZXMuYXBwZW5kKHN1
YmZyYW1lKTsKKyAgICBtX2ZyYW1lcy5hcHBlbmQoV1RGTW92ZShzdWJmcmFtZSkpOwogfQogCiBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLCBjb25zdCBTdHJpbmcmIGVuZE9mUGFydEJvdW5kYXJ5LCBj
b25zdCBTdHJpbmcmIGVuZE9mRG9jdW1lbnRCb3VuZGFyeSwgYm9vbCYgZW5kT2ZBcmNoaXZlUmVh
Y2hlZCkKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9m
RG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb250ZW50ID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5k
T2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZh
bHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlN
RUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0yMTEsNyArMjExLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0
LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBlZTk3YjJiZDRmZDA3MjJiNWJhM2JkNWZh
ZWUxYmM2ZGZjMTY2NjIwLi5mODYzMTM1MmMyMjBkZDFmYjU0NTgxMjU3YmU1Njg1OThmM2Y2ZDk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIx
NiwxMSArMjE2LDggQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUlt
YWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAgICAgcmVt
b3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92
ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAotICAgIFJlZlB0cjxCaXRtYXBJ
bWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBu
dWxscHRyKTsKLSAgICBpZiAoIWJpdG1hcEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
CisgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJ
bWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1h
Z2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTQxLDcgKzUzOCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVz
b3VyY2UudXJsKCkpOworICAgICAgICAgICAgYXV0byByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNl
T3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3Jp
Z2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggMjc3Mjk1MDQ1NGIzMGI4NTIyODRkNmNlYjUxNTYyMjdiNmE5N2RlMi4uNjg5OTRh
Y2NiZGJkYmRiNTRjYWI1MWJiNDMzYzhmZjY0ZDRiYTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5k
b3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKIAog
ICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9IGZyYW1lLT5zZXR0aW5ncygpLmNyb3NzT3JpZ2lu
Q2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKCk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
Q1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAg
IGF1dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGlmICghYWxsb3dDcm9zc09yaWdp
biAmJiAhcnVsZS0+aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBE
T01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29ucwogICAg
IC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZyYW1lIGluIGNhc2Ug
dGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRoZSBvcGVuZXIgZnJh
bWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5l
ciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1lPiBuZXdGcmFtZSA9
IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgYXV0byBu
ZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1l
LCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CiAg
ICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFtZT4geyBudWxscHRy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2ZDE0MWVhZmRhZmFj
YTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2YjdlODBmNzllODEw
MWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02NTQs
OCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBs
ZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGljIGludCB0ZXh0RGlz
dGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+
ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOwogfQogCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBh
YzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2OGI2YzQ2ZTEzODc0
MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEzOTUsNyAr
MTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAg
IC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3Bl
Y2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMs
IHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQv
cGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNo
ZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiNDYyYjlmNTVmYTYz
ZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJiNzRkMDJmMWFkNGYy
YjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBzdGF0aWMg
aW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1By
b3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHBy
b2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJh
dGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChm
cm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2NDllODk3YjVhOTA4
Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQgRnJhbWU6OmluaXRX
aXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh1cmwpOwogCi0g
ICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5
bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7CiAgICAgZG9jdW1l
bnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0
ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0gICAgc2V0
RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50LmNvcHlSZWYoKSk7
CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKmRvY3Vt
ZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUo
KmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAgICAgIGJvZHktPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBAIC02MjksMTYgKzYy
OSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBj
b25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCktPm1hcmtlcnMoKS5t
YXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0aGF0IHByZWNlZGUg
dGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiAh
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
KSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5nVGV4dFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWluVGV4dChwcmVjZWRp
bmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJlY2VkaW5nVGV4dFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWluVGV4dChw
cmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlmICghcHJlY2VkaW5n
VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnBy
ZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yTWFya2VyID0g
UmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRl
eHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkpOworICAgICAgICAg
ICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50KCksIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpLCBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSkpOworICAg
ICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9y
TWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudEZv
ckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9uc0NvdW50OyArK2kp
IHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhlIGl0aCBpbnRlcnBy
ZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwgb3Igb25lIG9mIGl0
cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JD
dXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwgYWRkIGFueSB0ZXh0
IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFmdGVyTGFzdE1hcmtl
clJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9z
aXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkp
OwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1h
cmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6
OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOworICAgIFN0cmluZyB0
ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLnB0cigp
KTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICBh
cHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXgg
ZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2YmVkMTA4NjlmNjc1
ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYsOCArMTU2LDggQEAg
dm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVJbigpCiAgICAg
W2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAgICBbYW5pbWF0aW9u
IHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRm
b3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9u
LmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3Jt
Q0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsICpwbGF0Zm9y
bUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhp
Y3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5
KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKQEAgLTE3NCw4
ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFk
ZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigp
OwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5p
bWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgp
KTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXll
cigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAqcGxhdGZvcm1Bbmlt
YXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEzZTIzLi40NmZjODEx
Y2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFyZWRCdWZmZXJEYXRh
VmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIAog
UmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNp
emVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2YoY2hh
cikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVhdGUgYnVmZmVyLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVvZihjaGFyKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1ZjIyMzYzNjcxOTJm
MGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4OWRlZDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAt
MTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6
aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAgLy8gKGhhcmR3YXJl
KSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5kZXggKiBSZXNwb25z
ZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZyYW1lICsgUmVzcG9u
c2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVSYXRlQ29udmVydGVk
UmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFt
ZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNlID0gQXVkaW9CdXM6
OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3Bv
bnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVTYW1wbGVSYXRlQ29u
dmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1cywgc3Rh
cnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0
ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdl
dCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBsZWZ0RWFySW1wdWxz
ZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKICAg
ICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5u
ZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMxOGRlYjlhMDcwNDVh
ZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0NGY0MWQyYjZkYTM4
N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNv
dXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBB
dWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAgUmVmUHRyPEF1ZGlv
QnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxz
ZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNlRnJh
bWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBtYWtlIHRoZSBmb2xs
b3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1vcnkoMCwgYnVmZmVy
LCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3NjhlZmI3ZDYuLmNk
ZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAgUmVmUHRyPEF1ZGlv
QnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1p
eFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1f
Y2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRp
b0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOwogICAgIGF1ZGlv
QnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5R3N0cmVhbWVyQnVm
ZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwgYXVkaW9CdXMtPmNo
YW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgyNWIwYjRjNzE0NGVi
ZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIzMDRhMmI4YTYyMTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxl
UmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4g
QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01v
bm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJP
ZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUg
UENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlv
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsK
ICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fY2xp
ZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRlcgogCiAgICAgLy8g
T25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1ZDU1ZDU1NDMzZWIw
ZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZjYjEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyArNTEsNyBAQCBjbGFz
cyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAg
c3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNyZWF0ZShISUNPTiBo
SWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0KICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRleCAzOGI1MTkxYzYy
MDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQwZmZiNThkM2JlYjFm
NjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZSB7CiAg
ICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAgc3RhdGljIFJlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KKyAgICBz
dGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7
IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAg
ICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4Y2I4NTA2Yjk5ODdm
YjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmE5MzU1MDAzODlhYmRiM2QxNGU3NmVkODdkMzNk
YTQ3M2E2ZjYxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsxODkxLDggQEAgYm9v
bCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdpdGgg
dGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0s
IFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXpl
ID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNp
emUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0
YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAw
LCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5z
ZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAgIGF1dG8ga2V5VVJJ
QXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwg
a2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsNyArMTkwOCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUo
bV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2UmVxdWVzdCk7CiAgICAgbV9vd25l
ci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CiAg
ICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhh
MzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMg
ZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50
KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNy
ZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJl
bnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCBkMDU3ODVjYWUzNjE2ZGZmYmU5OTM5ZTAzZGE1MTkzYzY5MTQ5
NTRmLi4zMTA3ODBjM2FjYWJkODE1NTVjM2QwMTllM2I0OGM2Y2Y3NzdhOWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxS
ZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3Qs
IEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBr
ZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50Pihl
bmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3Rh
dGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5i
eXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0Rh
dGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
QXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBD
RlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxv
YWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7
CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVl
c3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0
TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEy
YTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0
YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVi
bGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2Rm
ZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
PiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50
KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwg
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQ
cml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNl
UHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQs
IGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2
YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAt
NzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3Rh
bmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7Cisg
ICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VC
dWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9r
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggODMwMGRjM2I2ZTM5ZThjYWIxNDVhZWJhMjE3NmU5ODExZGZjOTg3MS4uZjE3
NjI2MjM0YjliNWEwYWRlOGMyNzU0N2E0NDY1N2E0ODJhY2QxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3
OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBj
bGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZm
ZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRp
YyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsK
IAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KaW5kZXggYTk5ZmViN2Y2NTNjOTkxMTZkMGYzMzllYzM3NzVmYzIwY2VmMGJlZC4u
MWM1NjYzNjYwZDlhZWRjYzg5ZTZiNTIzM2I4ZmM0YWIzZDZlZDZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQz
MCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRy
YWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVh
dGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJX
YXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwg
Q0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUo
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFW
QXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9U
cmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAg
ICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlk
ZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZN
b3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlk
ZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAg
ICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1
ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZv
LnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1
ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBp
bmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJh
Y2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3Jp
cHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAg
ICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2
ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkp
OwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAppbmRleCA4MGNmYzRmYWMzNDVjOTJlY2Q2MTczN2ZjOTI1NGRjZDhiNzU1YmY4Li45MWRiNjU0
MWM0YjEyM2FlYjM0NmVhMzkyYWUwNDM4NDBkMjQzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQs
OSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QK
ICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxl
R3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9s
bGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBn
cmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXll
cihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRp
YmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9
IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGls
ZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
aW5kZXggYWUxOWI4YzUxNzFmZDU3NDFhNTUxNWY3NmE2OTg4NjY2MmZhZjA3Yy4uZGI5ZDQ1MzEw
N2JkNDkwMDUxNjUyMGQ1YTA2NzUyMGFjMjY2YTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsK
IAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7Cisg
ICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBU
aWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1
cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkx
YWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMz
YzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYs
NyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlm
ICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQog
ewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NB
Q0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmll
d0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0
YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNj
Mjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJN
ZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwg
ZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9y
LnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigp
OwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0
KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5w
dHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAg
ICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZl
ci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDk0NzY4ZGMxYTkyYTJmNjRiZjJjZTIxMjY4ODE0YWEyOWEwOWY2Y2YuLmRlNzhk
YjYwN2ZhMTFmN2E1OGRlZmY0YTk4MjQyM2JiOGJhOGRkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBH
U1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4
dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3Ry
ZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNr
KTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3Bs
YXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0
cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
bWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7
CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlk
ZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRl
b1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFj
ay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQo
KSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVh
bXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAg
ICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFr
ZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJh
Y2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwog
ICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5
LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4
dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1J
ZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAg
ICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAg
fQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEy
OTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5U
OgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsK
ICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJn
b3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxh
eWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAg
ICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRF
X1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5n
UGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAg
ICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxi
YWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwo
Z3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3Np
bmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAg
ICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJp
bmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24u
Z2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXll
ci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4
KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNz
aW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyAr
MTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1Rz
U2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RN
cGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0
cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAg
aWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49
IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1i
ZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAg
ICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4y
IFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAg
VVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRU
b0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAg
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsK
ICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAg
ICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBu
ZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFj
MjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5Yzhh
NTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+
IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsK
KyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxl
LmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMDI2YTIwNTczZWMzMmFkYjJhM2JjOGE2ODYw
MjNlYTgwYWQ4MzEwOC4uZDA5MjkyMGMyNmJkNjBlOTgzYmZhMTQzNjZkNTYzOWVmZmZjZTQ1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2
b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwor
ICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3Jl
YXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAg
ICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJl
c2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQ
aXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAg
ICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkp
OwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgq
bWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBs
ZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5
ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZl
ci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5y
ZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAg
ICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAg
ICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlE
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICgh
cGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
b2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBh
cnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29s
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNl
dCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRh
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBh
cnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6
ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0
ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0
aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6
cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdm
Yzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0
ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1
NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQog
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9w
ID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0
byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50
aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3Zl
KGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0
NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNk
ZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRl
KFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQp
OworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1
cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRl
eHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNf
Y2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4
dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdh
NThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5
Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0
aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlm
IChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9u
ID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYg
KHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBw
ZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09w
ZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9u
ID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6
IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NjBkYTM4NjM4ZWY1MmE5MGVkMWZkODliNTJkZWU5
NjU0MzAxNTNjLi4wNmMwYTE5ZjMwZDM5ZDE5MTlkMmI0Y2ZkNDFkNDQ3ZWMwNTQyMTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1h
Z2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
IC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRo
ZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRo
ZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9k
YXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGly
RW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRh
KCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0s
IG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNv
ZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7
CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9u
bHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2
NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJk
NDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXph
dGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNp
emVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAg
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7
Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tU
cmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9m
ZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9
IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9j
a1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0Jv
eCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gu
bGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAyYThiMjRiZDJmOTIxZTFj
MWYzNTAwMjIyNzdhODMzODdlYzM3YWZlLi40MjU4ODk3YmU2YmUzOTExZTYwYmVkYWMxMDFmMzNl
MDk5YmNkMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVO
b25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZp
bmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAg
c3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0Jv
eCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkp
OyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2Rl
YygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmlu
YWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94Owog
fTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVk
aWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBh
cmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkg
JiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkg
ewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
c2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0
YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBN
b2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGgg
PiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0
cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3Ry
aW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAo
dHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9j
a0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9j
a0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNh
bXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tT
YW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAg
ICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYjNmOGFmNDJhMmY0MmFl
YjllZGVjZTZhYjMzYjVlODdhNTI3MjUyOS4uMTU3NjAwNTNjYmYwZjA1Mjk0MzM4YzQ3ZjI2MTE1
MjNiYTk4MjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tN
ZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1f
bWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkw
ZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRj
NjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1Ry
YWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0
VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2Nr
VHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRl
KGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJh
Y2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJv
eCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQor
ICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1Ry
YWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRl
KGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZDdjMWU1
ZmFhMGRlNTA3ODNiZmI0NzcyNGJmNTk5MTlhYjY2ZjkxZC4uYzQ5ZjQyMTc4MTIwYTRjM2QyYjRk
MzAyNjg0YjJkODNhZjFmNDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxG
b3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3
YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRl
eCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUw
ZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9y
YWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9i
c2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2
ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2ll
U3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3Rv
cmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcx
YzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3
MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0
LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVT
dG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9y
YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tp
ZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEw
MTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFw
cGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVt
LmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsK
ICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291
cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAg
ICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RF
TVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZd
IChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAx
NjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNl
OTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsx
NjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8
SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rp
b25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlv
bmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+
IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5h
dGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0
aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9u
RGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBS
ZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFy
eShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRp
Y3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5E
aWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0
OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1
cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAg
ICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1f
cG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVw
TWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3Bv
cHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBv
cHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEz
Y2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNo
UG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9w
b3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2
ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5k
ZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhl
bHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBk
b2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGlu
Z0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3
LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0
cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQg
LSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwog
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAw
eDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ry
b2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1
LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkK
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRl
ZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJH
cmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRp
ZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUp
LCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJH
cmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAg
ICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywg
MTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4
LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJl
bGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBw
ZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhl
aWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQog
ICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3Np
dGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAg
ICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAg
UmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0p
OwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcs
IDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDEx
OCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBD
b2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBS
ZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0Lngo
KSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7
CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwg
MTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUs
IENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50
KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgp
OwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50
J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1l
bnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUg
cm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwog
ICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAg
IHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAK
QEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFp
bmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWlj
b25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25J
bWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25J
bWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5
NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApA
QCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8
ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlz
IHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAg
ICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShB
ZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1t
eUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRl
KEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVl
KTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVt
bXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBp
bmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZl
Y3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApp
bmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0
NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxT
dG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdl
QXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsK
IH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VB
cmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywg
UmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHko
JndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAg
ICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1f
c3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4
M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBT
dG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFn
ZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
dG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYp
OwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUw
LDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0
ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEm
IGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVh
JiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRl
OgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBT
dG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQ
dHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVh
PiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3
ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIx
Mjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAt
MzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBu
ZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRm
Li41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBh
Z2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBh
Z2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2
ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZm
Li5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFn
ZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEo
RG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQ
YWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAg
U3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5h
bWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAw
OworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAK
ICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
aW5kZXggMDI1Yjk2YmJjYjQ0NDg2MTFjNzM0NWIwY2RmYzdhMTBkOTZjZTUwNi4uODVmNmZmMTJm
Mzg1NWU3MmYzNTE1Y2YzMjdiNTM5YjVmM2QwMjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBT
VkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlm
ICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdB
dHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAg
ICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIx
NjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi5jMjQxZTMwZTM5ZTY1MDhhMjliNzU0Yzg3
ODZhOWQ4ZjgwZTNhYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICgh
aW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAg
RmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygp
OwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3Rz
LmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAKaW5kZXggNTE1ZDMyZmZiY2Q3ZTUzYTdiYjRmNThmZGFiODI1YmY2MWM5N2I3
OS4uNzUxM2FjZTUxNzkwZjg2ZDhlOWNmOGUwYzgxNjQ2MjkwNzIzMzk0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQz
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRy
aXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CisgICAgYXV0byBl
ZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBmaWx0ZXJW
YWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMwMDE5NzAzZTNkODdiOWMz
MzI0MzI3YzQ3ZGJhYjIuLjUyYmU5NzEyYmM1ZjYxYWI0N2UyMjY4MDAwZjJiMTk2ODBmNjY5NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcApAQCAtODksNyArODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdAogICAg
ICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5z
ZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggYTEwZTNhNzIxY2ZlYWJk
NDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uZDM4NTU3NDc3YzE2ODliMjE4YWJkYzlmMGE5MTYz
ZjE0OTVjYmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2
Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0g
RkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGsz
KCksIGs0KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwog
ICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggYjliMDIzYWMwMDZjMDdl
Y2NkZDA3Nzc0OWQyNzI1OTIzZDJiZmQwNC4uMDY3ZjEyY2I3MDM5ODJjN2VkMTQyODRmMDRjNjBk
MzdjN2UxZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlp
bmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGlu
Zzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQo
KSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdo
dFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShm
aWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVu
aXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsK
ICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBl
ZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRiNWZmYWZkNDRm
NTMuLjE0Zjc3ZjlmNmY4ODEzMTk2NGJiNDJlYTI5NWQ5MTM3ZTY5Y2RkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBpZiAoIWlucHV0MSB8
fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3Rvcigp
LCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYg
aW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMu
cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1NTBm
NjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi5kNTRlNWYyYjY4NWU5OTM1Nzlh
Zjk1MTkzNzc2NWZhMzRlYTNiMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIs
IHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3Bh
Y2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0
ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0
eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1
cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAppbmRleCA5MzMxODdlNmQwNDlhNGZlZjdkNzE0ZTZhMzk1NjUxMTQxYTRjYTAw
Li4zMjBmOTIxZmUwYWZiZWUyODJmNGRmNzg3NzNkZWJjYzc4ODEyYmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8
IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZp
bHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlv
blgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZm
ZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkxYjgx
MTliOTZiZjVkYzg3NDM1Yjg5Li5mYjkyYTM1ZThkNDQwMzc4YzIwYzBjNjI1ODVjN2I1ZWE5ODRk
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
TWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRl
KGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZU
eXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggZmNiYzYzYjYyZTZlMTA2ZWJiNWQ1
NjIwOWUzZjUyOTlkOGIwYjZmYy4uZTNlODFhZmUxYWY3ZjEyNmU0ZDliMDdlODAzOWMyZThhYjhk
ODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgaWYgKHhS
YWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRl
ciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CisgICAgYXV0byBlZmZlY3QgPSBG
RU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRp
dXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0
dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAK
aW5kZXggMjgyMzY5ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uYzQwMmU0MDNl
YjJiOTQ0Mzk4OGM4YjBlYTk0OWIzN2ZkMDI0ZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgp
LCBkeSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgp
LCBkeSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAg
IHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIx
NzczNzg3M2QwY2ZlNy4uOWU0ZDdmZDQyN2ZjYjFkMGMxYmJjZWE0MzQ1ZDVlYmU5NWRjZTUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAg
CiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xv
ckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNy
ZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBz
cGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZ
KCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNv
bnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCAzZjM4NzlkN2U2NmE4YzFkZGY5OTIz
MjYzYjdmZTAwNjI1NDg5MjQ0Li5hZTBkMTkxOTgwNTdiOGYyNDIyZjFiYmZjNTE4MGY1M2QwZWE1
NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVU
aWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZp
bHRlcik7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICBy
ZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRl
eCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFjMTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4
MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2Jz
ZXJ2YXRpb24uaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdDT2JzZXJ2YXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7
CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4gc3RhdGljIFJlZjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAg
ICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2Rj
NmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4uOTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIy
MDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIFJlZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVu
dChyZXN1bHQuY29weVJlZigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlw
ZSk7CisgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJj
ZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0Vt
cHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRl
eHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5z
ZXREZWNvZGVyKFdURk1vdmUoZGVjb2RlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4
NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUwYTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVm
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1
bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJz
ZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwg
cGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNl
cjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7
CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0gcGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVu
ayk7CiAgICAgLy8gRG8gbm90IGNhbGwgZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQo
KSBpbXBsZW1lbnRhdGlvbnMgdG91Y2ggdGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQg
Y2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRh
Y2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVk
IGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRk
NzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtNDksNyArNDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogc3RhdGljIElQQzo6Q29ubmVjdGlvbiogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxX
ZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDMyMWEwODM4NjkzODZjNGZiZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5
NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVhMmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBA
IHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25u
ZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNz
Q29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5l
Y3Rpb24ubW0KaW5kZXggYjlmYzg5NTBmYTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4u
Yzc2NDk2YjczMTI0NjdjMzY2MDYyZmFlZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCAr
MTAzLDggQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilk
ZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRNZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2Fn
ZU5hbWUgYm9keTooaWQpbWVzc2FnZUJvZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2Jq
ZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRl
KG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VO
YW1lLCB3a01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJL
aXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25u
ZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0K
IAogLSAoV2ViS2l0OjpXZWJDb25uZWN0aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3
NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1
YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzExMzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFw
LT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5z
SW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Uu
Z2V0KCkgc2l6ZTpOU01ha2VTaXplKHNuYXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAg
ICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAt
IChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFW
RShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQg
Y29tcHJlc3NlZEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAg
ICAgaWYgKFdlYkNvcmU6OklPU3VyZmFjZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9y
bWF0KHNuYXBzaG90Rm9ybWF0LCBjb21wcmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8
V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90
OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRv
Rm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0
MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNv
bnZlcnRlZFN1cmZhY2UpIHsKKyAgICAgICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZp
ZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxwdHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3ZlKHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZv
cm1hdDo6WVVWNDIyLCBbdmlld1NuYXBzaG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAg
ICAgICAgICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBz
aG90LT5zZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsK
QEAgLTU5MDIsNyArNTkwMiw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJ
blZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5k
bGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAg
IGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRs
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAg
ICBpZiAoIWJpdG1hcCkgewogICAgICAgICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBj
YjlhODBhMzdhYWNjOTViMjVmOTNjNDIuLjk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVj
ZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBA
IHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGlu
dCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
biBjb3JlUG9zaXRpb24geyBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0
aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3Vy
YWN5OwotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1f
Z2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdl
dCgpKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3Zp
ZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdl
b2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVz
c2FnZSAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKaW5kZXggN2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1
ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAg
Z19yZXR1cm5faWZfZmFpbChHX0lTX1RMU19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZv
PiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0
ZUZsYWdzPigwKSkpOwotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJp
bmc6OmZyb21VVEY4KGhvc3QpKTsKKyAgICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNl
cnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0
ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3
ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8v
V2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJh
NjhkMWRmZGNhMDA1NmNjNmNkZGYyN2NmNmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5
MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lv
bkNhaXJvLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJh
c2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2Nv
YS5tbQppbmRleCA2N2YxMjIyYTc0NmM2NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIy
NDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlRGF0YUhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0
MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZjZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2
ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVw
ZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUg
PT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5k
bGUpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5m
by5iaXRtYXBIYW5kbGUpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRl
eCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEwZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFm
OTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRiNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0
KFdlYlBhZ2VQcm94eSYgcGEKIAogc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlcihXS1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkm
IHdlYkZyYW1lUHJveHksIE5TRXJyb3IgKm9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6RnJhbWVIYW5kbGU+IGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdl
YkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKKyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFt
ZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVj
b3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRl
bXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIo
KmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9y
RmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIg
PSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0
KCkpIHVybFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJM
U3RyaW5nRXJyb3JLZXldXSk7CiAKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5oCmluZGV4IDlkNzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4Mzhl
YWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2RjMGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5oCkBAIC0xNzEsNyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2Rl
bEMKIAogY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2
ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBkMTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFj
dGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJl
ZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KHBhZ2UpKTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAppbmRleCBhOTI5OWYxYjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjky
Li4yOTdmOTY4YjM1MjllMGMzNTVjZDRkYjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dCBmaW5hbAogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAg
ICAgdmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcy
ODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5
MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJl
KCkKIAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkm
IHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkpKTsKIH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KaW5kZXggMTcxMGRmMTljNDI2NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRh
ZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
QEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2Fy
ZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIHNpemUpOwotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5
cGUpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAg
IG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRC
dWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4
ZWUwNzA1OWEzMTNiMi4uZTQ2M2FjOTk0YmI5ZjhhYWM0NGZlODI5MzhiZTEzNjE2YmIwNTkyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQz
NzQsNyArNDM3NCw3IEBAIFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmll
d1NuYXBzaG90KCkKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0
ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90Ojpj
cmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUp
OwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDc1MDlkZGVkYjRjMDhl
NmJlODU0YmI3Y2VmNzI1YTk3OWQ4MGRjZWUuLjg2ZGMwOWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFm
MTcyNzFmNjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBEb3dubG9hZFBy
b3h5TWFwOjp+RG93bmxvYWRQcm94eU1hcCgpCiAKIERvd25sb2FkUHJveHkqIERvd25sb2FkUHJv
eHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBS
ZWZQdHI8RG93bmxvYWRQcm94eT4gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0
ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7Ci0gICAgbV9kb3dubG9hZHMu
c2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eSk7CisgICAgYXV0
byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9v
bCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+
ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCAqZG93
bmxvYWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93
bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5nZXQoKSk7CiAKLSAgICByZXR1
cm4gZG93bmxvYWRQcm94eS5nZXQoKTsKKyAgICByZXR1cm4gZG93bmxvYWRQcm94eS5wdHIoKTsK
IH0KIAogdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAKaW5kZXggNzk2NTg2OGJlMDQzMzllNzg0OWY0ZGQzNDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYz
ZmNhODg4NzE5YmU3ZjYyNzJkMjA1NzIwYmI4OTAxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTEgKzk2LDExIEBAIEhhc2hNYXA8U3RyaW5n
LCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCkKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25z
dCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcs
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAgdWludDY0X3QgZ2xv
YmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAg
UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpj
cmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcs
IGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlm
aWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3Jp
Z2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+
cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1f
bm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9i
YWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKSk7Ci0gICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgKm5vdGlmaWNhdGlvbik7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmlj
YXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmlj
YXRpb24uY29weVJlZigpKSk7CisgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZp
Y2F0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNh
bmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyNWM5YzZjZjU2
Y2YyNTQzNDg3NmZkYmQxNjZmMTRjMDhmODE1MzQuLjQ3MDg4MTAwZWUzMWQwN2E2NmQ3ZTkxNThl
NDk5NThiOGRmODU5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzY0OSwxMCArMzY0OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3Vi
ZnJhbWUodWludDY0X3QgZnJhbWVJRCkKIAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5j
YW5DcmVhdGVGcmFtZShmcmFtZUlEKSk7CiAgICAgCi0gICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+
IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKKyAgICBh
dXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKIAog
ICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9j
ZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgKnN1YkZyYW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZy
YW1lQ3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRp
ZmllciYmIHdpbmRvd0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggZmE0M2EzZDFlNzgzMDkyYmI3YzAyMTgxNDdmZDE2NGY4MjdiMDNj
MC4uOWUzZjQwNGJkNmU2YWJiM2FiMjQzOWFiYTcyN2M2YjVjMzliZWY2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTcxMyw3ICsxNzEzLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFz
aywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVh
dGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkp
OworICAgIGF1dG8gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFy
eUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwogCiAgICAgaWYg
KHN0YXRpc3RpY3NNYXNrICYgU3RhdGlzdGljc1JlcXVlc3RUeXBlV2ViQ29udGVudCkKICAgICAg
ICAgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwy
MCArMTcyMiwyMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90
IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAgICAgICByZXF1ZXN0TmV0
d29ya2luZ1N0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVz
dCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0
aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vz
cykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJv
bSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3Rp
Y3NSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykgewogICAg
ICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3Mg
YnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRp
bmdSZXF1ZXN0KCk7Ci0gICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVx
dWVzdCk7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC5hZGRPdXRzdGFuZGluZ1Jl
cXVlc3QoKTsKKyAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCAmcmVxdWVz
dCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMDYzNDMyNDliYWE3MjVhZmI2
Y2I0NDRjNTUyMzI1M2QxN2UwODBiYy4uZTZiNDQ0ZTkxNDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2Nk
ZDdiNTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00
ODcsOCArNDg3LDggQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG8KICAgICBXZWJQcm9jZXNzUHJv
eHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94
eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAgICAg
dm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0
YVN0b3JlJik7CiAKLSAgICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0
aWNzUmVxdWVzdCopOwotICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRp
c3RpY3NSZXF1ZXN0Kik7CisgICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3Rh
dGlzdGljc1JlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhT
dGF0aXN0aWNzUmVxdWVzdCYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCmluZGV4IDVlM2ZiNjVjMjMwZGJkODRkYWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQu
LmUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVjMzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmlu
ZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQdHI8SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0
YWlscywgZGVzY3JpcHRpb24pOwotICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisg
ICAgYXV0byByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7CisgICAgaWYgKHBhZ2VD
bGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0
LT5kZW55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVh
MDA0MWRiZTEwMTQ0MjdmODYzLi45MmVhZDA0NWU4YjhmYzJlNGI5OTM0NDI2YmQxMGE0YThlNTlm
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBXZWJQYWdlUHJv
eHkqIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlBy
ZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBF
TkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0
IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRp
bmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwog
ICAgIHByZWZlcmVuY2VzLT5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxl
ZCh0cnVlKTsKICNlbmRpZgotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51
bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKIAogICAgIGF1dG8gcGFn
ZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGlu
c3BlY3RvckxldmVsRm9yUGFnZShudWxscHRyKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1fd2ViVmlldyA9IEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2ViVmlldywgImRlc3Ryb3kiLCBHX0NBTExC
QUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9hZGRfd2Vh
a19wb2ludGVyKEdfT0JKRUNUKG1fd2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
bV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBiNjRlMzM1OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2
YTcxOWZkMzRjLi5jYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2Uo
KSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZl
cmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAt
MTQ2LDEyICsxNDYsMTIgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MoewogICAgIH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZp
ZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFn
ZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVj
dGVkUGFnZSgpKSk7CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQ
b29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1faW5z
cGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25m
aWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVD
VChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9y
VmlldykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9pbnNwZWN0b3JWaWV3LCAiZGVzdHJveSIs
IEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0K
aW5kZXggYzFjZjU4NzU4ZWNiYTk4NTdhMGE2MWFkNDhkNmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5
ZjY5M2NkMmIzYjU1Y2VjMjBlMTczYzJmYjRiMTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xODYs
NyArMTg2LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAg
ICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5k
bGVyOildKSB7CiAgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1l
SW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQo
KSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5k
bGVyOikpOworICAgICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVy
OikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZp
ZXcuZ2V0KCk7CiAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVl
c3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwg
ZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBh
dXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3Zjhl
ZDJjY2JhMzEuLjlmZWZmZGRmNDEwNDEyZTc2ZDJjMGMzZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAg
LTM4NCw5ICszODQsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyKQogewotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsK
ICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9p
bXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVu
c2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVi
b2FyZE5hbWUpOworICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRy
KCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVC
dWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBjYmZlMzBlOWUwYmU4MzIxNTE4
MTk2MzU1Zjc3OTgwOGI4MjRmMmY2Li4zNzk4YmZiYjVhOWM0MTRmNjBmZGMzY2JlYTljN2MwZGIz
ZTAyMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVj
dG9yUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJU
KGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3Ry
aW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9E
RSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3Ig
aW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5j
ZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdz
KHsgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFn
ZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9v
bChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAucHRyKCkpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIG5h
dmlnYXRpb25DbGllbnQgPSB7CiAgICAgICAgIHsgMCwgdGhpcyB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
UmFuZ2UubW0KaW5kZXggODI1MDkwMTc5MDBmNDc4OTQ0OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4u
OTMxMzQzZWIxYmI4NzMyZWE1ZDNiNTQyNGM1MzA2Yzg0NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVJhbmdlLm1tCkBAIC01MCw4ICs1MCw4IEBAIC0gKGlkKV9pbml0V2l0aEltcGw6KFdlYkNv
cmU6OlJhbmdlKilpbXBsCiAKIC0gKGlkKWluaXRXaXRoRG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQg
Kilkb2N1bWVudAogewotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3Jl
OjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7Ci0g
ICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UuZ2V0KCldOworICAgIGF1dG8gcmFu
Z2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRv
Y3VtZW50KSk7CisgICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UucHRyKCldOwog
ICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFk
YWNmZGIzZmFmNDUwZTdjYWU2Zi4uOGMyOTViYWViZmJhMmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlm
ZWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CkBAIC0xMzgsNyArMTM4LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXpl
IGJhY2tpbmdTdG9yZVNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNp
emUuc2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgaWYgKCFiYWNraW5nU3Rv
cmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxYTMxMjMzZTZmYzllMjgxOGEyZmNmYTMw
MTkxYTVmYTE1Nzg4YjUuLjk1MTIzMDJiMjgyZTQxZWQxYjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBA
IC0xNjgsOCArMTY4LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgUmEKICAgICAgICAgICAgIHBh
c3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0
byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhc3Rl
Ym9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggZWMwOTg2N2Jm
MDM4ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2NjNiOGQ4ZS4uNmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3
YTQyYjhmODk4Y2E5YjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCkBAIC03OCwxMCArNzgsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBp
ZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0g
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwor
ICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3Jl
YXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7Ci0gICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRv
QVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQ
SShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdi
ZDQwMDViYjcxYTAuLjg4YzBhMmQ5YzYzMTJkMmMwZWEwNmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2lu
Z1N0b3JlU2l6ZSA9IG1fcGx1Z2luU2l6ZTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNv
bnRlbnRzU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7
IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
YmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2Fs
bCBhcHBseURldmljZVNjYWxlRmFjdG9yIGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMg
dXAgY2FsbGluZyBpbnRvIFdLU0kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMyY2JhMDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUz
NTVjZDZmYzMyNjQuLjAxOTliODRmOGY0ZTI4Zjc2OWE3NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2Uo
KQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToy
MDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6
aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNw
b25zZS5nZXQoKSk7CiAKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSks
IG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50
aGVzaXplZFJlc3BvbnNlKTsKKyAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJh
cHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2Up
OwogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFy
Y2hpdmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgp
CiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9y
ZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5n
U3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0x
ODUzLDExICsxODUzLDcgQEAgdm9pZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQo
TlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwog
ICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlw
ZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5l
d0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLQotICAg
ICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAg
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDMxNDc5YWZjMjlhZGY0YWM4NTJiYjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1
OGVjZDlkMjM3ODkwNGIzNDdkMGQzYTZmNDY3ZTk0NGQyZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtODQsOCArODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdAogICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25u
ZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7Ci0g
ICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKTsKKyAgICBhdXRvIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJl
ZigpKTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25u
ZWN0aW9uc011dGV4KTsKQEAgLTk0LDcgKzk0LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QK
ICAgICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5zZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKICAgICB9CiAKLSAgICByZXR1
cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJuIHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uLnB0cigpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24qIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAz
YmI5NGYzYWJiNmJjOTFkMTYuLmQ2NTA1MzU4ZGI2ZjM1YzgxMjMwY2FmMTlkOTlmNGM0YzAxYjRm
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Q
cm94eTo6c25hcHNob3QoKQogICAgIGlmIChzbmFwc2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNu
YXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRs
ZSk7CisgICAgYXV0byBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNu
YXBzaG90U3RvcmVIYW5kbGUpOwogICAgIHJldHVybiBzbmFwc2hvdEJ1ZmZlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0
NDk1Yzk5MTEyMmQwODQzZGFiMGM4NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4
ZWVlODUyNzAwNmNlZWJjOWMzNzFlODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVn
aW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAog
ICAgIC8vIFRoaXMgcmVxdWVzdCBpcyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0u
Ci0gICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUo
dGhpcywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRk
U3RyZWFtKHN0cmVhbS5nZXQoKSk7CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJl
YW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgp
KTsKKyAgICBhZGRTdHJlYW0oc3RyZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUx
NjIyN2ZhZjc4NjI1NS4uNzhlNjczNTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZQogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5E
YXRhKTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2lu
RGF0YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRh
YmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9w
YWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3Bh
Z2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5h
bWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVz
YWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCks
IGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJl
bnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVz
YWdlKCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3
MzcsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2
NF90KQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQp
CiB7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0g
ICAgaWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0
ZXNOZWVkZWQpKQorICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmlu
amVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgp
LT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZDA1ZmM5OTZjMWQ0ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4
Y2ZjNGEwNTlmOWVmNzgxZTE0NjExMDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC03NjcsMTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0
aQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7
CisgICAgYXV0byBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5
IHRoZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kg
PSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZy
YW1lTmFtZSwgdXNlckRhdGEpOworICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kg
PSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZy
YW1lTmFtZSwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5
QWN0aW9uVXNlKSB7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2Vl
ZjljZjBiZmFmMzRmNjRkYThiMzE2MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3
YzM2Mjk5NDIzYjdjYjhmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpS
ZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBB
U1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5W2ldKSkpCiAgICAgICAgICAgICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFk
Y2Y5YWMyM2Q4ZDEzZWJkZjkzYzY3ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4
ZDA2NWVmZmYyNDRmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3Vy
ZmFjZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQo
Z3JhcGhpY3NDb250ZXh0LT5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KaW5kZXggZmZlZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAy
ZS4uZjg3ZDkzNDQzZjdjNThhODJjNDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW1lCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9
IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRl
eCBhMzhjZDJiZjYzNzk0YzhlOWYxZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYz
NmNiNzUyZWY4MTFhMTI0NWViNTVkZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0
LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9y
UmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNp
dGlvbiA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jv
c3NmYWRlKQogICAgICAgICBpbmRpY2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25J
bmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxU
ZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJh
bmdlKHJhbmdlLCBpbmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAg
ICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFu
Z2UsIGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICgh
dGV4dEluZGljYXRvcikgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBv
cHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKaW5kZXggNzgyNGU1Y2Y3MWI0N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIw
MDJiODZmNDJhMDFjZjQ4ZTVkZjY5MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyAr
NDE3LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJl
NGYzMDkyOWQxZjMuLjYzY2MyODM5MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJ
KCkKIAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2Vs
ZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7
Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4
dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hv
dWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2Ug
OiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFp
bmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMx
NWRmMTc2ZDYyMGI0NTg5ZGMzNjU5OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZm
ZDgyZWVhNTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1
c2hlciA9IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dl
YlBhZ2UucGFnZUlEKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tp
bmdTdG9yZUZsdXNoZXIsIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVl
dWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwg
cGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAg
ICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWEx
ODhiMjRiNjQ0NmQwNTI3ZGY4NjUwZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0
YjVhYjcxOWI3OTgyYzAyYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1l
bnRMb2FkZXJEZXRhY2hlZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVG
aWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZy
YW1lKCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1l
KSAtPiBib29sIHsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
KmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1l
JiBmcmFtZSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBiZTZiZWZiODE0Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3
ZDdhN2NjODQ1ZTU1MzJjM2IyMDZlN2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2
b2lkIFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0
cmluZyYgdXJsLCBJbnRQb2ludCBkbwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAg
ICAgLy8gRklYTUU6IFNldCBtb2RpZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSBzZXQgSXNTaW11bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJ
c0NvbXBvc2VkOjpZZXMsCisgICAgYXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3Rv
bmljVGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1l
bnRQb2ludCwgeyB9LCB7IH0sIDAsIDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxs
cHRyKTsKIAotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9j
dW1lbnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCks
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZl
cnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5G
cmFtZURvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50
LnB0cigpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRT
ZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBj
b25zdCBXZWIKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXlbaV0pKSkKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZp
bGVVcGxvYWQuYXBwZW5kKGV4dGVuc2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CmluZGV4IDBjODRmNjRjOGM2M2VkMWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2
YTRjOWZhZDAxNzFjMTg4M2YwMGNlYmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAg
LTk0LDcgKzk0LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihG
cmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dp
bmdGaW5kSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0
b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5G
cmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFs
TWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0g
VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwg
ZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNp
dGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNh
bE1hcmdpbikpOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDlkZjYxOGE0ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjVk
NTY1MjJiNTkwM2RhNzU3YWM1NWNhODQ4NTRmNjA5MDZjOWZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDcg
KzE4MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9z
aXRpb24ucHJldmlvdXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBv
c2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKTsKIAogICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2Uu
Z2V0KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNDEsNyArMjE0MSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRzID0g
NDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2Us
IFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRp
b25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMg
fCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9y
Q29tcGxleFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJ
bmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNw
ZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxl
eFJhbmdlcyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JP
cHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBk
ZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwog
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCkBAIC0yMTU2
LDcgKzIxNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mby5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURl
dGVjdG9ySWRlbnRpZmllcigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LmRhdGFEZXRlY3RvclJlc3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFE
ZXRlY3Rpb25SZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVj
dGlvbjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVs
ZW1lbnQtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlu
a1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlv
bkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9u
RXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5mby50ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQ
b3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25G
b3J3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIx
ODEsNyArMjE4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBv
biBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmln
dXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZp
Z3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFn
ZS0+bWFpbkZyYW1lKCkudmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1
cmF0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
c2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShi
aXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwg
MCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkMjU1NWMxOTkw
OGFiYTY2YTI0YzFjMWJkZDE1NmYyZDNkMjkwNDgzLi40N2ZjM2MyOTBmNjUwZTM2N2RiOThkNGMz
NzEzNWY5M2Y2NGU0MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFu
c2Zvcm0uc2NhbGUoc2NhbGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJl
bmRlclZpZXdBbmltYXRpb25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0
aCgidHJhbnNmb3JtIik7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZp
ZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3
QW5pbWF0aW9uQ0EuZ2V0KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7
CiAgICAgcmVuZGVyVmlld0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5z
aWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXIt
PmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5p
bWF0aW9uKTsKKyAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9v
bUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NB
TGF5ZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91
bmRzRm9yRnJhbWUoZnJhbWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5k
ZXggODA1ZmU5ZTRjYmI1ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uODgzMDE3MjY1YmJh
OTU2ZGM5ZDIyZjZiNjA0NDRiMTgwNjBlZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApA
QCAtNDAsMjQgKzQwLDI0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwg
bnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIs
IHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpFcGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1
b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVz
KSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3Jp
Z2luLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BM
ZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpT
dG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2
ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
TWFwJiBtYXApCiAgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
CitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVw
aGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUs
MTYgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZp
bmFsIDogcHVibGljIFN0b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9y
YWdlTWFwOwogfTsKIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1l
cmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGF1dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFk
ZChzZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xv
dCkKICAgICAgICAgc2xvdCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdl
QXJlYTo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1
cm4gc2xvdC5nZXQoKTsKKyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFn
ZSogbmV3UGFnZSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7
CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFn
ZUlEKCksIG1fcXVvdGFJbkJ5dGVzKTsKIAogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9z
dG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCks
IG1fcXVvdGFJbkJ5dGVzKSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1l
c3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUs
IG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5C
eXRlcykpOwogCiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VB
cmVhcykKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFz
LnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmlu
ZGV4IGYxM2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgxM2Jh
ZjVjYjVhNDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
MzksMTAgKzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAg
c3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
OworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2aXJ0
dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0
b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHko
V2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VB
cmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxT
dG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0
X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44MjU1
N2I3MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDx1
aW50NjRfdCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQ
dHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVp
bnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmIChzbG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90Owog
Ci0gICAgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVu
dGlmaWVyKSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAg
ICBhdXRvIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjsKIH0KQEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdl
YlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBw
YWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBh
Z2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0
b3BMZXZlbE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aAppbmRleCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2ZGI5
ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmll
cik7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3Jl
YXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsK
KyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3MS4u
ZmM2NTk4NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0KQEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFs
aWRhdGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0g
ICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNl
ID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0
SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNiMDIy
MWYxNmUuLjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmludmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFj
ZVR1cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRl
eHRJZCk7CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVyZmFj
ZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JF
eHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFj
ZSk7CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMuLjg2
ZGIyZDg3MThhNTRiMmY2YzI2NTNmOTNjMGFhZTliMmI5ZmQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtOTMs
MzEgKzkzLDMxIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwo
KQogICAgICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUg
PT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6
RXBoZW1lcmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdO
YW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlw
ZSwgbV9wYXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkp
OwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05h
bWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHko
KSk7CiAKICAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWE7CiAgICAgaWYgKChzdG9yYWdlQXJlYSA9IG1f
c3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpKQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7
CisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCiAgICAgc3Rv
cmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4s
IG1fc3luY01hbmFnZXIuZ2V0KCksIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0
KG9yaWdpbiwgc3RvcmFnZUFyZWEuZ2V0KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAg
ICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgw
YmZkNjVhOTY2NjE2MTM3Li5jODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1
YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5h
bWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5z
aWduZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VB
cmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFy
ZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0
NWE0NmQ2NzdjODg0YWJkOWUuLjgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTEx
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNo
U2V0PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXJzKCkKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRy
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQpAQCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3Rh
KTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQg
cXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50
YXRpb24gd291bGQgY3JlYXRlIGEgc3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1
c3QgcGlnZ3ktYmFja2luZyBvZmYKICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDBkMjA3ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0
ZWMwNzdhYmIuLmU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAg
IHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgc3RhdGljIHZv
aWQgY2xvc2VMb2NhbFN0b3JhZ2UoKTsKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNv
cmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJD
b3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCmluZGV4IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVl
MDY2N2QxYTYyMTNiOWQuLjYzY2FlMmQwYWQ1MmNkNTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5jcHAKQEAgLTQyLDE4ICs0MiwyMiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3VwcygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91
cHM7CiB9CiAKLVJlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCkKK1JlZjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmll
d0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKIAogICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5h
ZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghd2ViVmlld0dyb3Vw
KQotICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUs
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwotICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAt
Pm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNF
bXB0eSgpKQorICAgIGlmICghd2ViVmlld0dyb3VwKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KSk7CisgICAgICAgIHdlYlZpZXdHcm91cCA9IHJlc3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoOwogCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4g
KndlYlZpZXdHcm91cDsKIH0KIAogV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25z
dCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdHcm91cC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJWaWV3R3JvdXAuaAppbmRleCBmZTA1Y2Q1NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkz
MjcyYjVmLi40ZDQxMzdjZTJhYWFjM2ExNDBkNTljNjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAg
LTM4LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJW
aWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0
YXRpYyBXZWJWaWV3R3JvdXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKaW5kZXggZDA4NDkzYjBmNDJjY2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVk
MC4uODA0OWIxY2NjMjcyYzM0NzI1OTllNDk0MmU1MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhj
bGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50
KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQog
ewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwog
fQogCiB2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFy
Y2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDcxNmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4
ZWY1OTg3OWFmNGYuLjBlZjQ0YjQyYTY2MGFlMzUyYzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVw
TWVudUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5h
YmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1f
cG9wdXA7CisgICAgUmVmPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBT
ZWFyY2hQb3B1cE1lbnVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkw
MGY0ZjBlNmI5YTVlNjg5ZmMxOWM4NzM3NDQyYjViMjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBj
ZmFmMmYzMmExMzYxZjY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0
MzMsOCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFs
dGVybmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBtYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAg
ICAgWyhOU011dGFibGVBcnJheSAqKSphbHRlcm5hdGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAq
KShtYXJrZXJBbHRlcm5hdGl2ZXNbal0pXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBt
YXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01S
YW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aENvcnJlY3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgRG9j
dW1lbnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0
YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0
KHJhbmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5k
ZXggOTZhNjQ5NmMyYzQ0NjA5OTJjNWMxMmMwZGNmZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVl
MTQ5OGQ5ZjM0YjljMDk2MjkzZGMzNmNhNWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwx
MyArNDY1LDEzIEBAIC0gKHZvaWQpc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVS
TAogICAgIGlmICghVVJMKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2
ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9z
ZWQ6OlllcywKKyAgICBhdXRvIGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6
OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93
KCksIG51bGxwdHIsIDEsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwg
bnVsbHB0ciwgTW91c2VFdmVudDo6SXNTaW11bGF0ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRv
IHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVj
a3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJh
bWVdKTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRv
Y3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7
IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJl
ZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dywgIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigp
LmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCks
IG51bGxwdHIpOworICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LnB0cigpLCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4
NjM1ZTNhYThmNGFkNC4uMWI2YzgyMjg1NGEwN2YzZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9p
ZClnZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czoo
TlNBcnJheSAqKilyZWN0cwogICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMo
bm9kZSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXJnaW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBh
Z2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJ
bmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRp
Y2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0g
VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9u
VGlnaHRseUZpdENvbnRlbnQgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRl
eHRDb2xvciB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29u
dGVudEZvckNvbXBsZXhSYW5nZXMgfApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIu
bW0KaW5kZXggMWYzMmRjOTQ5OGJhNDIyMWQxMjkzOTFiODQ3OWFiYTMwYTk3OTg5NC4uNzc0ZDIx
YTlmZjg0ZjAxYTNjMTY5YmE2Nzk5MjU3YTQ3Yzk5ZWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQ
bHVnaW4KICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRh
dGFXaXRoUHJvcGVydHlMaXN0OnByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0
QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChk
YXRhKTsKICAgICAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0
YW5jZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1
Z2luVmlldywgZnVsbEZyYW1lKTsKKyAgICBhdXRvIGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwog
ICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IGluc3RhbmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAg
a2Vybl9yZXR1cm5fdCBrciA9IF9XS1BISW5zdGFudGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0
KCksIHJlcXVlc3RJRCwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtk
YXRhIGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCBpbnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAg
aWYgKGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA4ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFl
NzA2OGI3YzMyLi5hYmNhNmJiZTMzMDUzNWE5ODJlNjQyZDRjMmExODhhN2I4YThiN2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03MTksOCArNzE5LDgg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQ
bHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3
U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQg
dG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpK
U0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
ICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICAgICAgbV9z
dHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICAgICAgbV9z
dHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAg
ICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTc5OSwxMCArNzk5LDEwIEBAIE5QRXJyb3Ig
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJl
cXVlc3QsIGNvbnN0IGNoCiAgICAgICAgIG1fcGx1Z2luUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUo
cGx1Z2luUmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVx
dWVzdElELCByZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAKICAgICAgICAg
QVNTRVJUKCFtX3N0cmVhbXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0gICAgICAgIG1fc3RyZWFt
cy5hZGQocmVxdWVzdElELCBzdHJlYW0pOworICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJ
RCwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDlhNzQ1ZDkzODNmNzQ0N2Y1NDJkZjUwNDVlMjQ0NWIz
ODUzZTA4ODAuLjFkMWU4YWVmNjc1MjM2MWYzZWNjMDQ2NTA1ZDQ2NTdjMjU0NmI0YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNj
cmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAg
ICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9k
cyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemls
bGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNy
ZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2lu
UmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7
CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVz
dCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAg
ICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgLSAoTlBF
cnJvcilsb2FkUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5UYXJnZXQ6
KGNvbnN0IGNoYXIgKiljVGEKICAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cihsb2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5
OjBdOwogICAgICAgICBbcGx1Z2luUmVxdWVzdCByZWxlYXNlXTsKICAgICB9IGVsc2UgewotICAg
ICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBu
b3RpZnlEYXRhKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVh
bTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7
CiAKLSAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFtcy5h
ZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk2ZWY5MjFmZDYwNmVjZjA4MGVl
ZDEzMWQ0YjhkOTEyZDUxZjNmZmIuLjIzNDc4MWIwYmU4NmE0YmRhNTBjMGNlNTY0ODQyMjM4OGI0
MmJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0yMDcsOCArMjA3LDggQEAg
UmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFZpc2li
bGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikp
OwotICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAg
YXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJh
bWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBm
cmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGVjOGU1OGNmMjA3YmJjYjA0ODIyZWQy
YjE1ZGVhZDA2NzYyYTU2N2QuLjg0NjBiMDNmNTBjN2MyYjEzYTE3ZWZlNGM4MzhmYjdiOTIxOTBl
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KCkKICAgICBpZiAoaXNNYWluRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNv
cmVGcmFtZS0+dmlldygpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUt
PnNldFZpZXcobnVsbHB0cik7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gY29yZVZpZXcgPSBGcmFt
ZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKKyAgICBhdXRvIGNvcmVWaWV3ID0gRnJhbWVWaWV3
OjpjcmVhdGUoKmNvcmVGcmFtZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KGNvcmVWaWV3LmNv
cHlSZWYoKSk7CiAKICAgICBbbV93ZWJGcmFtZS5nZXQoKSBfdXBkYXRlQmFja2dyb3VuZEFuZFVw
ZGF0ZXNXaGlsZU9mZnNjcmVlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA3YjliYjg5OTA4YWU1YzFhNjUyZTM2Y2M4ODliZTA0ZTU2NTRjOTQ2
Li5hOTNkZWY2MTM5OWE1Y2M1NGVmNjFjYWU5YzAzNzk5MDU4OTBjZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE3NDYsOCArMTc0Niw4IEBA
IC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBh
bmRNZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3Rh
cnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBET01S
YW5nZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJh
bmdlID0ga2l0KHJhbmdlLnB0cigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1l
dGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKICAgICAgICAgICAgICAgICBbbWV0YWRhdGFz
IGFkZE9iamVjdDptZXRhZGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA5YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2NDRjOWU3
ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQwYzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEzNDgs
NyArMTM0OCw3IEBAIC0gKHZvaWQpX3dyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczoo
TlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0IEhUTUwg
b24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNo
aXZlUGJvYXJkVHlwZV0pIHsKLSAgICAgICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
b3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShb
c2VsZiBfZnJhbWVdKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CiAg
ICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNoaXZlID8g
Y29yZUFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGZvclR5
cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3
ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2MzkzOTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBjOTFmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDcyOSw4
ICs0NzI5LDYgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3Jv
dXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwg
U3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihX
ZWJTY3JpcHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9
IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYg
KCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAKaW5kZXggNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkwNDliNDYz
Zi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAg
IHJlbW92ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQ
bHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQs
IGxhc3RNb2RpZmllZCk7CisgICAgICAgIGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNy
ZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBh
ZGQocGFja2FnZS5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5n
ZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGY4NTVkZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0NGNjYTJm
NDUuLmQzZTMzOWY3NTk0OGEzZTNlMWQ5MjlkZWU3NmQ4YzJlZDQ2ZGRmMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDEwLDcgKzQx
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVx
dWVzdCkKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVh
dGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFzcyBpdCBv
ZmYgdG8gdGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFt
OjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVx
dWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJl
cXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCks
IG1fcGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9h
ZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigp
LCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5j
ZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJl
YW0pOwogICAgICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDU0LDcgKzQ1NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVx
dWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3RyaW5nLnV0Zjgo
KTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbSk7CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwg
Y3N0cik7CiAgICAgfQpAQCAtNjkwLDcgKzY5MCw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRv
IHJvb3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwot
ICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8g
aW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1v
dmUocm9vdCkpOwogCiAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThlZjU4ZmU0MTZmY2JmYjY3NWVk
ZTNmYzU4OTZjLi4wMzU5ZDkwMWFjY2NkOTEyNDY5MTFjZTkxZmMyM2NlMWIwYmEyNGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4g
cGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1l
bnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkp
OworICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2lu
U2l6ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBs
b2FkTWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0
YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0x
MTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0
cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJG
cmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2lu
VmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAm
ZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1q
YXZhLWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJl
IGxvYWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1
Z2luVmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAppbmRleCBjMDMyNDJjN2Q2YjYyZDhmYzYzNWQ5YTBkN2JkNmU1ZDdjMjU5ZmVkLi40NWU0YTU3
YjVhOGJhYzJkYTdiNDRlNGRmYmY4MjFjYWVmMGFiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJl
cXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJh
c2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWlt
ZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICgh
bWltZVR5cGUpCkBAIC02MTAsNyArNjEwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEo
X0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0
LCBfSW5fIEJTVFIgdXJsKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4
dCksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwog
ICAgIEJTdHJpbmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAg
ICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0
YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5n
LCB1cmwsIG51bGxwdHIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIAog
dm9pZCBXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8g
QlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4o
aHRtbFN0cmluZykpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBT
eXNTdHJpbmdMZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhU
KCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1
dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaAppbmRleCAxYmFkZDAxYzNhNzY0MGNjZjExMzA0YTQzNWE3YjFlMjQ1MTE1
ZmRlLi41MDJjYTg5ZGY2YjkwZDBhMjc3ZDc5YjFiYjU5ODcxYjVkMTE0MjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBERUNMU1BFQ19V
VUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIGZp
bmFsIDogcAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIg
c3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAg
ICB2b2lkIGxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdV
UkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFn
ZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3Jl
OjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMo
ZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCmluZGV4IDk0MDc3OTEyYTk5
MTY0MTE3ZDBjNjgxY2NjYzA2Njg2ZTA0YzRkZTAuLmY5YWI4M2I1MWNhMzIzZWJlNzFmNTUwMjY3
OTJkYmY2MzUzNDMzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKQEAgLTE4Nyw5ICsxODcs
OSBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIG1lc3NhZ2VXaW5kb3cgPSBudWxscHRyOwogfQog
Ci1SZWZQdHI8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGlu
YXRpb24pCitSZWY8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVz
dGluYXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQVZpZXcoZGVzdGluYXRpb24p
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKIH0KIAog
dm9pZCBDQVZpZXc6OnNldENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayhDb250ZXh0RGlkQ2hhbmdl
Q2FsbGJhY2tGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5o
CmluZGV4IDQ1YjY0ZWMwMTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMuLjcyOTYzYmUz
ZGJiYzQzMjhmNTU3OWE2ZGE1NzBjNjJjNWY0ODkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApA
QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDQVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxDQVZpZXc+
LCBwcml2YXRlIENWRGlzcGxheUxpbmtDbGllbnQgewogCiAgICAgY2xhc3MgSGFuZGxlOwogCi0g
ICAgc3RhdGljIFJlZlB0cjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOworICAg
IHN0YXRpYyBSZWY8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKICAgICB+Q0FW
aWV3KCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2tGdW5j
dGlvbikoQ0FWaWV3Kiwgdm9pZCogaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmNwcAppbmRleCBiMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5ZmM1Li5h
YWJkMTk4YjExMTVlZDdlNjVhZDgzMDg1NDE2MTljZDQxNTg0MGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxp
bmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ1ZEaXNwbGF5TGluazo6
fkNWRGlzcGxheUxpbmsoKQogICAgIDo6Q2xvc2VIYW5kbGUobV93YWtldXBFdmVudCk7CiB9CiAK
LVJlZlB0cjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlu
a0NsaWVudCogY2xpZW50KQorUmVmPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0
ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENWRGlz
cGxheUxpbmsoY2xpZW50KSk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DVkRpc3BsYXlMaW5rLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAppbmRleCAwYWUwMmYxNjllYzgyODkxMjY2MWVm
YTczOGM4NGZiN2M0NDQyMjgzLi5jYTAyNmFmZWFjNDE1ZDcxODc0NzhlODczNzVhMjcxMDk5ZjQw
Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBDVkRpc3BsYXlMaW5rQ2xpZW50OwogLy8gRklYTUUgODc2OTE4MTogUmVwbGFjZSB0
aGlzIHdpdGggQ1ZEaXNwbGF5TGlua1JlZgogY2xhc3MgQ1ZEaXNwbGF5TGluayA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDVkRpc3BsYXlMaW5rPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOworICAg
IHN0YXRpYyBSZWY8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsK
ICAgICB+Q1ZEaXNwbGF5TGluaygpOwogCiAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCmluZGV4IGRjNjY3MGQ0MzNmZjA5ZTBkMTE2NjVk
YzA1NTNiMjE2ZGZiMjYwMGMuLmNmOTIxODVhMTBkYjk0NmQwNmJiNGJkNDgwYzY5ZmRlYzM0NjA0
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgc3RhdGljIEhSRVNVTFQgZ2V0SW1hZ2VDb3B5KElEaXJlY3QzRFN1cmZhY2U5KiBz
eXN0ZW1NZW1vcnlTdXJmYWNlLCBSZWZQdHI8SW1hZ2UKIAogICAgIENTaXplIHN1cmZhY2VTaXpl
KGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0KTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJ
bWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKKyAgICBhdXRvIGltYWdlID0gSW1hZ2U6OmNyZWF0
ZShzdXJmYWNlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlOGJkZGViZjI2MjZmNWNjYWQ4
ZDRhY2VkNTczM2U3MjcyMmFlZWI3Li5mYmMwNGRlNjU5Nzg5OGIwNWQyMmE0ZTU3M2EyNGVkNTYx
OTc5ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjkxMiw4ICs2OTEy
LDYgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3Jv
dXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3Ry
aW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAg
ICAgaWYgKCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02OTQxLDggKzY5
MzksNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJT
VFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBT
dHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357560</attachid>
            <date>2018-12-18 03:37:17 -0800</date>
            <delta_ts>2018-12-18 04:00:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218203715.patch</filename>
            <type>text/plain</type>
            <size>398475</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmQ2MTBlZGFl
OWFjYTEwN2E0NjgzNWE3ZTgyZDE3YWM5YmFmZTkyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmlu
Zyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsu
aDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5j
cHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdl
YlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIwMTgtMTItMTIgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmdd
W1dlYktpdExlZ2FjeV0gd2FybmluZzogZXhwZWN0ZWQgYSBxdWFsaWZpZWQgbmFtZSBhZnRlciAn
dHlwZW5hbWUnIG9mIENPTUVudW1WYXJpYW50IGFuZCBDT01Qcm9wZXJ0eUJhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDRhZGM3NjllNmU2YTY5MDE4
NDkwMDQyYTMzMjExMGNlY2FkOGYzYTguLjRhOTVmY2Q5NWIzOTA3N2UxYzYxMDJhNDdlYmE0NTdh
MGI2NzNhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
QEAgLTE4NSw3ICsxODUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0
aEJ5dGVzTm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAgICAgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlwZShhcnJheVR5
cGUpKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIFJlZjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVu
Z3RoLCBbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKICAgICAgICAgICAg
IGRlc3RydWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IDE3
M2QwM2U1Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBkNzk0MmFhZjc5YWQyYTY3
Zjk2ZDcyNDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIFdhdGNocG9pbnQqIHdh
dGNocG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KICAgICAgICAg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmlu
Z1dhdGNocG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAgbmV1dGVyaW5nV2F0Y2hw
b2ludC0+c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQo
bmV1dGVyaW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0
IHRoaXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggNmIwZjMxOTM4ODY0OGNkMjk1YjZmMTFjNTczYWI3Mzg0NDIx
OTc4Ny4uMGIzNGY0NmNlMjYxOGQ3MmE0NmE5ZWI4YmQ3MmZkMmE2NWRiM2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkK
ICAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVh
dGVGdWxsVGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZp
dHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKGFk
b3B0UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAgICwgbV9zdG9wSWZOZWNl
c3NhcnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKKyAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCisgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVTRShGT1VOREFUSU9OKQog
ICAgICwgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBAIC0yMzM5LDcgKzIzMzks
NyBAQCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIAog
SW5jcmVtZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAgICByZXR1cm4gKm1fc3dl
ZXBlcjsKKyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEdh
cmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IGM4YWVkNGEzNmE1ODgyMDFmMTUyN2U1ZWFhZmExNDUzMjk1YzAwMTku
LjlkYTRhYTNhYmQxYzJlNzJlYTg5NTk3YzNiZWY5ZDg4ZGQ1ZGM2ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBIZWFwIHsKICAgICAKICAg
ICBSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsK
ICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwot
ICAgIFJlZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBSZWZQdHI8U3Rv
cElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CisgICAgUmVmPEluY3Jl
bWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4g
bV9zdG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29i
c2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAK
aW5kZXggNjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEyY2M0ZS4uYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNvQ2VsbFNldDo6fklzb0Nl
bGxTZXQoKQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pjo6cmVtb3Zl
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29D
ZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlN
YXJrZWRCbG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNr
PE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBAIC03OCw3ICs3OCw3IEBA
IFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0Ojpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsK
ICAgICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAogTkVWRVJfSU5MSU5FIEJp
dG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6
ZV90IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5k
ZXggMTZjOWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNlNy4uZGFkYTY3MmM0OTFk
YzAzODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAKICAgICBib29sIGNvbnRh
aW5zKEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRvIGEgY29tYmluZWQgc2Vh
cmNoIG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsIHVzZXMgYW5kCiAg
ICAgLy8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElzb0Nl
bGxTZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gewogICAgIHZv
aWQgZm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JF
YWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAgIFJlZjxTaGFyZWRUYXNr
PHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBG
dW5jJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4NjkxNGU0YzNmYjAyNjMx
ZjAyMmQ5Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1ZWQzNGE2Zjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5j
JiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFs
bGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVu
YykKIHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRv
ciYpPiB7CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBh
cmFsbGVsKGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXNvQ2VsbFNldCYgbV9z
ZXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBt
X2Jsb2NrU291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxl
KigpPj4gbV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7CiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKCp0aGlz
LCBmdW5jKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywgZnVuYykpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4NzIxMzMxMGFmYjhiMzEu
LmUxNGEzNzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgTWFya2VkQmxvY2s6
OkhhbmRsZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3Bh
Y2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0
b3J5KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKIHsKICAgICBjbGFz
cyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+IHsKICAgICBwdWJs
aWM6CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9y
eSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIExvY2sg
bV9sb2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKG1fZmly
c3REaXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKG1fZmlyc3REaXJl
Y3RvcnkpKTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJl
ZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5
TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQYXJhbGxlbFNvdXJjZUFk
YXB0ZXI8QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxlKj4oCiAgICAgICAgIHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
aAppbmRleCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5YTVmNGIxLi44M2VmNGQ3
NDlmYmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N1YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1
bmMmKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IHBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3Rv
cnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2soY29uc3QgRnVuYyYpOwpA
QCAtNzgsNyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsK
ICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKGNvbnN0IEZ1
bmMmKTsKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lk
KFNsb3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5s
aW5lcy5oCmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4NjA5NzQwYTYyNjMuLjE2
NzEyN2ZmNDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+
PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMp
CitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1h
cmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6
IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAg
LTEyMSwxMyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uCiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwotICAgICAgICBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAg
ICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7
CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAgYm9v
bCBtX25lZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsKICAgICB9OwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjY0NDA3MWQzZjk3YzZkZDZhNmE2NDAxNGQx
NWYxZTQyZGE3NDA4Yy4uMGI5OTYxYjhhYzM5ZjNlZDAyZGYyOGZlODQ2ZTJkMmM4OThkNWRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0
YXRlKiBleGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJlbnQoKS5kZXF1ZXVlKCk7
CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CisgICAgUmVmPEFy
cmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJl
bGVhc2VDb250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2Rl
ID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVm
ZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZm
ZXIpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcAppbmRleCA0ZTVlZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhkNWUxOTk5NzFmLi44OTVi
MjliNmM5ZTE1MjM1ZDM0NWQ5NDI4YTM1MzkzYTNjOGE4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODksMjAgKzI4OSwyMCBAQCB1
bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiAgICAg
cmV0dXJuIGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQp
IGNvbnN0CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJl
Z2luKSwgY2xhbXBJbmRleChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwo
Y2xhbXBJbmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gQXJyYXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJl
Z2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9
IGVuZCA/IGVuZCAtIGJlZ2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9
IEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBi
ZWdpbiwgc2l6ZSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwog
ICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmlu
ZGV4IGY2OTljOTQ1YWU0MDRlMmUwYmJkN2NmYmM1ZTk0OWQyODNlYThiZGQuLjMwZmJhNmE2YTA4
NDZhMTcyYjM5ZjE2N2NhMmU0NGMwMDFiZjI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI4LDggKzEyOCw4IEBAIGNsYXNzIEFycmF5QnVm
ZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBp
bmxpbmUgc2l6ZV90IGdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0OwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJs
ZSBlbmQpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8QXJy
YXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0
OwogICAgIAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWlu
Z1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25l
ZCk7CiAgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51
bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6
OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiYpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVu
c2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIGlubGluZSB1bnNpZ25lZCBj
bGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CiAgICAgc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGQxYTZjMmI5NmNhNWE4ZmY3Zjdh
MzE0ZTYwMmExYWNhODI1NGMxMjguLjY0ZmZmNGE4N2IwNWMzOThjODgxMWU4ZGI2YzVkM2Q2NmEx
MDA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8g
PSB7CiAKIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBX
YXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQorICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRj
aHBvaW50U2V0KElzV2F0Y2hlZCkpKQogewogfQogCkBAIC02Miw3ICs2Miw3IEBAIFN0cnVjdHVy
ZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
KQogCiB2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0g
ICAgc2V0KCktPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7Cisg
ICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCA5
YTZmNzFhOTY4Y2MxOTQ2YTBkNzkzNjExZTA1MmJkNmViYmUwMWE3Li5lNWQ2ZDA5NzRhNThlYmIw
YjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaApA
QCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYpOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJu
IG1fc2V0LmdldCgpOyB9CisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQu
Z2V0KCk7IH0KICAgICAKICAgICB2b2lkIGZpcmVBbGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKICAgICAKLSAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7CisgICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMGI5NzEwNWI3
ZTc3MTk2OTdiNTQyMWEyNjM2ZjFhNGFmMmUwN2UuLjc5MThiNjJiMDcyMmFjYmVmN2FhNzI5YzQw
YjQ3NjkzMWMwZGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC01Niw5ICs1Niw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBlbmQgPSB0aGlzT2JqZWN0LT5p
bXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7Ci0gICAgaWYgKCFu
ZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0
aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVj
dHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCmluZGV4IGFm
OGZmNWEwYTgwY2U4YmFhYWQwN2ExZDViY2E2MTQwY2VlMDMwZTEuLjIzOGVlNjdjMzgyODQxOWIz
M2YxNDllMmI0M2I2MjY1ZTg3NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3Im
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0
IGltcGxlbWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCi0gICAg
ICAgIFJlZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24gPSBDRE06OmNyZWF0ZShkb2N1
bWVudCwga2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMp
LCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAwN2E0Y2RkZDFkNGIzY2Y0MzM5ZjJiMGM5ODdhM2Ux
ZDI3MWFmMmYwLi4yY2UzYzhhMGY4NzM5OTQxOWI5ZjA4Y2IzZmU0YmNiMmQ3NzgwZDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzQsMTQgKzIz
NCwxNCBAQCB2b2lkIEZldGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgbV9jb25zdW1l
ci5sb2FkaW5nU3VjY2VlZGVkKCk7CiB9CiAKLVJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAorUmVm
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKQogICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNv
ZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkK
ICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJv
ZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYm9keSA9IEZvcm1EYXRhOjpj
cmVhdGUoKTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihibG9iQm9keSgpLnVybCgpKTsKICAg
ICAgICAgcmV0dXJuIGJvZHk7CiAgICAgfQpAQCAtMjUxLDE1ICsyNTEsMTMgQEAgUmVmUHRyPEZv
cm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVu
Z3RoKCkpOwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keSA9
IGNvbnN0X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOworICAgICAgICBSZWY8Rm9y
bURhdGE+IGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHko
KSkpOwogICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9Ci0gICAgaWYgKGF1dG8qIGRhdGEg
PSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpOwor
ICAgIEFTU0VSVChkYXRhKTsKKyAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiB9CiAKIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6
dGFrZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBkYWFk
N2M0MmM0Nzc5YjFhNDA2OTVkMGYxNTBkN2Y5ZjRiOTk2YzUyLi5iN2IyMjAxNWNkYzAyNjNiZWI0
MzBmNDliOTgzNTkyNjVmNDYwZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRmV0Y2hCb2R5IHsKICAgICB2b2lkIGxv
YWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoKTsKIAotICAgIFJlZlB0
cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0
OworICAgIFJlZjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGNvbnN0OwogCiAgICAgdXNpbmcgVGFrZW5EYXRhID0gVmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IDlkMjUwNjc1ZmRlN2MyZWMxZmI2MzFhOTFmZWVhN2NjNDM4YzVhOWIuLjU4
YTcyYjEyMWNlMWY5MzUzOTY3YWIyYTNkNGJiN2Q3NzlkZjhkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zMDQsMTAg
KzMwNCwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUmVmPFBvc2l0
aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZQogICAgIGlmICghZnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05v
dGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShl
cnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5vdGlm
aWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhp
cywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCi0gICAg
bV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworICAgIG1fb25lU2hvdHMuYWRkKFdURk1vdmUobm90
aWZpZXIpKTsKIH0KIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlv
bkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMzE1LDE0
ICszMTUsMTQgQEAgaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNh
bGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFAKICAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdl
b05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5v
dGlmaWVyLmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCiAg
ICAgaW50IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGls
IHdlJ3JlIGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7CiAg
ICAgICAgIHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVu
dGlhbElEKCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIFdURk1vdmUo
bm90aWZpZXIpKSk7CisgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlm
aWVyLmNvcHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjU4ZDg5YTVh
ZGFiY2E1ODhhMTlhNDhkOTc4ZjZlZTIyMWY4ZGU3ZS4uMTg0NzQzOTE5MGE4Yjc5YmVmNzA2NDMy
ZmQyZjlkNzU1NjkwNzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIHVpbnQ2NF90IElEQkRhdGFi
YXNlOjp2ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAot
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKK1JlZjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVO
YW1lcygpKQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQobmFtZSk7CiAgICAgb2Jq
ZWN0U3RvcmVOYW1lcy0+c29ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNzZhMTI4NTkxMDEwNDZlNjUyYjhlZGFiNGY3MDNlMGQ0
YWQxNTkzZS4uMTVkYWNiMTI4MTFkMDMxYjcwZTFlMWNmNzRlOWIwOTM5ZDlmMzI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01NCw3
ICs1NCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgLy8gSURCRGF0YWJhc2UgSURM
CiAgICAgY29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAg
ICAgc3RydWN0IE9iamVjdFN0b3JlUGFyYW1ldGVycyB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA3ZGM1ZTBmNzk5YzBhNjI4NjIwMzJlZmQx
ZWZjYmFhZDhhZDY0ZTk0Li44ZTA3MmE4MzY4MjRiZDY3OTcwYWRjNmE3ZTA1MDA4N2E1MTlkNjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5m
by5rZXlQYXRoKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6
aW5kZXhOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFtX2Rl
bGV0ZWQpIHsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLmluZGV4TmFtZXMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5o
CmluZGV4IGVkNjA2NDdlMjA3N2IzOWE5N2RiYzRkZTgwNzkzNWJhMzlhMWQ3OWQuLmQwNDQ5OTMx
OWM4MTdlNTllYmNiNTUxNTZkZDhhMDQyNTNjZThhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBj
bGFzcyBJREJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5h
bWUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCgpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkg
Y29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2Rj
MTIuLjE3NWJkZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTM3MiwxMyArMzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURC
UmVxdWVzdCYgcmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwog
fQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4mJiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFw
LmNvbnRhaW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBt
X3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlv
bikpOwogCiAgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMx
NDZlNWQ2OTJlZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFi
YTQ5OGZhOTcwZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRy
YW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwg
cHVibGljIEV2ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBh
Ym9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNj
aGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYm
KTsKKyAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uPiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCBjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZl
Yy4uOGRkYjU2ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAg
fQogfTsKIAotaW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNh
Y3Rpb25PcGVyYXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYp
LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRp
b24mKSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJl
ZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlv
biwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihv
cGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5
cGVuYW1lIFAyPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlv
bk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBN
UDIpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIy
KQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxN
UDEsIE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJh
bWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9u
LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8
VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1
dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIs
IHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0
cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitS
ZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAg
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJ
REJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0g
ICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFu
c2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUs
IHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5z
YWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBA
IC0yNDcsMTIgKzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0
IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9u
T3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3Bl
cmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbklt
cGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYs
IGNvbnN0IElEQlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3Bl
cmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFu
c2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIsIHBhcmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAz
Pih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBh
cmFtZXRlcjIsIHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKaW5kZXggMTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNh
OTlhZTA5ODFjOGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzEx
MCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5z
ZXREZWZhdWx0VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1l
ZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6
OlVzZXJNZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0
cmFpbnRzKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAg
cmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwog
fQpAQCAtMTIzLDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0
RGlzcGxheU1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0
ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVl
c3Q6OlR5cGU6OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzLnZpZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAg
ICAgICAgcmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2
MTI2YWYyYjM2ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJN
ZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRl
cmZhY2U8TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShwcm9taXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVk
aWFSZXF1ZXN0KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7
CiAgICAgcmVzdWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuaAppbmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42
ZGU3ZTVjOGQ3YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVk
aWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwg
flVzZXJNZWRpYVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdm
ZGRiYzAwODBiYzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRk
ZjI3ODRkOWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRl
RmluYWxWYWx1ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAK
ICAgICAvLyBOb3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhl
ciAodW5pdHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVj
dGlvbnMgd291bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYg
bmVjZXNzYXJ5LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpj
cmVhdGUoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1
cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA4OGFlMDRhYmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFm
Yzc2MTFiMzcwMzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3
LDggQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVh
dGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAg
ICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUg
bWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251
bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0
Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1
ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCks
IHNhbXBsZVJhdGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVs
cywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVm
ZmVyID0gbV9udW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAg
ICAgICAgIG1faW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0
cHV0QnVmZmVycy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5
YmRjNjgzOWQwYmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQw
NGY3YWIwNjM1YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1l
bnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRy
PFNRTFJlc3VsdFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBh
dXRvIHJlc3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNv
IHdlIGNhbiBmZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5z
dGVwKCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0
YWJhc2UmIGRiKQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJl
c3VsdFNldC0+c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAg
bV9yZXN1bHRTZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3Vs
dFNldCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5
MDcuLjBkYzQxMWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdl
YkdQVT4gV2ViR1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlz
ZSYmIGRlZmVycmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShkZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVk
LnJlamVjdCgpOwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJy
ZWQucmVzb2x2ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRl
eCBlZWVjNGRmNjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMx
NjE5ZTAwZGI5MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNy
ZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3Jp
cHRvci4KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwog
fQogCiBXZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNm
ZWMuLjhkMDRlNTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgc3RydWN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURl
dmljZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcAppbmRleCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlh
NWM3NjQyZjI0YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6
OmNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQ
VUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BV
QnVmZmVyOjpXZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVk
NjgyZmJlMjQyOGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFk
YWNkN2NiY2IyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
R1BVQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwog
CiAgICAgY29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMw
MzM4NDI5NDIuLmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1
ZmZlcihSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJl
ZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5S
ZW5kZXJQYXNzKFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNv
bG9yQXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsgY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2ht
ZW50LmNsZWFyQ29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxs
cHRyOworICAgIGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KG1fY29tbWFuZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikp
KQorICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywg
ZW5jb2Rlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMy
NTI2MzkyNDM3YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOwogCiBjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7
CiAKICAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDc3YmE0Y2JjMDhmOTZiMWUzMjJjNjlk
NDg3ZjcwNTk0MTI4NmM0MzguLmU0MGVhOTgyNzc5YTc5MzVkODM2MDgyNzA4OWEwZjAxNzUzNDE5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cApAQCAtNDYsOCArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVE
ZXZpY2U+IFdlYkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIp
CiB7Ci0gICAgYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFr
ZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVy
biBkZXZpY2UgPyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRl
dmljZS5yZWxlYXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9
IEdQVURldmljZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50
IHdoZW4gY3JlYXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxX
ZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjAs
MTUgKzYxLDE3IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVy
PiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9y
IG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVm
ZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSB9KTsKLSAg
ICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
QnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3Iu
dXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
aGF0IGNhbiBiZSB2YWxpZGF0ZWQgaGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KTsKLSAgICByZXR1cm4gbW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
bW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUg
PSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
eyBkZXNjcmlwdG9yLmNvZGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxp
ZGF0ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQpAQCAtODksMTQgKzkyLDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5k
ZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5k
ZXJQaXBlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxp
bmUgPSBtX2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwg
ZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwot
ICAgIHJldHVybiBwaXBlbGluZSA/IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxp
bmUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0g
bV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciB7IFdURk1vdmUoKnZlcnRleFN0YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2Ny
aXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5k
QnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAg
IGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0g
ICAgcmV0dXJuIGNvbW1hbmRCdWZmZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29t
bWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29t
bWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJl
dHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBX
ZWJHUFVEZXZpY2U6OmdldFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5
NzUwY2I3NGE2ZGI3NjU3YjJjZTgxZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1
MzFjMGZmOTg2NDdiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
IGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVy
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdU
Rk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5k
QnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmgKaW5kZXggMzEyOTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3
Zi4uODdhN2VhZjE5ZjA5OTA3MWRiN2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVh
dGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CiAKICAgICAvLyBGSVhNRTogTGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2ln
bmVkIGxvbmc+LiBXaHkgaXMgdGhlIGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5n
IHRoZSBJREwgd2FudHMgYSBzZXF1ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVy
dGV4QnVmZmVycyh1bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYs
IFZlY3Rvcjx1bnNpZ25lZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4
Zjk3Mzg2MmE0ODhlYzBjMzFlYTlmYS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEz
OTI4NjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRl
clBpcGVsaW5lPiYmIHBpcGVsaW5lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJH
UFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzcz
Y2FjZDkyMGY5N2QyMi4uMzkxN2ZhZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBl
bGluZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+
IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAg
UmVmPEdQVVJlbmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVy
UGlwZWxpbmUuY29weVJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5
MjMwNDFjZjhlNTk2Yjg2MWI5OGUuLjk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmEx
YzdmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4g
V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZSht
b2R1bGUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdU
Rk1vdmUobW9kdWxlKSkpOwogfQogCiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1v
ZHVsZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2Vj
MjRhMWZlMDlhNmViNGM2Zjc0NTdhMGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2
Y2FkNDViMzMzNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVT
aGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1v
ZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBj
b25zdCBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0
cigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHAKaW5kZXggYzY3ODBlZjYxYjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5
ZDdmOTYzYmQyZTkxNTdkODVjZGQzN2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAg
V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQog
CiBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpCiB7Ci0gICAgYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVE
ZWZhdWx0VGV4dHVyZVZpZXcoKTsKLSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1
cmVWaWV3OjpjcmVhdGUoZ3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7Cisg
ICAgaWYgKGF1dG8gZ3B1VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCkpCisgICAgICAgIHJldHVybiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1
cmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVRleHR1cmVWaWV3LmNwcAppbmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0
YjEyMzQ2NTFjLi43MjY1OTQ1YTIzZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcu
Y3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdl
YkdQVVRleHR1cmVWaWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJl
PiYmIHZpZXcpCitSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVh
dGUoUmVmPEdQVVRleHR1cmU+JiYgdmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVW
aWV3OjpXZWJHUFVUZXh0dXJlVmlldyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBm
ZDgxNDkyYjA4MWRmY2RjOTFiZWY1MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2Uw
ZGYzOTUwM2Y4NzkxYmVjYTA5MmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVUZXh0dXJlVmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4
dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVUZXh0dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVU
ZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IGYxMTRiYTk0OWIwYjMyZDBmNmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3
N2M4MTQ0YmI2YmY2NTdiN2ZkMGFjMmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQ
dHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRy
PFJhbmdlPiBvcmlnaW5hbFJhbgogICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgZW5kUG9zaXRpb24gPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdl
LT5lbmRDb250YWluZXIoKSk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9
IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwot
ICAgIGlmICghc2VhcmNoUmFuZ2UgfHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1
dG8gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uKTsKKyAgICBpZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpOwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWlu
VGV4dCgqc2VhcmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwor
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24s
IG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
cmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQs
IHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJS
KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5
MzM2NzZjZDA5ZjAuLmY3Y2QzYWE4YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4
dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAg
ICAgICAgLy8gQ29uc2lkZXIgcHJldmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJl
c2VudCBmb3IKICAgICAgICAgLy8gdGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8g
ZW5zdXJlIHdlIGVtaXQgdGhlCiAgICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxp
bmUgdGV4dCBhcmVhcykuCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBv
ZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdl
dCgpKTsKKyAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUt
PnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNl
dCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0Vt
aXQsIHRleHRUb0VtaXQubGVuZ3RoKCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMy
MzRmNjA4ZGE2MDcuLmJjMTZlNGIyOTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVIeXBlcmxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBs
aW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmpl
Y3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5k
b2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3Ro
Rm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAg
LTI4Niw4ICsyODYsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0
RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSks
IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxl
bmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9
IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICBy
ZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwog
fQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRr
SHlwZXJsaW5rKiBsaW5rKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDE4YzllOWI1Nzk3Yzk5MTZkMjYyNWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2Zj
NDE1YjBlZWQ1N2I0NGZmMmQ3OWFiY2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKQEAgLTQwNiwxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9m
ZnNldHNGb3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAK
ICAgICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0
aGUgb2JqZWN0LgogICAgIFBvc2l0aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobm9kZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBu
b2RlUmFuZ2VTdGFydCk7CisgICAgYXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAK
ICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlh
bCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxh
dGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zm
c2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5n
ZUluUGFyZW50LmdldCgpLCB0cnVlKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VF
bmQpOwotICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9k
ZVJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0
a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJl
bnQucHRyKCksIHRydWUpKTsKKyAgICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9k
ZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJh
bmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4g
d29ya2luZyB3aXRoICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0
eSgpID09IFVQU1RSRUFNKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IDhjN2IxY2YzOGI5Y2I4OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhl
OWQwYTdkM2VjYWU3MDJhNDM5NTYyZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCkBAIC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2Nv
bnZlcnRUb05TUmFuZ2U6KFJhbmdlICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWlu
ZXIoKSAhPSBzY29wZSAmJiAhcmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNj
b3BlKSkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAg
UmVmUHRyPFJhbmdlPiB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CisgICAgYXV0byB0ZXN0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgp
LCBzY29wZSwgMCwgJnJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFu
Z2UuZ2V0KCkpOworICAgIGludCBzdGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRD
b250YWluZXIoKSwgcmFuZ2UtPmVuZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+
c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlv
biA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1
cm4gTlNNYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9u
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0VGFzay5jcHAKaW5kZXggOWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBk
ODcxNS4uMzU0NWQ1ZDUxMWZmODY4MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
CkBAIC03OCw4ICs3OCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0
VGFzazo6SlNHbG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2soeyB9KQogewotICAgIFJlZlB0cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFz
aykpOwotICAgIG1fdGFzayA9IFtjYWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgYXV0byBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9i
YWxPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJh
Y2stPmNhbGwoKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKaW5kZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkx
YTI4N2FhYi4uZTdkOTM3ZWVhNzRjMTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDks
OCArMjA5LDggQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpT
R2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jh
c2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwog
Ci0gICAgUmVmUHRyPEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tD
YWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWlj
cm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWlj
cm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIFtjYWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0g
SlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwor
ICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKaW5kZXggMzgwYWQ1YmQxNTIwMTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYw
NGNiYWViODdmMDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMz
LDkgKzEzMyw5IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZl
bnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZSY+KG9iamVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNr
KSk7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
T2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtj
YWxsYmFja10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwg
Y29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5
NmM4OWQxMzhjMzU2NmEzMWMwY2MyNDkuLmRmOTQ3NmExNmJiM2ZiYzhjNDhjNmVjN2Q2OGIzYzJl
YmQ2NWEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQpAQCAtODUsMTAgKzg1LDEwIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQo
CiAgICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNj
cmlwdGFibGVPYmplY3RdOwogICAgICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJp
bmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7
CisgICAgICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0
ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0IHJldHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxs
ZXIgaXMgZXhwZWN0ZWQgdG8gcmVsZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0
KG5wT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgICAgICByZXR1cm4gV1RG
TW92ZShpbnN0YW5jZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1Mjhi
YThjZWI5ODczY2I2ZjEzMzU5MzYzNWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVh
ZTM4MDVhNzAyYjY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xv
bmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAg
SW50U2l6ZSBpbWFnZVNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbGVuZ3RoIHx8IChpbWFnZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVu
Z3RoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6
Y3JlYXRlKGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAg
ICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1
OCw3ICsyOTU4LDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3No
YXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0
KGluZGV4KSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZ2V0SlNWYWx1ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
KmV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKGV4ZWMsIHNjb3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUx
NWU1NTYwZDQ0OTY1ZGE2NDA0MTU0ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVm
ODNhOWMzMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNl
IDogcHVibGljIEluc3RhbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0
YW5jZT4gY3JlYXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAg
IHN0YXRpYyBSZWY8T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8
Um9vdE9iamVjdD4mJik7CiAgICAgdmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3Qq
IGV4Y2VwdGlvbkVudmlyb25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVu
dCBtZWFucyB0aGUgZXhjZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBl
bnZpcm9ubWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
CmluZGV4IDBhZWMwY2VlYWY5YzZjMmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2Fm
ZmM2NmFkZjcyNDJjYzQ2MDFjZDMyYTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3Rh
bmNlOjpPYmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RP
YmplY3QpCiB7CiB9CiAKLVJlZlB0cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJ
bnN0YW5jZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2Jq
ZWN0PiYmIHJvb3RPYmplY3QpCiB7CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5h
ZGQoKF9fYnJpZGdlIENGVHlwZVJlZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBh
ZG9wdFJlZihuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RG
TW92ZShyb290T2JqZWN0KSkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3Jh
cHBlci5wdHIoKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3Rh
bmNlOjp+T2JqY0luc3RhbmNlKCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY3Nzg0MTIwNmZiZTFlNGUzNzg5YTBmODAy
YmRkMWMxZDMzNGI4ZWEuLjZjOTUwNjY5NDFkNTNlNjVhZWU1ZmQxNWJjZjMwMGRjNDIxYWFhY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRp
b25PZmZzZXRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnQKICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKIH0KIAotUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBDb2xvciYgY29sb3IpIGNvbnN0CitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIGRvZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBj
b21wdXRlZCBzdHlsZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQpAQCAtNDIxNywxMiArNDIxNywxMiBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKQogICAgIHJldHVybiBjb3B5
UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVz
KTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKK1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChw
cm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0
KS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1
cm4gbGlzdDsKIH0KIAogUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCkBAIC00MjU0LDEyICs0MjU0LDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2lkZXNTaG9ydGhhCiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQp
CitSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0
eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNDM1NCw4ICs0
MzU0LDggQEAgUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFj
a2dyb3VuZFNob3J0aGFuZFZhbHVlKCkKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwIH07CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcikpKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hv
cnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0
b3IpKSk7CisgICAgbGlzdC0+YXBwZW5kKGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
cHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9y
KSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggYmRmMzQzMjcyYTZhYTQxYjc2ZTMxZDJh
MTlmZjcxMTc3MjM2N2Y3My4uYWZlMjA0YmUxNjg4OWNhNzFkYzk1NDVjYjY3MTQ5Yjc2YWJlOTlj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaApAQCAtODcsMTQgKzg3LDE0IEBAIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3Igewog
ICAgIFJlbmRlckVsZW1lbnQqIHN0eWxlZFJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCk7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQ
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJiBj
dXJyZW50Q29sb3IpIGNvbnN0OworICAgIFJlZjxDU1NWYWx1ZT4gYWRqdXN0U1ZHUGFpbnRGb3JD
dXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQ29sb3Im
LCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKICAgICBzdGF0aWMgUmVmPENTU1Zh
bHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29u
c3QgUmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1
c3RQaXhlbFZhbHVlcyk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0Owor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0
IFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKIAotICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmKTsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKICAgICBSZWY8
Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
Jik7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFBzZXVkb0lkIG1fcHNl
dWRvRWxlbWVudFNwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCmluZGV4IDMzYTg1ODllMTc2MWIwYTgxY2Q5YzQ1NDY1ZjU5YmVkNWIwZTBiYTkuLjA5NTI3
ZjFiMTI2YzdjYjVmMmRkZGNiZGE0MjFhMjg1ZTA1YWRmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTcwLDkgKzE3MCw4IEBAIHZvaWQgQ1NTRm9udEZh
Y2VTb3VyY2U6OmxvYWQoQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgIGlm
IChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgQVNTRVJU
KGJ1ZmZlcik7Ci0gICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSgqYnVmZmVyLCBTdHJpbmcoKSwgd3Jh
cHBpbmcpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkp
LCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3Rl
ZCBpbiB3aGV0aGVyIG9yIG5vdCBmb250Rm9yRmFtaWx5KCkgcmV0dXJucyBudWxsIG9yIG5vdC4g
THVja2lseSwgbm9uZSBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDFl
Y2M1YmEzNzA4NzkyZmE2MzdmMTZiMTJjZDczZTExZWZiMDRhNjIuLjgyYjY1Zjg3MDg0OGYxNjcy
OWI3MmZmMjhiM2Y1N2EyYWRmZWNlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTI1OSwxMSArMjU5LDExIEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVl
dDo6cnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgLy8gSUUgYmVoYXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0
PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVDb3Vu
dCA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7ICsr
aSkKICAgICAgICAgcnVsZUxpc3QtPnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwotICAgIHJldHVy
biBydWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVs
ZVN0cmluZywgdW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBhMjRh
NTM2MjY4OTBhOGE5MWQxMTczOGNhOWE1OGE0NTM3MWJiOGI4Li5lMzQ5MTcxMjg3ODkwYjk4NzRh
NzA0YWI3YjQxYmY2OWNkYTU1YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTM3Myw3
ICszNzMsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgbV9i
YWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdl
cygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9zOwotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9iYWNraW5nLT5yYW5nZXMoKSkKICAgICAgICAg
dmFsdWVzLT5hcHBlbmQoQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0ZShyYW5nZS5mcm9tLCBy
YW5nZS50bykpOwogICAgIHJldHVybiB2YWx1ZXMtPmNzc1RleHQoKTsKQEAgLTM5MCw3ICszOTAs
NyBAQCBTdHJpbmcgRm9udEZhY2U6OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiAgICAgbV9iYWNr
aW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVT
ZXR0aW5ncygpLnNpemUoKSkKICAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CiAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKSkK
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFn
KGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAgICByZXR1cm4gbGlzdC0+Y3Nz
VGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3Jh
cHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CmluZGV4IGZkYjhlM2FmNzlhYzYyYjc4OTU2MGI4M2MzN2ViNzQzYzhmZTYxMmYuLmJkZWZlYzRh
N2ZhN2M0MGIzNjlhMGEzZDJmMGUzZDM2YjcyODc3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNo
ZWV0Q29udGVudHMqIHMKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOwotICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNl
dC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIu
Z2V0KCkpOworICAgIGF1dG8gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoKnN0eWxlU2hlZXQpOworICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldC5hZGQoc3R5
bGVTaGVldFdyYXBwZXIuY29weVJlZigpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVy
LnB0cigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0
eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDMzMWU4MzYzZmFlODdhYjQ1M2ZjMWU3ZDU1MzllMDk4MDZmYjEzNTIuLmIz
ZTRiOWEwYzU0ZmI5MzY3ZTA0NjcxNDIyNTk0OTdjYjIxNDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50
YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKEdseXBoT3JpZW50CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFy
cmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3Qg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQogewogICAgIGlmIChkYXNoZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVOb25lKTsKQEAgLTYwLDEwICs2MCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFs
dQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50
VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBw
YWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENv
bG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKHBhaW50VHlwZSA+PSBTVkdQYWlu
dFR5cGU6OlVSSU5vbmUpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgdmFsdWVz
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6Q1NTX1VSSSkpOwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkKICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSkpOwpAQCAtNzEsNyArNzEsNyBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yKFNWR1BhaW50VAogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyZW50Q29sb3IpKTsKICAgICAgICAgZWxzZSBpZiAocGFp
bnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJUkdCQ29sb3IpCiAgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNvbG9yKSk7Ci0gICAgICAgIHJldHVy
biB2YWx1ZXM7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiAgICAgfQogICAgIGlm
IChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3NGZhM2Y1Mzk4ZmU2ZmJlNDI0NmNlNmMxMGQzOGQ1
OWY4ZTJiM2E2Li42YTIwMzYwYTU0NjAyNmExY2ZmODEyN2FlODE1MWVhZjIzMzAwNDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xOTgwLDggKzE5ODAsOCBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGlu
VmFsdWUsIEZpbHRlck9wZXJhdAogICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChjc3NVcmwpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uPiBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShj
c3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFdURk1vdmUob3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDBkYzEwOThmNTRmODRiYmYyYmE3YmJh
MzU5NzFiNjhkNWE5ZGJiZWMuLjFlZWZlYjhiZDEwYzI1NGI4MjRiYzA2Y2Q1YjhhZWYwNjYwMjE4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0
IFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ugewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVSdWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNTdHlsZVJ1bGVCYXNlKSwgU3R5bGVSdWxlQmFzZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAg
IHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIocGFyZW50U2hlZXQsIG51bGxwdHIpOwogfQogCi1S
ZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUq
IHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NT
T01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVh
dGVDU1NPTVdyYXBwZXIobnVsbHB0ciwgcGFyZW50UnVsZSk7CiB9CkBAIC0xMzEsNyArMTMxLDcg
QEAgUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIENS
QVNIKCk7CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdy
YXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNv
bnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0
eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAg
IFJlZlB0cjxDU1NSdWxlPiBydWxlOwogICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9j
YXN0PFN0eWxlUnVsZUJhc2UmPigqdGhpcyk7CkBAIC0xNjksMTEgKzE2OSwxMyBAQCBSZWZQdHI8
Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0LCBDUwogICAgIGNhc2UgQ2hhcnNldDoKICAgICBjYXNlIEtleWZyYW1lOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBBU1NFUlQocnVsZSk7CisKICAgICBpZiAocGFyZW50
UnVsZSkKICAgICAgICAgcnVsZS0+c2V0UGFyZW50UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1
cm4gcnVsZTsKKyAgICByZXR1cm4gcnVsZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB1bnNpZ25l
ZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5k
ZXggNjgwNzE0MWZlZWE3MWIwNzZhZmE5YTRhNjlhM2NkMjZmYzUzMjI4OC4uNzE4MDUyMzEzODQ0
MDMyZjc1YzljNmNkMWU1YWE5M2RiZWRkNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAt
ODQsOCArODQsOCBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRl
ZEJhc2UgewogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5l
ZWQgZm9yIHRoZSBudWxsIHBhcmVudCB2ZXJzaW9uLgotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25z
dDsKLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVu
dFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4g
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgU3R5bGVSdWxlQmFzZShUeXBlIHR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IGZhbHNlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2Ug
OiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVzdHJveSgpOwogICAgIAotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUp
IGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNTsKICAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0
TWF0Y2hlZENTU1J1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCmluZGV4IDBmZWU4NGNkN2ViMjY3OTJlM2RmNmQ0NjdlOTBhNjJmMWZkMGNjNTQu
LjgxNGQ0NmIwNWE2N2MxNTk5YTIzMjhjMzgzMmZlNDBhZjViNjMzYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IoKQogICAgIGFjY3VtdWxhdG9yTWFwKCkucmVtb3ZlKG1fdGFyZ2V0LnB0cigpKTsKIH0KIAot
UmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNj
dW11bGF0b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKK1JlZjxDaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRP
ckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJnZXQpCiB7CiAgICAgQWNjdW11bGF0b3JNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBhY2N1bXVsYXRvck1hcCgpLmFkZCgmdGFyZ2V0LCBudWxscHRyKTsK
ICAgICBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gYWNjdW11bGF0b3I7CkBA
IC03MCw3ICs3MCw4IEBAIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDCiAgICAgICAgIGFjY3VtdWxh
dG9yID0gYWRvcHRSZWYobmV3IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24o
dGFyZ2V0KSkpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWNjdW11bGF0b3Iu
Z2V0KCk7CiAgICAgfQotICAgIHJldHVybiBhY2N1bXVsYXRvcjsKKyAgICBBU1NFUlQoYWNjdW11
bGF0b3IpOworICAgIHJldHVybiBhY2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBp
bmxpbmUgYm9vbCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3Jk
ZXIoTm9kZSYgY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuaAppbmRleCA5Yjk0MzcxNmRiYzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2
NzY3NzY4ZjBkNzE0NzQyZTM2YmNlNWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIGlzIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlz
dE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5v
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKaW5kZXggZDU1YzU2ZjEzNjkzMjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYz
MGMzMzAwYjlhNzkwMmZhN2JjYmUyMmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXImIG1hcmtlciwgTm9kZSYgbgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXco
KSB8fCAhbm9kZS5kb2N1bWVudCgpLnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2Ug
KGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0
aCBhYnNvbHV0ZVRleHRRdWFkcygpLgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgp
LCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAg
ICAgICByZXR1cm47CisgICAgYXV0byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5k
T2Zmc2V0KCkpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAg
ICAgbWFya2VyUmFuZ2UtPmFic29sdXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRy
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmlu
ZGV4IDEwOWY3MjRjNTgzMTYwYTcxOGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQy
ODRiNzcwMzU1ZGM0ZTBhNmQxYzI3NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5
bGUoZG9jdW1lbnQudXJsKCksIG1fc3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNL
bm93bk5vbmNlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+
IG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFR
dWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50
KSk7CiAKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1
ZSk7CiAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsK
ICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVl
dCBldmFsdWF0aW5nIHF1ZXJpZXMiKTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1l
ZGlhUXVlcmllcykgJiYgIXByaW50RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBp
ZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFs
LmV2YWx1YXRlKG1lZGlhUXVlcmllcy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3N0eWxlU2NvcGUpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0
T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCku
Z2V0KCpjYWNoZUtleSkpIHsKICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNo
ZWFibGUoKSk7CiAgICAgICAgICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKCpjYWNoZWRTaGVldCwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAg
ICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFR
dWVyaWVzKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAg
ICAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0g
U3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVt
ZW50KGVsZW1lbnQpKTsKIAogICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUoY29udGVudHMuZ2V0KCksIGVsZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1f
c2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAg
aWYgKCFlbGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxl
KGVsZW1lbnQudGl0bGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5
MTQzMTI4YzllMmIxMzkyZWE5ZmM5N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZj
MzY2YzA3Y2RlN2I4MDk4ZmQyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9p
bnRlckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFBvaW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKICAgICAgICAgYm9vbCBpc1ByaW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0
aWMgUmVmUHRyPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
SW5pdCYmIGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0
aWFsaXplcikpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oCmluZGV4IGNmOGUzOTNiODYzZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0
NjkwNTJiNWNiMzEwYTlhMjZlZGQ0M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNl
ckdlc3R1cmVUeXBlIHsgRXNjYXBlS2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRv
a2VuIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGlj
IFJlZjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUg
c3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVy
ZVR5cGUpKTsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggNTgyYmUwZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4u
OThhYmM3MzZkNzUwNjg0M2YzMjFjMGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVy
bmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRv
IHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBj
b3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFs
dWUuIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVh
dGUgYSByYW5nZQogICAgIC8vIHdoaWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFw
aCB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVm
UHRyPFJhbmdlPiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFp
bmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBv
c2l0aW9uKCkpOworICAgIFJlZjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmlu
Z0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29y
cmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25P
ZlJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICgh
c3RhcnRQb3NpdGlvbk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRl
cm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGFrZSBub3RlIG9mIHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0
aGF0IHdlIGNhbiBhZGQgbWFya2VyIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgot
ICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgp
KTsKKyAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5w
dHIoKSk7CiAKICAgICAvLyBDbG9uZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhp
cyBtZXRob2QgbWF5IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAg
IGF1dG8gcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYs
MTIgKzI2NiwxMiBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1Vu
YXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdG9yKG1fZnJhbWUpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
CiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0
ZWQsIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVT
ZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LmVuZCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyJiBtYXJrZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vy
cy5yZW1vdmVNYXJrZXJzKHJhbmdlLmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0
b2NvcnJlY3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtl
cnMucmVtb3ZlTWFya2VycyhyYW5nZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1
dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlP
dmVybGFwcGluZ01hcmtlcik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2Uu
cHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQz
LDEwIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVk
RWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXND
cmVhdGVMaW5rQ29tbWFuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgp
KTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1h
cmtlcnMoKTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFy
a2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbik7CiB9CiAKIEFsdGVybmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JE
ZWxldGVkQXV0b2NvcnJlY3Rpb25BCiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGlu
Z0NoYXJhY3RlclBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHByZWNlZGluZ0NoYXJhY3RlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVu
dCgpLCBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0
cmluZyBzdHJpbmcgPSBwbGFpblRleHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gcHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7
CisgICAgU3RyaW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5w
dHIoKSk7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdX
aGl0ZXNwYWNlKHN0cmluZ1tzdHJpbmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1hcmsgdGhpcyB3aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRl
ZCBhbiBhdXRvY29ycmVjdGlvbiBmb2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNv
IGlmIHRoZSB1c2VyIHR5cGVzIHRoZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBw
b3NpdGlvbiwgd2UKICAgICAvLyB3b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2Zy
YW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2lu
YWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCks
IERvY3VtZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdG
b3JMYXN0RGVsZXRlZEF1dG9jb3JyZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpwcm9jZXNzTWFya2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0
IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUs
IGNvbnN0IFN0cmluZyYgc3RyaW5nVG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAg
Ym9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29y
ZChjb25zdCBEb2N1bWVudE1hcmtlciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFy
a2VyLCBlbmRPZldvcmRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBOb2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFp
bmVyTm9kZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgq
bV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFy
a2VyLmVuZE9mZnNldCgpKTsKLSAgICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkp
OworICAgIGF1dG8gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgp
LCBub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsK
KyAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAg
ICBpZiAoIWN1cnJlbnRXb3JkLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
bV9vcmlnaW5hbFRleHQgPSBjdXJyZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkp
IHsKICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdp
dGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2
ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmco
KTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5
cGVTcGVsbGluZ1N1Z2dlc3Rpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVu
dE1hcmtlcjo6UmVwbGFjZW1lbnQ6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3
b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRS
YW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAg
ICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lv
bik7CiAgICAgICAgIGJyZWFrOwpAQCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRN
YXJrZXImCiAgICAgICAgIGF1dG8mIG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtl
cjo6RGljdGF0aW9uRGF0YT4obWFya2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29y
ZCAhPSBtYXJrZXJEYXRhLm9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9y
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRh
aWxzID0gbWFya2VyRGF0YS5jb250ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJ
VGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4
MTRhZDFkM2ZkYTZhZjg2OTY4OGJmYzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0
MjZmNzRiNjAzNjk3MWZjOGNlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29w
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0
UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBh
dXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25J
bk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGlu
dCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRy
dWUpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3Jh
cGgodmlzaWJsZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFy
dChlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0
LDEyIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5
bGUmIHN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChw
YXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwg
MCwgdHJ1ZSk7Ci0gICAgZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2Ug
JiYgZW5kUmFuZ2UpCi0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRv
IHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0
cnVlKTsKKyAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1
cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpOworICAgIH0KIH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjb3B5U3R5bGVPckNyZWF0ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUp
CkBAIC0xMDUxLDkgKzEwNTMsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklu
bGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAg
ICAgZWxlbWVudHNUb1B1c2hEb3duLmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQot
ICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5n
ZXQoKSk7CisgICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBk
b3duY2FzdDxIVE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1
c2hEb3duLnB0cigpKTsKIAogICAgICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91
Z2ggY2hpbGRyZW4gb24gZWFjaCBsZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFn
Z3JlZ2F0ZSBpbmxpbmUgY2hpbGQgZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3
cmFwIGVhY2ggY2hpbGQgc2VwYXJhdGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHls
ZSYgc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMg
Y29udGFpbmluZyB0YXJnZXROb2RlIGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdl
dE5vZGUKICAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQg
dGhlbiBhbHdheXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0
YXJnZXROb2RlIHx8IHN0eWxlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVT
dHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5w
dHIoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBv
dXRlciBsb29wIChjb250YWlucyB0YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFj
aGVkIHRhcmdldE5vZGUsIHN0b3AgdGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBv
ZiB0aGUgY3VycmVudCBpbm5lciBsb29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2
NGNiNWMxZGIwODMuLjMwYjM3MmZiNTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBA
IC0zODIsOCArMzgyLDcgQEAgVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCBy
YW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZp
cnN0UmFuZ2UpIH07CiB9CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3
NjcsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVz
ZXJ2aW5nTWFya2VycyhUZXh0JiBub2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXImIG1hcmtlckNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRv
IG1hcmtlcnMgPSBjb3B5TWFya2VycyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNv
dW50KSwgRG9jdW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5O
b2RlKG5vZGUsIG9mZnNldCwgY291bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiBuZXdSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwg
Jm5vZGUsIG9mZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdS
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9m
ZnNldCArIHJlcGxhY2VtZW50VGV4dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBt
YXJrZXIgOiBtYXJrZXJzKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYg
KG1hcmtlci5pc0RpY3RhdGlvbigpKSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFk
ZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9u
KCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAg
ICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBl
KCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5t
ZXRhZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50
eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5h
ZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlv
bigpKTsKICAgICB9CiB9CiAKQEAgLTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAg
ICAgICAgICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFn
cmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2
aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
Ci0gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
c3RhcnRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAg
ICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigp
LCB0cnVlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAg
ICAgICAgICAgaWYgKGVuZEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNp
YmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5n
ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
c3RhcnRPZlBhcmFncmFwCiAgICAgLy8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVj
dGx5IHRvIGNyZWF0ZSBhIFJhbmdlOyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAg
UG9zaXRpb24gc3RhcnRSYW5nZUNvbXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwogICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRS
YW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFu
dC5kZXByZWNhdGVkTm9kZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFy
dFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUo
KSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBhbiBpbmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24g
bm9kZXMgaW4gdGhlIHBhcmFncmFwaCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0
ZXIgdGhvdWdoLCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBz
bWFsbC4KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhp
cyB1c2VkIHRvIHVzZSBhIHRlcm5hcnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25m
dXNlZCBzb21lIHZlcnNpb25zIG9mIEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlICE9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZSgqcmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAg
ICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBl
bXB0eVN0cmluZygpKTsKIAogICAgIC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlz
IG1vdmVkIHdoZW4gd2UgY29weSBhbmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8g
YW55dGhpbmcgaWYgd2UncmUgZ2l2ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkg
cGFyYWdyYXBoIGNhbiBoYXZlIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2
ZDZlNjY1NWViMDk3NWE2Li5hNmQxNzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKQEAgLTY5Myw5ICs2OTMsOSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1l
cmdlUGFyYWdyYXBocygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVu
dCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVw
bGFjZWQuZ2V0KCkpKQorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3Io
KS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdl
VG9CZVJlcGxhY2VkLnB0cigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQ
YXJhZ3JhcGhzIHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0
aGF0IHdvdWxkIHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCmluZGV4IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0
ZWVlNWMuLjg2ZDAyMWQxOGE0NzkxM2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBu
b2RlLCBpbnQgaW4KICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxl
Y3ROb2RlQ29udGVudHMobm9kZSk7Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsK
KyAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShp
bmRleCAtIDEpOwogICAgIHJldHVybiB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24o
KSA6IGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAw
MTM4OWQxYzhhZGI0NzM4YS4uYjM4YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcx
NCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxl
T2ZOb2RlKE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJlbnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVk
U3R5bGUobm9kZS5wYXJlbnROb2RlKCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZu
b2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAg
ICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAK
ICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsK
QEAgLTgyOCw4ICs4MjgsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGlu
ZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVj
b3JhdGlvbkNoYW5nZTo6UmVtb3ZlOwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwg
c2hvdWxkUmVtb3ZlU3RyaWtlVGhyb3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVMaXN0ID0gdGV4dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkg
ewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVM
aXN0LT5jb3B5KCk7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRW
YWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAg
ICAgICBhdXRvIG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAg
YXV0byBleHRyYWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAKICAgICAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0g
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVV
bmRlcmxpbmUpOwogICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1
ZUxpc3QtPmhhc1ZhbHVlKHVuZGVybGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBi
b29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxl
ZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlz
dC0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGlmIChuZXdWYWx1ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwg
bmV3VmFsdWVMaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHls
ZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rp
b24gb25seSByZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rp
b24gd2FzIG1vZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJv
cGVydGllcywgdGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hp
Y2ggb25lIG9mIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxs
ZWQuCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsK
KyAgICBhdXRvIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShw
b3NpdGlvbiwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVz
KiBzdHlsZUF0UG9zaXRpb24gPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHls
ZS5nZXQoKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcg
KzExNTgsNyBAQCBzdGF0aWMgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RF
ZGl0aW5nUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VJbmxpbmVBbmRJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1l
bnQsIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJv
cGVydGllc1RvSW5jbHVkZSkKIHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21S
dWxlcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVG
cm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5s
aW5lU3R5bGUoKSkKQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJn
ZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQog
ICAgIC8vIFRoZSBwcm9wZXJ0eSB2YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3Qg
cmVmbGVjdCB0aGUgYWN0dWFsIGNvbXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6
IHN0eWxlPSJoZWlnaHQ6IDElOyBvdmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAg
ICAvLyBGSVhNRTogVGhlcmUgYXJlIG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2Js
ZW0vNTE5NTEyMz4gU2xhc2hkb3QgY29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IgY29tcHV0ZWRTdHlsZSgmZWxlbWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24o
U3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21w
dXRlZFN0eWxlKTsKKyAgICBtX211dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxp
Y3QoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9w
ZXJ0aWVzSW5TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVy
dGllc0Zyb20sIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4
LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChT
dHlsZWRFbGVtZW50JiBlbGVtZW50LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbigqbV9tdXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMp
OwogCiAgICAgLy8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92
ZXJyaWRkZW4gYnkgbWF0Y2hlZCBydWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21w
dXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRp
ZXNJbkVmZmVjdCk7CisgICAgYXV0byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVh
dGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlKSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9t
dXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpKQogICAgICAgICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAg
LTE4MDIsNyArMTgwMiw3IEBAIHN0YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBleHRyYWN0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5k
YW50UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0
aWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzKTsKICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0
aWVzKGJhc2VTdHlsZSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVj
ZGZjM2M5N2Q4YjNkMy4uNTlhNGI4MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0ID8gImx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQgPyAicnRsIiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGlu
Z0RpcmVjdGlvbik7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0
cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVj
dGlvbiBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25z
dApAQCAtMjAyMyw4ICsyMDIzLDggQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3Rh
cnQsIGV4dGVudE9mZnNldCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihz
dGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwot
ICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVk
UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6Tm8pOworICAgICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShi
YXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAg
ICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJh
bmdlLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
Ok5vKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKaW5kZXggNTZjYTViZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4u
OWZkYWMxZDYxMTk1MzhhY2UzZDRiZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHls
ZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFj
dGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFs
dWUpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlE
LCBwcm9wZXJ0eVZhbHVlKTsKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBs
eVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9y
IHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9y
S2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRv
U2VsZWN0aW9uKHN0eWxlLmdldCgpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBs
eVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVKdXN0aWZ5UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdE
aXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZy
YW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCks
IEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIENTU1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5l
ZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGly
ZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0
bCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlv
bjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcAppbmRleCA2ZjUzMjA4ZmU2YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2
YzdmZGUyMWRiYjIwMzRiNTljNWI5NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9p
ZCBGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCwKICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5v
ZGUoKSA6IHNwbGl0VHJlZVRvTm9kZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1Nw
bGl0VG8pOwogICAgIFJlZlB0cjxOb2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91
dGVyQmxvY2s7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydCwgZW5kT2ZTZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCog
cmVmTm9kZSA9IGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiBy
b290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVs
bCBmb3IgZWxlbWVudHMgd2l0aCBjb250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290
IHx8ICFyZWZOb2RlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1h
dEJsb2NrKHJlZk5vZGUtPnRhZ1FOYW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFy
dCkKLSAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNv
bnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRP
ZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFu
Z2UuZ2V0KCkpKQogICAgICAgICAmJiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2Vu
ZGFudE9mKCpyZWZOb2RlKSkgewogICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVu
dCB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChy
ZWZOb2RlLT5oYXNUYWdOYW1lKHRhZ05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1
NzQwNWY5NDhiYWNjYWMyLi40ZWMwYjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAK
QEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdz
IHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3Jl
IG9wZXJhdGluZyBvbi4KICAgICBOb2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUocm9vdCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVy
eXRoaW5nIGJ1dCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgYWNjZXNzIHN0eWxlKCkuCiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAK
LSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50KCksIGRlZmF1bHRTdHlsZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29t
bWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBw
bHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlz
RWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZC5jcHAKaW5kZXggNTAyYmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5
MS4uMDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNw
cApAQCAtODksOCArODksNyBAQCBSZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5n
ZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAx
LCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
Km1fcmFuZ2VUb0JlUmVwbGFjZWQpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggNDgwNGU5MGE4ZTIyOWNiOTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFh
NzFmZmMxZjcxNTE3NmVhMGY1MzY2YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRL
ZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50
ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0g
ICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoaW5saW5lU3R5bGUpOworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUp
IHsKICAgICAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPFF1YWxpZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNl
bWVudEZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5n
U3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRp
b25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2Vy
dGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Q
b3MtPnN0eWxlKCktPmFzVGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBh
cmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyAr
ODA0LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJ
bnNlcnRlZE5vZGVzJiBpbnNlcnRlZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAg
IGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5s
aW5lU3R5bGUoKSk7CiAgICAgQ29udGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVT
cGFuLT5wYXJlbnROb2RlKCk7CiAKICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3
aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5n
IGludG8gYSBxdW90ZWQgcmVnaW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4
Zjg1OGRmNGRiYzM2YWYzNzgzYi4uN2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4
MjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCkBAIC0xMjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0
aWNSYW5nZT4+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVG
cm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07
CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9C
ZUNvcnJlY3RlZCkgfTsKIH0KIAogUmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFi
NzY4M2FiM2U0NzJmMWE5ZjM1N2FkNzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1
MTQwYzUyMGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tp
bmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcApAQCAtMzM3LDggKzMzNyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAg
ICAgIGlmIChpblNhbWVQYXJhZ3JhcGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
bV9yYW5nZS0+ZW5kUG9zaXRpb24oKSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUg
Y2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5n
ZSB0byB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3
aWxsIHdhbnQgdG8gaWdub3JlIHJlc3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5n
ZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRP
ZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byBlbmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJh
Z3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1
cnJlbnRFbmRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFu
Z2UucHRyKCkpOwogICAgICAgICAgICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGN1cnJlbnRTdGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAg
LTM5Nyw4ICszOTcsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAg
IGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdy
YW1tYXJQaHJhc2UuaXNFbXB0eSgpIHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFp
bExvY2F0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBz
cGVsbGluZ0xvY2F0aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHBhcmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzcGVsbGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFw
aE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJh
Z3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFw
aFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxp
bmdPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1Jh
bmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBv
dXRJc1NwZWxsaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9m
ZnNldCA9IHNwZWxsaW5nT2Zmc2V0OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tH
cmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1h
clBocmFzZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJh
c2VPZmZzZXQgPSBncmFtbWFyUGhyYXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
cGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2
N2Y4ODVlYWI1ZWRjYTk4YTIyY2U1YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUx
MWZkZjRkOTk4YTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBv
c2l0aW9uVHlwZSk7Ci0gICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwg
KmNtZCwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRv
IGNtZCA9IFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4
dCwgb3B0aW9ucywgY29tcG9zaXRpb25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21t
YW5kKGZyYW1lLmdldCgpLCBjbWQuZ2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVu
dFNlbGVjdGlvbik7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERv
Y3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJv
b2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1h
bmQgY29tbWFuZFR5cGUsIFRleHRHCiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJl
YU9yVGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBs
eUVkaXRpbmcoKnRoaXMsIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5k
aW5ncygpKTsKIAotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNS
YW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9y
KCkud2lsbEFwcGx5RWRpdGluZygqdGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5k
Ojp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JB
ZGRlZFR5cGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAz
OTUwMzYxYmJhZDU5MTRkZGRkMzIzNDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0
MWZhZWNlNTBkNzE5Yzk2MmNkZmFjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCkBAIC0xODkzLDEwICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBv
CiAgICAgYm9vbCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11
c3QgY29tZSBmaXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9k
ZSgpLT5kb2N1bWVudCgpLAorICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhl
ciA6IHZwKSk7Ci0gICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5nZXQoKSk7CisgICAgaW50IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZS5wdHIoKSk7CiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDog
ZGlzdGFuY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KaW5kZXggNWNjZjQ0NjI0MDk2ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2
ZmExYWM0YTliNjljODVmMDk2NmJhMjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0
b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVy
RGF0YSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hp
dmVGb3JtYXQoKQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29t
bWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5k
SU9TLmNwcAppbmRleCA3NWY1NGExMzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4y
YzRiNjBkMDE0MzMxMTE1Y2I5MTJjNzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCAr
NjcsOCBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQq
IHJvb3QgPSBhZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklY
TUU6IEFkZCB0aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUg
cmVzdWx0cyBhcmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3Jz
LgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVz
dWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0Vu
ZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCks
IHRydWUpOwogICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAK
ICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KaW5kZXggZjM3ZmRlN2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4u
MjMwZjVlM2I0MTczMmIxZTYyODQ1MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uIGRpcgogICAgIC8vIElmIHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVu
dCwgZmxpcCBsZWZ0LT5yaWdodCBhbmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwg
ZG8gbm90aGluZy4KIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0g
RWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSk7CisgICAgYXV0byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5
bGVBdFNlbGVjdGlvblN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAg
IGlmICghc2VsZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMzgsMTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFy
YWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUu
cHRyKCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90
IG1vZGlmeSBieSBhcHBseWluZyB0aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2Zy
YW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVm
YXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAog
ICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJ
VmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAg
IGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRv
cjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBs
ZW1lbnRzIHVuZGVybGluZQogCiAgICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3Rs
eWUgPHJkYXI6Ly9wcm9ibGVtLzkxNTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRj
aCBzdHlsZSBzaG91bGQgc2F5ICJVbmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1Nl
bGVjdGlvbihkZWZhdWx0U3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMp
OworICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rp
b246OkNoYW5nZUF0dHJpYnV0ZXMpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50
JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hl
ZEltYWdlKQpAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAg
ICBQb3NpdGlvbiBiZWZvcmVJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24o
JmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVm
UHRyPFJhbmdlPiBpbWFnZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1l
bnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGll
bnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsK
KyAgICBhdXRvIGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVu
dCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwog
CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3
ZTc5YmUxZDY5MmYyNWYuLjNmZTZmNGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAs
OCBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihu
b2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBv
c2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rp
b246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKTsKIApAQCAtMTc2LDkgKzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZy
b21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxh
aW5UZXh0OwotICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJD
b250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWlu
VGV4dCkpIHsKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9z
ZVBsYWluVGV4dCkpIHsKICAgICAgICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50
KCpub2RlLCAqZnJhZ21lbnQpOwotICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZy
YWdtZW50LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAg
ICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LnJlbGVhc2VOb25OdWxsKCksIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7
CiAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVt
ZW50JiBpbWFnZUVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAo
IWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYx
YWFiZGExOTgzNC4uYjgzZGFjZDBjMmIyODYzYWEyMmI2ZGYzOTM1NGJjZmFmM2NlZmIwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzY0LDkgKzc2NCw5IEBAIHN0YXRpYyBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUm
IG5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEhUTUxFbGVtZW50Pihub2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0
byBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAg
ICAgc3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7Ci0gICAgcmV0dXJuIHN0eWxl
OworICAgIHJldHVybiBXVEZNb3ZlKHN0eWxlKTsKIH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50
UHJlc2VudGF0aW9uYWwoY29uc3QgTm9kZSogbm9kZSkKQEAgLTEyMTEsOCArMTIxMSw4IEBAIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21l
bnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgICAgIC8vIEJhc2VkIG9uIHRoZSBkb2N1bWVudGF0
aW9uIEkgY2FuIGZpbmQsIGl0IGxvb2tzIGxpa2Ugd2Ugd2FudCB0byBzdGFydCBwYXJzaW5nIHRo
ZSBmcmFnbWVudCBpbiB0aGUgSW5Cb2R5IGluc2VydGlvbiBtb2RlLgogICAgICAgICAvLyBVbmZv
cnR1bmF0ZWx5LCB0aGF0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIu
CiAgICAgICAgIC8vIFdlIGFjaGlldmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEg
ZmFrZSBib2R5IGVsZW1lbnQgYXMgY29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgotICAgICAgICBS
ZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRl
KG91dHB1dERvYyk7Ci0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBm
YWtlQm9keS5nZXQoKSk7CisgICAgICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShvdXRwdXREb2MpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0
cmluZywgZmFrZUJvZHkucHRyKCkpOwogICAgIH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0g
InRleHQvcGxhaW4iKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6
Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3RyaW5nKSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCAwNDM0MTI5MDJhNDBmZTQx
NzFiNzY1MmQ5OGIwYTNlMmUyOGQ1MTU3Li44OTcxNTVhMTIyOTFkYzRlNTM1MjM0ZTA4OGE4YzQy
ZWZhMDliNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAKQEAgLTIxNyw5ICsyMTcsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogdm9pZCBGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpCiB7CiAgICAgaWYgKG1fdmFyaWFi
bGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4gbV9ieXRlc0xvYWRlZCkgewotICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNMb2Fk
ZWQpOwotCi0gICAgICAgIG1fcmF3RGF0YSA9IG5ld0RhdGE7CisgICAgICAgIG1fcmF3RGF0YSA9
IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7CiAgICAgICAgIG1fdG90YWxCeXRl
cyA9IG1fYnl0ZXNMb2FkZWQ7CiAgICAgfQogICAgIGNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggZDdlMmI3NWE0NTMxMjBiMDJk
N2M3NDJkNDYwZjQ2YTRkZDU5OTQ4ZS4uZDc4MTEwY2M5ZWRiOWRhMDA0ZDQxNTg0YWM0OWRiYWUw
MDI0ZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpw
YXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAKIHN0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERp
cmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0
aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVj
dG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1
cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MGRjYzg4OTA1MDYzZDJlYjI3MDllNjJlMzRlOTVlYTA3M2IyODhhNC4uMTgxMGU3MjVlMTgzNDlh
YjM2NjU2OGVlMTg1MGNkYmJiZWY5OWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIq
KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudE5hbWUpCiB7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzKTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwogCiAgICAgLy8gRG9uJ3Qg
c2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5l
cmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8gd2ls
bCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBk
ZWxldGlvbi4KQEAgLTY0NDUsNyArNjQ0NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3Jl
YXRlTWVkaWFDb250cm9scygpCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9scz4gbWVkaWFDb250cm9scyA9
IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBhdXRvIG1lZGlhQ29udHJv
bHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFtZWRpYUNv
bnRyb2xzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IGZmOTZmNGYyNDM1YjA5OGUwNjY2MmYzM2NjMjA1ZTAwMGIz
NzkxNmQuLjJhNmE5YzYxMjE0NTRmMzI2MTEzNmQxNThlOGY1OWUwOWJlMTRlNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNDczLDkgKzQ3Myw5IEBAIEhU
TUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJz
KCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1SZWZQdHI8U3R5bGVQcm9wZXJ0
aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxl
UHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoY2VsbEJvcmRlcnMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdh
MTk4MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBj
bGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAg
IENlbGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVz
PiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
KiBsYXN0Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRh
MGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4
NTUwNjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGls
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBA
QCBTdHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIFN0cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAg
ICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1
cm4gb3JpZ2luLT50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYWNhNTFhNzdmMDMxNTMzOTI2
NjJmNDBjM2Q0ZTI1NzliZGRkMDRiMi4uZTJiNDNkZDVlM2IxNTk5ZmVkZjg0MDQ1YjJmMjgxZjA2
ZDAzMTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50
ZXJmCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1m
b3ItdGhlLXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50
Rm9yQ3VycmVudE5vZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25l
ckRvY3VtZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxl
bWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQs
IGluc2lkZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1
dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2Fs
TmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZv
cm0oKSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAo
YXV0byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVy
RG9jdW1lbnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFn
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggMDhjNmU1MGI1ODU0OGRjODc3MTNlMjBjMjA4NDA5
NjY0MmExM2ZhNC4uZTExOTJhZmY3MGFlOTdiMDNlMWI3YzI2YzFjMDU0MWEwMmQyNDZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmUK
ICAgICAgICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAg
ICAgLy8gc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1p
Z2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBm
b3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMp
OwogICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAx
LjAsIGZhbHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBp
eGVscywgRml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDgu
LjM1YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRG
cm9tQ3VlVGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgp
CiB7Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0
ZSgpOworICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5z
ZXRTdGFydFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9j
dXJyZW50RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9T
dHJpbmcoKSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0
aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7Cisg
ICAgbV9jdWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQy
OTQyYmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRj
aE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2
aW91c1NpYmxpbmcgPSBub2RlLnByZXZpb3VzU2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGNvZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKG1fZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50Ojpj
cmVhdGUobV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkK
ICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgp
ID8gbm9kZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsK
ICAgICBlbHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNo
U3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAg
ICAgaWYgKGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCku
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2Uu
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnRO
b2RlLCAqZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9y
LnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCAxZjM4YWEyMDA0YjI1NzM0ODhiMTYwZDczOWNmZTk2MzNl
ZmM2ZWM1Li5jMGVjM2Y4YjcyNTg1NTE5NTczYjJiYzRjZTBkZWFlZmU3MDJhMjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3
NSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRD4obV9jb250ZXh0KSkgewogICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3du
Y2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAo
YXV0byYgc3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJz
ZXRUcmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5z
Zm9ybSkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhG
b3JLZXkoImdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMz
LDcgKzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxT
dGF0ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8V2Vi
R0xDb250ZXh0QXR0cmlidXRlcz4gd2ViR0xDb250ZXh0QXR0cmlidXRlcyA9IGNvbnRleHRXZWJH
TEJhc2UuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOworICAgICAgICAgICAgYXV0byB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1
dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiYWxwaGEiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMt
PmFscGhhKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRC
b29sZWFuKCJkZXB0aCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+ZGVwdGgpOwogICAgICAg
ICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oInN0ZW5jaWwi
X3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPnN0ZW5jaWwpOwpAQCAtNjQzLDggKzY0Myw4IEBA
IFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUocGFy
YW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMp
KTsKIAotICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHRyYWNlID0gSW5zcGVjdG9yOjpjcmVh
dGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6
OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7Ci0gICAgYWN0aW9u
LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZNb3ZlKHRyYWNlKSkpOworICAgIGF1dG8gdHJhY2Ug
PSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0
YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHRyYWNlLnB0cigpKSk7CiAK
ICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDhlMWM0ODI5ZGZm
NWJlYWMxZDZmYzAzMjA5Y2ViZmQwYzQ1MDU3NzQuLmEwYzM4ODdhNmVmYzJhMDUxYzNhMzUzMTQ3
ZDcxMzZjZjhhYzhhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJp
bmcmIHVybCkKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZy
YW1lLmRvY3VtZW50KCksIG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7
IH0sICJfYmxhbmsiX3MsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8s
IE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3
RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdywgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKIAogICAgIGJv
b2wgY3JlYXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0s
IGNyZWF0ZWQpOworICAgIGF1dG8gZnJhbWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZy
YW1lLCBtYWluRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggM2NkZWM4NTA1MWVkMGMz
MTRlN2U0MmM0OWJmYmEwODU1NTUzNzdjNy4uOTQ5OGU3NjBiZDk2NDJhOTdkNjVlM2U5YzVhMzM0
MDM0MjExOTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKICAgICBpZiAoIXN0
eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFN0YXRpY0NT
U1J1bGVMaXN0PiBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8g
bGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8UmVmUHRyPENT
U1J1bGU+PiYgbGlzdFJ1bGVzID0gbGlzdC0+cnVsZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBzaXplID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAg
IGxpc3RSdWxlcy5hcHBlbmQoc3R5bGVTaGVldC0+aXRlbShpKSk7CkBAIC02MzYsNyArNjM2LDcg
QEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxl
OjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28KIAogICAgICAgICBhdXRvIHN0YXR1cyA9IGl0LT5k
aXNhYmxlZCA/IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkRp
c2FibGVkIDogSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0
aXZlOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3Bl
cnR5PiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNy
ZWF0ZSgpCisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldE5hbWUobmFtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnku
dmFsdWUpCiAgICAgICAgICAgICAucmVsZWFzZSgpOwpAQCAtNjk2LDExICs2OTYsMTEgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZXJ0aWVzKCkgY28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJ
bmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZl
UHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9u
aWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkuY29weVJlZigpKTsKIAogICAgICAgICAgICAgICAg
IGlmIChzaG91bGRJbmFjdGl2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52
YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0
dXM6OkluYWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91
c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNl
dChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5LmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBib29sIGltcGxp
Y2l0ID0gbV9zdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0KG5hbWUpOwpAQCAtMTMzMiwxMiArMTMz
MiwxMiBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAg
IGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG5ld1N0eWxlU2hlZXQgPSBTdHls
ZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOworICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CiAgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVT
aGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlciht
X3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVu
dCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7Ci0gICAgQ1NTUGFyc2VyOjpwYXJzZVNo
ZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5
bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKKyAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJ
bnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVTaGVldC5wdHIoKSwgbV9wYXJzZWRTdHlsZVNoZWV0
LT50ZXh0KCksIGhhbmRsZXIpOwogICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0
YShXVEZNb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5
bGVTaGVldC0+aGFzU291cmNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBmMmVkNWVm
ODc2NmQwNDc5YWU0N2QwZDIzMzRkZDk3YTQ5MDMwZTlkLi5jYWQ2NjY5M2E3ZTc1MzhmMjljYzIx
YTk5OWZjMTY3MmM3NTExMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNDM4LDggKzQzOCw4IEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAKICAgICBjb250ZXh0LmNhbnZhc0Jhc2UoKS5hZGRP
YnNlcnZlcigqdGhpcyk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ2FudmFzPiBpbnNwZWN0b3JD
YW52YXMgPSBJbnNwZWN0b3JDYW52YXM6OmNyZWF0ZShjb250ZXh0KTsKLSAgICBtX2lkZW50aWZp
ZXJUb0luc3BlY3RvckNhbnZhcy5zZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGlu
c3BlY3RvckNhbnZhcyk7CisgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBJbnNwZWN0b3JDYW52
YXM6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBtX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5z
ZXQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIGluc3BlY3RvckNhbnZhcy5jb3B5UmVm
KCkpOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1MCw3ICs0
NTAsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJp
bmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleAogICAgIGlmIChtX3JlY29yZGluZ0F1dG9D
YXB0dXJlRnJhbWVDb3VudCkgewogICAgICAgICBSZWNvcmRpbmdPcHRpb25zIHJlY29yZGluZ09w
dGlvbnM7CiAgICAgICAgIHJlY29yZGluZ09wdGlvbnMuZnJhbWVDb3VudCA9IG1fcmVjb3JkaW5n
QXV0b0NhcHR1cmVGcmFtZUNvdW50LnZhbHVlKCk7Ci0gICAgICAgIHN0YXJ0UmVjb3JkaW5nKCpp
bnNwZWN0b3JDYW52YXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhdG9y
OjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CisgICAgICAgIHN0YXJ0
UmVjb3JkaW5nKGluc3BlY3RvckNhbnZhcy5nZXQoKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVj
b3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09wdGlvbnMp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggYWUzYWNhZmQwOTBiMGFj
MTVjN2VmZDZmZWI4OTU5NDY0OGQ4OTk1MC4uZGVhNWM5YTMxZDRjOTI4YmIzNGUxOGNiZGQ0NTQ5
NGFlYjFhYmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE3NiwxNCArMTc2LDE0IEBA
IHN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkCiAgICAgICAgIHJldHVybiBLZXlQYXRoOjpjcmVhdGUo
KS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51bGwpLnJlbGVhc2UoKTsKIAogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAg
ICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtl
eVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBL
ZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6OlN0cmluZykucmVsZWFzZSgp
OwogICAgICAgICBrZXlQYXRoLT5zZXRTdHJpbmcoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGtl
eVBhdGg7CiAgICAgfSwgW10oY29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikgewogICAgICAg
ICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAg
Zm9yIChhdXRvJiBzdHJpbmcgOiB2ZWN0b3IpCiAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbShz
dHJpbmcpOwotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0
ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0
byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJh
eSkucmVsZWFzZSgpOwogICAgICAgICBrZXlQYXRoLT5zZXRBcnJheShXVEZNb3ZlKGFycmF5KSk7
CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVlNDRl
YWNhYmRlNWFhMTA3MzI0NTU5NDgyNWNhNzZkZDIzMTE3ZDUuLmMwZWMzZWY2OGJiZTdjMTI5ZDk2
YTAyMWVkYzQ4YjU2MjQxMWQ3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg5Miw3ICs4OTIsNyBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IFN0cmluZyogZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKICAg
ICBGcmFtZSYgZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CisgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGZyYW1lKTsKICAgICBpZiAoIWFyY2hp
dmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGNyZWF0ZSB3ZWIgYXJjaGl2
ZSBmb3IgbWFpbiBmcmFtZSJfczsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZjY1YWViYzlkZjZhNjViZDJmZjQ4N2RmYTM2N2I3YzNl
ZGZiOTYyLi41NjBjM2E1MDYwY2FlNjJlMDBjNjI4NGUyNTk3Mzc4MjEwMzllY2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMzgzLDE0ICszODMsMTQgQEAgY2xh
c3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyIHsKICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5hbWVz
cGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKLSAgICAgICAgUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0gICAgICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7IH0KKyAgICAgICAgUmVmPFN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbCB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9CisgICAgICAgIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFBhZ2UqKSBmaW5hbCB7IHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7IH0KICAgICB9OwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7Ci0gICAg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgZmluYWw7
CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkgZmluYWw7CiB9OwogCiBjbGFzcyBFbXB0eVVzZXJDb250
ZW50UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgVXNlckNvbnRlbnRQcm92aWRlciB7CkBAIC01MTMs
MjIgKzUxMywyMiBAQCB2b2lkIEVtcHR5RWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVu
ZG9TdGVwJikKIHsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5z
aWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVz
cGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1
bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTUz
NTQ3OTExNDdlNTg4YTA5NGViNmNiYWMxYjQyN2ExN2VmZGRhZS4uYTg3M2IxZDBlYWM3MjhkOGZl
ZjZkMGIyNTgwZTJmODU0ZTczNGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1l
TG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZgogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5
KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwotICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZmVycmVyT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOworICAgICAgICBhdXRvIHJlZmVycmVyT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpOwogICAgICAgICBh
ZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgcmVmZXJyZXJPcmlnaW4tPnRvU3RyaW5nKCkp
OwogICAgIH0KICAgICBpZiAoJm1fZnJhbWUudHJlZSgpLnRvcCgpICE9ICZtX2ZyYW1lKQpAQCAt
MzQ4OSw3ICszNDg5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb24KIAogICAgIHN3aXRjaCAo
ZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFhGcmFtZU9wdGlvbnNTYW1lT3JpZ2luOiB7Ci0gICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh1cmwpOworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KTsKICAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcEZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50KCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKQEAgLTM2MzksNyArMzYzOSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0m
IGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
UE9TVCIpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUo
KSk7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOworICAgICAgICBh
dXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRl
bS5yZWZlcnJlcigpKTsKICAgICAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNl
Y3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKICAgICAgICAgYWRkSFRUUFVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RzSWZOZWVkZWQocmVxdWVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBlMWQ2MGViOTBlN2I3MzQ5N2MxYWFk
YzFiMzRlZDdjMzVjNDZhZTZlLi40YmFkMTgzZTA4NTQ4YzQ3ZGRkOTgyMjllZTllNjJiNGViNDli
NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyCiAgICAgU3Ry
aW5nIG1vZGUgPSBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZTsKICAgICBtb2RlLmFwcGVu
ZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKIAotICAgIFJlZlB0
cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0
KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKICAgICB3aGlsZSAoIWxvYWRl
ci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICBy
ZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2VyR2xvYmFsU2NvcGUsIG1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CmluZGV4IDVmZDM5YmU3YmQxNDBiZWU0MmI5MWEyOGFmODZkZjc0YTdlNzRkNzIuLmMzYjVlM2Ux
ZjIyOTM0MTA2NjYyNjA5YjRhMDEwMzljMjBlOTExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTEzMSwxNiArMTMx
LDE2IEBAIHZvaWQgTUhUTUxQYXJzZXI6OmFkZFJlc291cmNlVG9BcmNoaXZlKEFyY2hpdmVSZXNv
dXJjZSogcmVzb3VyY2UsIE1IVE1MQXJjaGl2ZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHN1YmZyYW1lID0gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKICAgICBzdWJm
cmFtZS0+c2V0TWFpblJlc291cmNlKCpyZXNvdXJjZSk7Ci0gICAgbV9mcmFtZXMuYXBwZW5kKHN1
YmZyYW1lKTsKKyAgICBtX2ZyYW1lcy5hcHBlbmQoV1RGTW92ZShzdWJmcmFtZSkpOwogfQogCiBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLCBjb25zdCBTdHJpbmcmIGVuZE9mUGFydEJvdW5kYXJ5LCBj
b25zdCBTdHJpbmcmIGVuZE9mRG9jdW1lbnRCb3VuZGFyeSwgYm9vbCYgZW5kT2ZBcmNoaXZlUmVh
Y2hlZCkKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9m
RG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb250ZW50ID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5k
T2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZh
bHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlN
RUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0yMTEsNyArMjExLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0
LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBi
ZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNw
ZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkg
c2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBlZTk3YjJiZDRmZDA3MjJiNWJhM2JkNWZh
ZWUxYmM2ZGZjMTY2NjIwLi5mODYzMTM1MmMyMjBkZDFmYjU0NTgxMjU3YmU1Njg1OThmM2Y2ZDk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIx
NiwxMSArMjE2LDggQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUlt
YWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCA9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAgICAgcmVt
b3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92
ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAotICAgIFJlZlB0cjxCaXRtYXBJ
bWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBu
dWxscHRyKTsKLSAgICBpZiAoIWJpdG1hcEltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
CisgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIG51bGxwdHIpOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJ
bWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1h
Z2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNTQxLDcgKzUzOCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVz
b3VyY2UudXJsKCkpOworICAgICAgICAgICAgYXV0byByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVzb3VyY2UudXJsKCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNl
T3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3Jp
Z2luLmFwcGVuZCgmcmVzb3VyY2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggMjc3Mjk1MDQ1NGIzMGI4NTIyODRkNmNlYjUxNTYyMjdiNmE5N2RlMi4uNjg5OTRh
Y2NiZGJkYmRiNTRjYWI1MWJiNDMzYzhmZjY0ZDRiYTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5k
b3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKIAog
ICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpbiA9IGZyYW1lLT5zZXR0aW5ncygpLmNyb3NzT3JpZ2lu
Q2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkKCk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
Q1NTUnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAg
IGF1dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChh
dXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGlmICghYWxsb3dDcm9zc09yaWdp
biAmJiAhcnVsZS0+aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBE
T01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29ucwogICAg
IC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZyYW1lIGluIGNhc2Ug
dGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRoZSBvcGVuZXIgZnJh
bWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUgdG8gdGhlIG9wZW5l
ciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1lPiBuZXdGcmFtZSA9
IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1lLCBXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CisgICAgYXV0byBu
ZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZyYW1l
LCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7CiAg
ICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFtZT4geyBudWxscHRy
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2ZDE0MWVhZmRhZmFj
YTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2YjdlODBmNzllODEw
MWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02NTQs
OCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFRyaXBs
ZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGljIGludCB0ZXh0RGlz
dGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+
ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJu
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUpOwogfQogCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBh
YzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2OGI2YzQ2ZTEzODc0
MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEzOTUsNyAr
MTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAg
IC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3Bl
Y2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMs
IHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQv
cGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNo
ZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiNDYyYjlmNTVmYTYz
ZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJiNzRkMDJmMWFkNGYy
YjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBzdGF0aWMg
aW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1By
b3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHBy
b2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJh
dGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChm
cm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2NDllODk3YjVhOTA4
Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQgRnJhbWU6OmluaXRX
aXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh1cmwpOwogCi0g
ICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5
bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7CiAgICAgZG9jdW1l
bnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0
ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7Ci0gICAgc2V0
RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50LmNvcHlSZWYoKSk7
CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKmRvY3Vt
ZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUo
KmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAgICAgIGJvZHktPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBAIC02MjksMTYgKzYy
OSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBj
b25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCktPm1hcmtlcnMoKS5t
YXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0aGF0IHByZWNlZGUg
dGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiAh
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
KSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5nVGV4dFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWluVGV4dChwcmVjZWRp
bmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJlY2VkaW5nVGV4dFJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWluVGV4dChw
cmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlmICghcHJlY2VkaW5n
VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnBy
ZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yTWFya2VyID0g
UmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRl
eHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkpOworICAgICAgICAg
ICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50KCksIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpLCBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSkpOworICAg
ICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9y
TWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudEZv
ckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9uc0NvdW50OyArK2kp
IHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhlIGl0aCBpbnRlcnBy
ZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwgb3Igb25lIG9mIGl0
cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JD
dXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwgYWRkIGFueSB0ZXh0
IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFmdGVyTGFzdE1hcmtl
clJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9z
aXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkp
OwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1h
cmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6
OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOworICAgIFN0cmluZyB0
ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlLnB0cigp
KTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICBh
cHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXgg
ZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2YmVkMTA4NjlmNjc1
ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYsOCArMTU2LDggQEAg
dm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVJbigpCiAgICAg
W2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAgICBbYW5pbWF0aW9u
IHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRm
b3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9u
LmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3Jt
Q0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsICpwbGF0Zm9y
bUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhp
Y3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5
KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKQEAgLTE3NCw4
ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFk
ZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigp
OwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5p
bWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgp
KTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXll
cigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAqcGxhdGZvcm1Bbmlt
YXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEzZTIzLi40NmZjODEx
Y2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFyZWRCdWZmZXJEYXRh
VmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIAog
UmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNp
emVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCBzaXplb2YoY2hh
cikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVhdGUgYnVmZmVyLiBS
ZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVvZihjaGFyKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1ZjIyMzYzNjcxOTJm
MGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4OWRlZDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAt
MTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlS2VybmVsc0ZvckF6
aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAgLy8gKGhhcmR3YXJl
KSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5kZXggKiBSZXNwb25z
ZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZyYW1lICsgUmVzcG9u
c2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVSYXRlQ29udmVydGVk
UmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1cywgc3RhcnRGcmFt
ZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNlID0gQXVkaW9CdXM6
OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3Bv
bnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVTYW1wbGVSYXRlQ29u
dmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1cywgc3Rh
cnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVkaW9CdXM6OmNyZWF0
ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRlZFJlc3BvbnNlLmdl
dCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBsZWZ0RWFySW1wdWxz
ZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKICAg
ICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5u
ZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMxOGRlYjlhMDcwNDVh
ZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0NGY0MWQyYjZkYTM4
N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNv
dXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBB
dWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAgUmVmUHRyPEF1ZGlv
QnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNlRnJhbWVzLCBmYWxz
ZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNlRnJh
bWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBtYWtlIHRoZSBmb2xs
b3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1vcnkoMCwgYnVmZmVy
LCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3NjhlZmI3ZDYuLmNk
ZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAgUmVmUHRyPEF1ZGlv
QnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1p
eFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1f
Y2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRp
b0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOwogICAgIGF1ZGlv
QnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5R3N0cmVhbWVyQnVm
ZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwgYXVkaW9CdXMtPmNo
YW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgyNWIwYjRjNzE0NGVi
ZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIzMDRhMmI4YTYyMTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxl
UmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0cjxBdWRpb0J1cz4g
QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01v
bm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/IDEgOiBudW1iZXJP
ZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdlJ2xsIHB1dCB0aGUg
UENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAgICBhdXRvIGF1ZGlv
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsK
ICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fY2xp
ZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRlcgogCiAgICAgLy8g
T25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1ZDU1ZDU1NDMzZWIw
ZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZjYjEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyArNTEsNyBAQCBjbGFz
cyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAg
c3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNyZWF0ZShISUNPTiBo
SWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0KICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRleCAzOGI1MTkxYzYy
MDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQwZmZiNThkM2JlYjFm
NjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2YXRlQmFzZSB7CiAg
ICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAgc3RhdGljIFJlZlB0
cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZvcm1hdCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7IH0KKyAgICBz
dGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0KSk7
IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAg
ICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4Y2I4NTA2Yjk5ODdm
YjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmE5MzU1MDAzODlhYmRiM2QxNGU3NmVkODdkMzNk
YTQ3M2E2ZjYxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsxODkxLDggQEAgYm9v
bCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdpdGgg
dGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0s
IFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXpl
ID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNp
emUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgaW5pdERhdGFC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAgYXV0byBpbml0RGF0
YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAw
LCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5z
ZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAgIGF1dG8ga2V5VVJJ
QXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwg
a2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsNyArMTkwOCw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUo
bV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2UmVxdWVzdCk7CiAgICAgbV9vd25l
ci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CiAg
ICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhh
MzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMg
ZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50
KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNy
ZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJl
bnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCBkMDU3ODVjYWUzNjE2ZGZmYmU5OTM5ZTAzZGE1MTkzYzY5MTQ5
NTRmLi4zMTA3ODBjM2FjYWJkODE1NTVjM2QwMTllM2I0OGM2Y2Y3NzdhOWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxS
ZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3Qs
IEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBr
ZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50Pihl
bmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3Rh
dGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5i
eXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0Rh
dGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
QXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBD
RlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxv
YWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7
CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVl
c3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0
TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEy
YTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0
YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVi
bGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2Rm
ZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
PiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50
KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwg
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQ
cml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNl
UHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQs
IGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2
YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAt
NzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3Rh
bmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7Cisg
ICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VC
dWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9r
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggODMwMGRjM2I2ZTM5ZThjYWIxNDVhZWJhMjE3NmU5ODExZGZjOTg3MS4uZjE3
NjI2MjM0YjliNWEwYWRlOGMyNzU0N2E0NDY1N2E0ODJhY2QxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3
OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBj
bGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZm
ZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRp
YyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsK
IAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KaW5kZXggYTk5ZmViN2Y2NTNjOTkxMTZkMGYzMzllYzM3NzVmYzIwY2VmMGJlZC4u
MWM1NjYzNjYwZDlhZWRjYzg5ZTZiNTIzM2I4ZmM0YWIzZDZlZDZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQz
MCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRy
YWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVh
dGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJX
YXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwg
Q0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUo
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFW
QXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9U
cmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAg
ICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlk
ZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZN
b3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlk
ZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAg
ICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1
ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZv
LnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1
ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBp
bmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJh
Y2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3Jp
cHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAg
ICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2
ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkp
OwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAppbmRleCA4MGNmYzRmYWMzNDVjOTJlY2Q2MTczN2ZjOTI1NGRjZDhiNzU1YmY4Li45MWRiNjU0
MWM0YjEyM2FlYjM0NmVhMzkyYWUwNDM4NDBkMjQzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQs
OSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QK
ICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxl
R3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9s
bGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBn
cmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXll
cihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRp
YmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9
IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGls
ZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
aW5kZXggYWUxOWI4YzUxNzFmZDU3NDFhNTUxNWY3NmE2OTg4NjY2MmZhZjA3Yy4uZGI5ZDQ1MzEw
N2JkNDkwMDUxNjUyMGQ1YTA2NzUyMGFjMjY2YTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsK
IAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7Cisg
ICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBU
aWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1
cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkx
YWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMz
YzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYs
NyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlm
ICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQog
ewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NB
Q0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmll
d0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0
YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNj
Mjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJN
ZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwg
ZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9y
LnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigp
OwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0
KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5w
dHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAg
ICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZl
ci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDk0NzY4ZGMxYTkyYTJmNjRiZjJjZTIxMjY4ODE0YWEyOWEwOWY2Y2YuLmRlNzhk
YjYwN2ZhMTFmN2E1OGRlZmY0YTk4MjQyM2JiOGJhOGRkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBH
U1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4
dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3Ry
ZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNr
KTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3Bs
YXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0
cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
bWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7
CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlk
ZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRl
b1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFj
ay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQo
KSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVh
bXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAg
ICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFr
ZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJh
Y2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwog
ICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5
LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4
dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1J
ZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAg
ICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAg
fQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEy
OTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5U
OgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsK
ICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJn
b3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxh
eWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAg
ICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRF
X1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5n
UGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAg
ICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxi
YWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwo
Z3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3Np
bmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAg
ICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJp
bmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24u
Z2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXll
ci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4
KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNz
aW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyAr
MTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1Rz
U2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RN
cGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0
cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAg
aWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49
IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1i
ZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAg
ICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4y
IFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAg
VVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRU
b0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAg
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsK
ICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAg
ICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBu
ZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFj
MjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5Yzhh
NTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+
IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsK
KyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxl
LmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMDI2YTIwNTczZWMzMmFkYjJhM2JjOGE2ODYw
MjNlYTgwYWQ4MzEwOC4uZDA5MjkyMGMyNmJkNjBlOTgzYmZhMTQzNjZkNTYzOWVmZmZjZTQ1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2
b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwor
ICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3Jl
YXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAg
ICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJl
c2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQ
aXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAg
ICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkp
OwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgq
bWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBs
ZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5
ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZl
ci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5y
ZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAg
ICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAg
ICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlE
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICgh
cGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
b2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBh
cnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29s
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNl
dCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRh
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBh
cnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6
ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0
ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0
aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6
cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdm
Yzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0
ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1
NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQog
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9w
ID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0
byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50
aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3Zl
KGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0
NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNk
ZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRl
KFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQp
OworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1
cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRl
eHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNf
Y2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4
dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdh
NThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5
Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0
aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlm
IChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9u
ID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYg
KHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBw
ZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09w
ZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9u
ID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6
IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NjBkYTM4NjM4ZWY1MmE5MGVkMWZkODliNTJkZWU5
NjU0MzAxNTNjLi4wNmMwYTE5ZjMwZDM5ZDE5MTlkMmI0Y2ZkNDFkNDQ3ZWMwNTQyMTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1h
Z2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
IC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRo
ZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRo
ZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9k
YXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGly
RW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRh
KCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0s
IG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNv
ZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7
CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9u
bHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2
NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJk
NDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXph
dGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNp
emVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAg
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7
Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tU
cmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9m
ZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9
IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9j
a1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0Jv
eCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gu
bGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAyYThiMjRiZDJmOTIxZTFj
MWYzNTAwMjIyNzdhODMzODdlYzM3YWZlLi40MjU4ODk3YmU2YmUzOTExZTYwYmVkYWMxMDFmMzNl
MDk5YmNkMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVO
b25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZp
bmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAg
c3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0Jv
eCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkp
OyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2Rl
YygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmlu
YWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94Owog
fTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVk
aWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBh
cmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkg
JiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkg
ewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
c2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0
YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBN
b2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGgg
PiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0
cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3Ry
aW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAo
dHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9j
a0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9j
a0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNh
bXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tT
YW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAg
ICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYjNmOGFmNDJhMmY0MmFl
YjllZGVjZTZhYjMzYjVlODdhNTI3MjUyOS4uMTU3NjAwNTNjYmYwZjA1Mjk0MzM4YzQ3ZjI2MTE1
MjNiYTk4MjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tN
ZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1f
bWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkw
ZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRj
NjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1Ry
YWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0
VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2Nr
VHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRl
KGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJh
Y2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJv
eCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQor
ICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1Ry
YWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRl
KGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZDdjMWU1
ZmFhMGRlNTA3ODNiZmI0NzcyNGJmNTk5MTlhYjY2ZjkxZC4uYzQ5ZjQyMTc4MTIwYTRjM2QyYjRk
MzAyNjg0YjJkODNhZjFmNDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxG
b3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3
YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRl
eCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUw
ZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9y
YWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9i
c2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2
ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2ll
U3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3Rv
cmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcx
YzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3
MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0
LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVT
dG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9y
YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tp
ZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEw
MTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFw
cGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVt
LmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsK
ICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291
cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAg
ICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RF
TVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZd
IChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAx
NjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNl
OTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsx
NjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8
SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rp
b25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlv
bmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+
IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5h
dGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0
aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9u
RGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBS
ZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFy
eShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRp
Y3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5E
aWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0
OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1
cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAg
ICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1f
cG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVw
TWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3Bv
cHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBv
cHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEz
Y2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNo
UG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9w
b3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2
ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5k
ZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhl
bHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBk
b2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGlu
Z0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3
LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0
cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQg
LSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwog
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAw
eDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ry
b2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1
LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkK
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRl
ZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJH
cmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRp
ZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUp
LCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJH
cmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAg
ICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywg
MTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4
LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJl
bGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBw
ZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhl
aWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQog
ICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3Np
dGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAg
ICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAg
UmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0p
OwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcs
IDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDEx
OCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBD
b2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBS
ZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0Lngo
KSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7
CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwg
MTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUs
IENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50
KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgp
OwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50
J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1l
bnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUg
cm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwog
ICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAg
IHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAK
QEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFp
bmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWlj
b25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25J
bWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25J
bWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5
NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApA
QCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8
ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlz
IHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAg
ICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShB
ZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1t
eUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRl
KEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVl
KTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVt
bXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBp
bmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZl
Y3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApp
bmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0
NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxT
dG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdl
QXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsK
IH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VB
cmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywg
UmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHko
JndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAg
ICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1f
c3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4
M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBT
dG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFn
ZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
dG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYp
OwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUw
LDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0
ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEm
IGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVh
JiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRl
OgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBT
dG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQ
dHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVh
PiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3
ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIx
Mjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAt
MzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBu
ZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRm
Li41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBh
Z2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBh
Z2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2
ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZm
Li5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFn
ZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEo
RG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQ
YWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAg
U3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5h
bWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAw
OworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAK
ICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
aW5kZXggMDI1Yjk2YmJjYjQ0NDg2MTFjNzM0NWIwY2RmYzdhMTBkOTZjZTUwNi4uODVmNmZmMTJm
Mzg1NWU3MmYzNTE1Y2YzMjdiNTM5YjVmM2QwMjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBT
VkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlm
ICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdB
dHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAg
ICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIx
NjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi5jMjQxZTMwZTM5ZTY1MDhhMjliNzU0Yzg3
ODZhOWQ4ZjgwZTNhYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICgh
aW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAg
RmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygp
OwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3Rz
LmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAKaW5kZXggNTE1ZDMyZmZiY2Q3ZTUzYTdiYjRmNThmZGFiODI1YmY2MWM5N2I3
OS4uNzUxM2FjZTUxNzkwZjg2ZDhlOWNmOGUwYzgxNjQ2MjkwNzIzMzk0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQz
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRy
aXg6OmNyZWF0ZShmaWx0ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CisgICAgYXV0byBl
ZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBmaWx0ZXJW
YWx1ZXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAg
cmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMwMDE5NzAzZTNkODdiOWMz
MzI0MzI3YzQ3ZGJhYjIuLjUyYmU5NzEyYmM1ZjYxYWI0N2UyMjY4MDAwZjJiMTk2ODBmNjY5NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcApAQCAtODksNyArODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdAogICAg
ICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVudD4oY2hpbGQpLnRyYW5z
ZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRl
KGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggYTEwZTNhNzIxY2ZlYWJk
NDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uZDM4NTU3NDc3YzE2ODliMjE4YWJkYzlmMGE5MTYz
ZjE0OTVjYmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2
Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0g
RkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGsz
KCksIGs0KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwog
ICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggYjliMDIzYWMwMDZjMDdl
Y2NkZDA3Nzc0OWQyNzI1OTIzZDJiZmQwNC4uMDY3ZjEyY2I3MDM5ODJjN2VkMTQyODRmMDRjNjBk
MzdjN2UxZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlcgogCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlp
bmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3Io
KSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGlu
Zzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQo
KSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdo
dFNvdXJjZSkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShm
aWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVu
aXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsK
ICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBl
ZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRiNWZmYWZkNDRm
NTMuLjE0Zjc3ZjlmNmY4ODEzMTk2NGJiNDJlYTI5NWQ5MTM3ZTY5Y2RkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBpZiAoIWlucHV0MSB8
fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3Rvcigp
LCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxlKCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYg
aW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMu
cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1NTBm
NjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi5kNTRlNWYyYjY4NWU5OTM1Nzlh
Zjk1MTkzNzc2NWZhMzRlYTNiMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIs
IHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3Bh
Y2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0
ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0
eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1
cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAppbmRleCA5MzMxODdlNmQwNDlhNGZlZjdkNzE0ZTZhMzk1NjUxMTQxYTRjYTAw
Li4zMjBmOTIxZmUwYWZiZWUyODJmNGRmNzg3NzNkZWJjYzc4ODEyYmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpCiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8
IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZp
bHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlv
blgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZm
ZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkxYjgx
MTliOTZiZjVkYzg3NDM1Yjg5Li5mYjkyYTM1ZThkNDQwMzc4YzIwYzBjNjI1ODVjN2I1ZWE5ODRk
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
TWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRl
KGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZU
eXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggZmNiYzYzYjYyZTZlMTA2ZWJiNWQ1
NjIwOWUzZjUyOTlkOGIwYjZmYy4uZTNlODFhZmUxYWY3ZjEyNmU0ZDliMDdlODAzOWMyZThhYjhk
ODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgaWYgKHhS
YWRpdXMgPCAwIHx8IHlSYWRpdXMgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRl
ciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CisgICAgYXV0byBlZmZlY3QgPSBG
RU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRp
dXMpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0
dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAK
aW5kZXggMjgyMzY5ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uYzQwMmU0MDNl
YjJiOTQ0Mzk4OGM4YjBlYTk0OWIzN2ZkMDI0ZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLAogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgp
LCBkeSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgp
LCBkeSgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAg
IHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIx
NzczNzg3M2QwY2ZlNy4uOWU0ZDdmZDQyN2ZjYjFkMGMxYmJjZWE0MzQ1ZDVlYmU5NWRjZTUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAg
CiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xv
ckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNy
ZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBz
cGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZ
KCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJM
aWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNv
bnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCAzZjM4NzlkN2U2NmE4YzFkZGY5OTIz
MjYzYjdmZTAwNjI1NDg5MjQ0Li5hZTBkMTkxOTgwNTdiOGYyNDIyZjFiYmZjNTE4MGY1M2QwZWE1
NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVU
aWxlOjpjcmVhdGUoZmlsdGVyKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZp
bHRlcik7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICBy
ZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRl
eCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFjMTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4
MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2Jz
ZXJ2YXRpb24uaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdDT2JzZXJ2YXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7
CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4gc3RhdGljIFJlZjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAg
ICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2Rj
NmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4uOTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIy
MDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEw
MCw3IEBAIFJlZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVu
dChyZXN1bHQuY29weVJlZigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlw
ZSk7CisgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJj
ZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0Vt
cHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRl
eHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5z
ZXREZWNvZGVyKFdURk1vdmUoZGVjb2RlcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4
NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUwYTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVm
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1
bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJz
ZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwg
cGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNl
cjo6Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7
CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0gcGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVu
ayk7CiAgICAgLy8gRG8gbm90IGNhbGwgZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQo
KSBpbXBsZW1lbnRhdGlvbnMgdG91Y2ggdGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQg
Y2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRh
Y2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVk
IGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRk
NzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtNDksNyArNDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogc3RhdGljIElQQzo6Q29ubmVjdGlvbiogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxX
ZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vz
c0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDMyMWEwODM4NjkzODZjNGZiZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5
NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVhMmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBA
IHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25u
ZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNz
Q29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5l
Y3Rpb24ubW0KaW5kZXggYjlmYzg5NTBmYTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4u
Yzc2NDk2YjczMTI0NjdjMzY2MDYyZmFlZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCAr
MTAzLDggQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilk
ZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRNZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2Fn
ZU5hbWUgYm9keTooaWQpbWVzc2FnZUJvZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2Jq
ZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRl
KG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VO
YW1lLCB3a01lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJL
aXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25u
ZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0K
IAogLSAoV2ViS2l0OjpXZWJDb25uZWN0aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3
NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1
YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzExMzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFw
LT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5z
SW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Uu
Z2V0KCkgc2l6ZTpOU01ha2VTaXplKHNuYXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAg
ICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAt
IChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFW
RShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQg
Y29tcHJlc3NlZEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAg
ICAgaWYgKFdlYkNvcmU6OklPU3VyZmFjZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9y
bWF0KHNuYXBzaG90Rm9ybWF0LCBjb21wcmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8
V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90
OjpjcmVhdGUobnVsbHB0cik7Ci0gICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRv
Rm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0
MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNv
bnZlcnRlZFN1cmZhY2UpIHsKKyAgICAgICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZp
ZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxwdHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3ZlKHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZv
cm1hdDo6WVVWNDIyLCBbdmlld1NuYXBzaG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAg
ICAgICAgICAgaWYgKGNvbnZlcnRlZFN1cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBz
aG90LT5zZXRTdXJmYWNlKFdURk1vdmUoY29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsK
QEAgLTU5MDIsNyArNTkwMiw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJ
blZpZXdDb29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5k
bGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAg
IGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRs
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAg
ICBpZiAoIWJpdG1hcCkgewogICAgICAgICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBj
YjlhODBhMzdhYWNjOTViMjVmOTNjNDIuLjk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVj
ZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBA
IHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGlu
dCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
biBjb3JlUG9zaXRpb24geyBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0
aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3Vy
YWN5OwotICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1f
Z2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdl
dCgpKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3Zp
ZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdl
b2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVz
c2FnZSAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKaW5kZXggN2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1
ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93
X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAg
Z19yZXR1cm5faWZfZmFpbChHX0lTX1RMU19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZv
PiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0
ZUZsYWdzPigwKSkpOwotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJp
bmc6OmZyb21VVEY4KGhvc3QpKTsKKyAgICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNl
cnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0
ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3
ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8v
V2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJh
NjhkMWRmZGNhMDA1NmNjNmNkZGYyN2NmNmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5
MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lv
bkNhaXJvLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RkOjpvcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJh
c2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2Nv
YS5tbQppbmRleCA2N2YxMjIyYTc0NmM2NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIy
NDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246
OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlRGF0YUhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0
MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZjZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2
ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3Rv
cmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVw
ZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUg
PT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5k
bGUpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5m
by5iaXRtYXBIYW5kbGUpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRl
eCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEwZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFm
OTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRiNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0
KFdlYlBhZ2VQcm94eSYgcGEKIAogc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlcihXS1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkm
IHdlYkZyYW1lUHJveHksIE5TRXJyb3IgKm9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQ
STo6RnJhbWVIYW5kbGU+IGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdl
YkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKKyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFt
ZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVj
b3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRl
bXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIo
KmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9y
RmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIg
PSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0
KCkpIHVybFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJM
U3RyaW5nRXJyb3JLZXldXSk7CiAKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5oCmluZGV4IDlkNzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4Mzhl
YWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2RjMGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5oCkBAIC0xNzEsNyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9u
TW9kZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2Rl
bEMKIAogY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2
ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBkMTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFj
dGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJl
ZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KHBhZ2UpKTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAppbmRleCBhOTI5OWYxYjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjky
Li4yOTdmOTY4YjM1MjllMGMzNTVjZDRkYjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dCBmaW5hbAogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAg
ICAgdmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcy
ODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5
MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJl
KCkKIAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkm
IHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkpKTsKIH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KaW5kZXggMTcxMGRmMTljNDI2NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRh
ZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
QEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2Fy
ZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIHNpemUpOwotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5
cGUpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAg
IG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRC
dWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4
ZWUwNzA1OWEzMTNiMi4uZTQ2M2FjOTk0YmI5ZjhhYWM0NGZlODI5MzhiZTEzNjE2YmIwNTkyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQz
NzQsNyArNDM3NCw3IEBAIFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmll
d1NuYXBzaG90KCkKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0
ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90Ojpj
cmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUp
OwogCiAgICAgcmV0dXJuIHNuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDc1MDlkZGVkYjRjMDhl
NmJlODU0YmI3Y2VmNzI1YTk3OWQ4MGRjZWUuLjg2ZGMwOWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFm
MTcyNzFmNjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBEb3dubG9hZFBy
b3h5TWFwOjp+RG93bmxvYWRQcm94eU1hcCgpCiAKIERvd25sb2FkUHJveHkqIERvd25sb2FkUHJv
eHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBS
ZWZQdHI8RG93bmxvYWRQcm94eT4gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0
ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7Ci0gICAgbV9kb3dubG9hZHMu
c2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eSk7CisgICAgYXV0
byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9v
bCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+
ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlSZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCAqZG93
bmxvYWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93
bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5nZXQoKSk7CiAKLSAgICByZXR1
cm4gZG93bmxvYWRQcm94eS5nZXQoKTsKKyAgICByZXR1cm4gZG93bmxvYWRQcm94eS5wdHIoKTsK
IH0KIAogdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAKaW5kZXggNzk2NTg2OGJlMDQzMzllNzg0OWY0ZGQzNDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYz
ZmNhODg4NzE5YmU3ZjYyNzJkMjA1NzIwYmI4OTAxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTEgKzk2LDExIEBAIEhhc2hNYXA8U3RyaW5n
LCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCkKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25z
dCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcs
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAgdWludDY0X3QgZ2xv
YmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAg
UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpj
cmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcs
IGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlm
aWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3Jp
Z2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90
LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+
cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1f
bm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9i
YWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKSk7Ci0gICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgKm5vdGlmaWNhdGlvbik7CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmlj
YXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmlj
YXRpb24uY29weVJlZigpKSk7CisgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZp
Y2F0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNh
bmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyNWM5YzZjZjU2
Y2YyNTQzNDg3NmZkYmQxNjZmMTRjMDhmODE1MzQuLjQ3MDg4MTAwZWUzMWQwN2E2NmQ3ZTkxNThl
NDk5NThiOGRmODU5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzY0OSwxMCArMzY0OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3Vi
ZnJhbWUodWludDY0X3QgZnJhbWVJRCkKIAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5j
YW5DcmVhdGVGcmFtZShmcmFtZUlEKSk7CiAgICAgCi0gICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+
IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKKyAgICBh
dXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKIAog
ICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9j
ZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgKnN1YkZyYW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZy
YW1lQ3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRp
ZmllciYmIHdpbmRvd0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggZmE0M2EzZDFlNzgzMDkyYmI3YzAyMTgxNDdmZDE2NGY4MjdiMDNj
MC4uOWUzZjQwNGJkNmU2YWJiM2FiMjQzOWFiYTcyN2M2YjVjMzliZWY2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTcxMyw3ICsxNzEzLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFz
aywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVh
dGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkp
OworICAgIGF1dG8gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFy
eUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwogCiAgICAgaWYg
KHN0YXRpc3RpY3NNYXNrICYgU3RhdGlzdGljc1JlcXVlc3RUeXBlV2ViQ29udGVudCkKICAgICAg
ICAgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwy
MCArMTcyMiwyMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90
IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAgICAgICByZXF1ZXN0TmV0
d29ya2luZ1N0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVz
dCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0
aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vz
cykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJv
bSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3Rp
Y3NSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykgewogICAg
ICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3Mg
YnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRp
bmdSZXF1ZXN0KCk7Ci0gICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVx
dWVzdCk7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC5hZGRPdXRzdGFuZGluZ1Jl
cXVlc3QoKTsKKyAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCAmcmVxdWVz
dCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMDYzNDMyNDliYWE3MjVhZmI2
Y2I0NDRjNTUyMzI1M2QxN2UwODBiYy4uZTZiNDQ0ZTkxNDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2Nk
ZDdiNTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00
ODcsOCArNDg3LDggQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG8KICAgICBXZWJQcm9jZXNzUHJv
eHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94
eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAgICAg
dm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0
YVN0b3JlJik7CiAKLSAgICB2b2lkIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0
aWNzUmVxdWVzdCopOwotICAgIHZvaWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRp
c3RpY3NSZXF1ZXN0Kik7CisgICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3Rh
dGlzdGljc1JlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhT
dGF0aXN0aWNzUmVxdWVzdCYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCmluZGV4IDVlM2ZiNjVjMjMwZGJkODRkYWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQu
LmUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVjMzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3Ry
ZWFtZXIuY3BwCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmlu
ZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQdHI8SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0
YWlscywgZGVzY3JpcHRpb24pOwotICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisg
ICAgYXV0byByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7CisgICAgaWYgKHBhZ2VD
bGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0
LT5kZW55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVh
MDA0MWRiZTEwMTQ0MjdmODYzLi45MmVhZDA0NWU4YjhmYzJlNGI5OTM0NDI2YmQxMGE0YThlNTlm
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBXZWJQYWdlUHJv
eHkqIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlBy
ZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBF
TkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0
IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRp
bmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwog
ICAgIHByZWZlcmVuY2VzLT5zZXRMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxl
ZCh0cnVlKTsKICNlbmRpZgotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51
bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKIAogICAgIGF1dG8gcGFn
ZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGlu
c3BlY3RvckxldmVsRm9yUGFnZShudWxscHRyKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1fd2ViVmlldyA9IEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2ViVmlldywgImRlc3Ryb3kiLCBHX0NBTExC
QUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9hZGRfd2Vh
a19wb2ludGVyKEdfT0JKRUNUKG1fd2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
bV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBiNjRlMzM1OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2
YTcxOWZkMzRjLi5jYTE4N2E2NDIzNDExMmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2Uo
KSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZl
cmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAt
MTQ2LDEyICsxNDYsMTIgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MoewogICAgIH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZp
ZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFn
ZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVj
dGVkUGFnZSgpKSk7CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQ
b29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1faW5z
cGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25m
aWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVD
VChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9y
VmlldykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9pbnNwZWN0b3JWaWV3LCAiZGVzdHJveSIs
IEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0K
aW5kZXggYzFjZjU4NzU4ZWNiYTk4NTdhMGE2MWFkNDhkNmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5
ZjY5M2NkMmIzYjU1Y2VjMjBlMTczYzJmYjRiMTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xODYs
NyArMTg2LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAg
ICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5k
bGVyOildKSB7CiAgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1l
SW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQo
KSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5k
bGVyOikpOworICAgICAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVy
OikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZp
ZXcuZ2V0KCk7CiAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVl
c3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwg
ZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBh
dXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3Zjhl
ZDJjY2JhMzEuLjlmZWZmZGRmNDEwNDEyZTc2ZDJjMGMzZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAg
LTM4NCw5ICszODQsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyKQogewotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsK
ICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9p
bXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVu
c2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVi
b2FyZE5hbWUpOworICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRy
KCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVC
dWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBjYmZlMzBlOWUwYmU4MzIxNTE4
MTk2MzU1Zjc3OTgwOGI4MjRmMmY2Li4zNzk4YmZiYjVhOWM0MTRmNjBmZGMzY2JlYTljN2MwZGIz
ZTAyMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVj
dG9yUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJU
KGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3Ry
aW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9E
RSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3Ig
aW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5j
ZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdz
KHsgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFn
ZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9v
bChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAucHRyKCkpOwogCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIG5h
dmlnYXRpb25DbGllbnQgPSB7CiAgICAgICAgIHsgMCwgdGhpcyB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
UmFuZ2UubW0KaW5kZXggODI1MDkwMTc5MDBmNDc4OTQ0OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4u
OTMxMzQzZWIxYmI4NzMyZWE1ZDNiNTQyNGM1MzA2Yzg0NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVJhbmdlLm1tCkBAIC01MCw4ICs1MCw4IEBAIC0gKGlkKV9pbml0V2l0aEltcGw6KFdlYkNv
cmU6OlJhbmdlKilpbXBsCiAKIC0gKGlkKWluaXRXaXRoRG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQg
Kilkb2N1bWVudAogewotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3Jl
OjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7Ci0g
ICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UuZ2V0KCldOworICAgIGF1dG8gcmFu
Z2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRv
Y3VtZW50KSk7CisgICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UucHRyKCldOwog
ICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFk
YWNmZGIzZmFmNDUwZTdjYWU2Zi4uOGMyOTViYWViZmJhMmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlm
ZWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CkBAIC0xMzgsNyArMTM4LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXpl
IGJhY2tpbmdTdG9yZVNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNp
emUuc2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgaWYgKCFiYWNraW5nU3Rv
cmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxYTMxMjMzZTZmYzllMjgxOGEyZmNmYTMw
MTkxYTVmYTE1Nzg4YjUuLjk1MTIzMDJiMjgyZTQxZWQxYjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBA
IC0xNjgsOCArMTY4LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgUmEKICAgICAgICAgICAgIHBh
c3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0
byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhc3Rl
Ym9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggZWMwOTg2N2Jm
MDM4ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2NjNiOGQ4ZS4uNmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3
YTQyYjhmODk4Y2E5YjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCkBAIC03OCwxMCArNzgsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBp
ZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0g
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwor
ICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3Jl
YXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7Ci0gICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRv
QVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQ
SShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdi
ZDQwMDViYjcxYTAuLjg4YzBhMmQ5YzYzMTJkMmMwZWEwNmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2lu
Z1N0b3JlU2l6ZSA9IG1fcGx1Z2luU2l6ZTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNv
bnRlbnRzU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7
IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
YmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2Fs
bCBhcHBseURldmljZVNjYWxlRmFjdG9yIGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMg
dXAgY2FsbGluZyBpbnRvIFdLU0kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMyY2JhMDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUz
NTVjZDZmYzMyNjQuLjAxOTliODRmOGY0ZTI4Zjc2OWE3NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2Uo
KQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hU
VFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToy
MDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6
aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNw
b25zZS5nZXQoKSk7CiAKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSks
IG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50
aGVzaXplZFJlc3BvbnNlKTsKKyAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJh
cHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2Up
OwogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFy
Y2hpdmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgp
CiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9y
ZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5n
U3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0x
ODUzLDExICsxODUzLDcgQEAgdm9pZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQo
TlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwog
ICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlw
ZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5l
d0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLQotICAg
ICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAg
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDMxNDc5YWZjMjlhZGY0YWM4NTJiYjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1
OGVjZDlkMjM3ODkwNGIzNDdkMGQzYTZmNDY3ZTk0NGQyZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtODQsOCArODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdAogICAgIGlmICghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25u
ZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7Ci0g
ICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKTsKKyAgICBhdXRvIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJl
ZigpKTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25u
ZWN0aW9uc011dGV4KTsKQEAgLTk0LDcgKzk0LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QK
ICAgICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5zZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKICAgICB9CiAKLSAgICByZXR1
cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJuIHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uLnB0cigpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24qIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAz
YmI5NGYzYWJiNmJjOTFkMTYuLmQ2NTA1MzU4ZGI2ZjM1YzgxMjMwY2FmMTlkOTlmNGM0YzAxYjRm
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Q
cm94eTo6c25hcHNob3QoKQogICAgIGlmIChzbmFwc2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNu
YXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRs
ZSk7CisgICAgYXV0byBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNu
YXBzaG90U3RvcmVIYW5kbGUpOwogICAgIHJldHVybiBzbmFwc2hvdEJ1ZmZlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0
NDk1Yzk5MTEyMmQwODQzZGFiMGM4NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4
ZWVlODUyNzAwNmNlZWJjOWMzNzFlODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVn
aW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAog
ICAgIC8vIFRoaXMgcmVxdWVzdCBpcyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0u
Ci0gICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUo
dGhpcywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRk
U3RyZWFtKHN0cmVhbS5nZXQoKSk7CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJl
YW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgp
KTsKKyAgICBhZGRTdHJlYW0oc3RyZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUx
NjIyN2ZhZjc4NjI1NS4uNzhlNjczNTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZQogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5E
YXRhKTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2lu
RGF0YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRh
YmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9w
YWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3Bh
Z2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5h
bWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVz
YWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURh
dGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCks
IGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJl
bnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVz
YWdlKCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3
MzcsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2
NF90KQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQp
CiB7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0g
ICAgaWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0
ZXNOZWVkZWQpKQorICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmlu
amVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgp
LT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZDA1ZmM5OTZjMWQ0ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4
Y2ZjNGEwNTlmOWVmNzgxZTE0NjExMDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC03NjcsMTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0
aQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7
CisgICAgYXV0byBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5
IHRoZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kg
PSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZy
YW1lTmFtZSwgdXNlckRhdGEpOworICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kg
PSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZy
YW1lTmFtZSwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5
QWN0aW9uVXNlKSB7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2Vl
ZjljZjBiZmFmMzRmNjRkYThiMzE2MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3
YzM2Mjk5NDIzYjdjYjhmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpS
ZXBseShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBB
U1NFUlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5W2ldKSkpCiAgICAgICAgICAgICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFk
Y2Y5YWMyM2Q4ZDEzZWJkZjkzYzY3ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4
ZDA2NWVmZmYyNDRmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3Vy
ZmFjZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQo
Z3JhcGhpY3NDb250ZXh0LT5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KaW5kZXggZmZlZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAy
ZS4uZjg3ZDkzNDQzZjdjNThhODJjNDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW1lCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9
IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRl
eCBhMzhjZDJiZjYzNzk0YzhlOWYxZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYz
NmNiNzUyZWY4MTFhMTI0NWViNTVkZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0
LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9y
UmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNp
dGlvbiA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jv
c3NmYWRlKQogICAgICAgICBpbmRpY2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25J
bmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxU
ZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJh
bmdlKHJhbmdlLCBpbmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAg
ICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFu
Z2UsIGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICgh
dGV4dEluZGljYXRvcikgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBv
cHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKaW5kZXggNzgyNGU1Y2Y3MWI0N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIw
MDJiODZmNDJhMDFjZjQ4ZTVkZjY5MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyAr
NDE3LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJl
NGYzMDkyOWQxZjMuLjYzY2MyODM5MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJ
KCkKIAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2Vs
ZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7
Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4
dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hv
dWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2Ug
OiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFp
bmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMx
NWRmMTc2ZDYyMGI0NTg5ZGMzNjU5OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZm
ZDgyZWVhNTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1
c2hlciA9IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dl
YlBhZ2UucGFnZUlEKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tp
bmdTdG9yZUZsdXNoZXIsIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVl
dWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwg
cGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAg
ICAgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWEx
ODhiMjRiNjQ0NmQwNTI3ZGY4NjUwZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0
YjVhYjcxOWI3OTgyYzAyYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1l
bnRMb2FkZXJEZXRhY2hlZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVG
aWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZy
YW1lKCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1l
KSAtPiBib29sIHsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
KmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1l
JiBmcmFtZSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBiZTZiZWZiODE0Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3
ZDdhN2NjODQ1ZTU1MzJjM2IyMDZlN2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2
b2lkIFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0
cmluZyYgdXJsLCBJbnRQb2ludCBkbwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAg
ICAgLy8gRklYTUU6IFNldCBtb2RpZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSBzZXQgSXNTaW11bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJ
c0NvbXBvc2VkOjpZZXMsCisgICAgYXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJ
c0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3Rv
bmljVGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1l
bnRQb2ludCwgeyB9LCB7IH0sIDAsIDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxs
cHRyKTsKIAotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9j
dW1lbnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCks
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZl
cnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5G
cmFtZURvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50
LnB0cigpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRT
ZW5kUmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBj
b25zdCBXZWIKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
IGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXlbaV0pKSkKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZp
bGVVcGxvYWQuYXBwZW5kKGV4dGVuc2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CmluZGV4IDBjODRmNjRjOGM2M2VkMWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2
YTRjOWZhZDAxNzFjMTg4M2YwMGNlYmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAg
LTk0LDcgKzk0LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihG
cmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dp
bmdGaW5kSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0
b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5G
cmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFs
TWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0g
VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwg
ZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNp
dGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNh
bE1hcmdpbikpOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDlkZjYxOGE0ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjVk
NTY1MjJiNTkwM2RhNzU3YWM1NWNhODQ4NTRmNjA5MDZjOWZlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDcg
KzE4MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9z
aXRpb24ucHJldmlvdXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBv
c2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKTsKIAogICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2Uu
Z2V0KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNDEsNyArMjE0MSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRzID0g
NDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2Us
IFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRp
b25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMg
fCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9y
Q29tcGxleFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJ
bmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNw
ZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxl
eFJhbmdlcyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JP
cHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBk
ZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwog
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCkBAIC0yMTU2
LDcgKzIxNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mby5kYXRhRGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURl
dGVjdG9ySWRlbnRpZmllcigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LmRhdGFEZXRlY3RvclJlc3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFE
ZXRlY3Rpb25SZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVj
dGlvbjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVs
ZW1lbnQtPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlu
a1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlv
bkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9u
RXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5mby50ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQ
b3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25G
b3J3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIx
ODEsNyArMjE4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBv
biBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmln
dXJhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZp
Z3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFn
ZS0+bWFpbkZyYW1lKCkudmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1
cmF0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
c2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShi
aXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwg
MCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkMjU1NWMxOTkw
OGFiYTY2YTI0YzFjMWJkZDE1NmYyZDNkMjkwNDgzLi40N2ZjM2MyOTBmNjUwZTM2N2RiOThkNGMz
NzEzNWY5M2Y2NGU0MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFu
c2Zvcm0uc2NhbGUoc2NhbGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJl
bmRlclZpZXdBbmltYXRpb25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0
aCgidHJhbnNmb3JtIik7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZp
ZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3
QW5pbWF0aW9uQ0EuZ2V0KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7
CiAgICAgcmVuZGVyVmlld0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5z
aWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXIt
PmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5p
bWF0aW9uKTsKKyAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9v
bUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NB
TGF5ZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91
bmRzRm9yRnJhbWUoZnJhbWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5k
ZXggODA1ZmU5ZTRjYmI1ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uODgzMDE3MjY1YmJh
OTU2ZGM5ZDIyZjZiNjA0NDRiMTgwNjBlZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApA
QCAtNDAsMjQgKzQwLDI0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwg
bnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIs
IHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpFcGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OkVwaGVtZXJhbExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1
b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVz
KSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3Jp
Z2luLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BM
ZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpT
dG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2
ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
TWFwJiBtYXApCiAgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
CitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVw
aGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUs
MTYgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZp
bmFsIDogcHVibGljIFN0b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9y
YWdlTWFwOwogfTsKIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1l
cmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGF1dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFk
ZChzZWN1cml0eU9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xv
dCkKICAgICAgICAgc2xvdCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdl
QXJlYTo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1
cm4gc2xvdC5nZXQoKTsKKyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFn
ZSogbmV3UGFnZSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y29weShQYWdlKiBuZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7
CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFn
ZUlEKCksIG1fcXVvdGFJbkJ5dGVzKTsKIAogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9z
dG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCks
IG1fcXVvdGFJbkJ5dGVzKSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1l
c3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUs
IG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5C
eXRlcykpOwogCiAgICAgZm9yIChhdXRvJiBpdGVyIDogbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VB
cmVhcykKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFz
LnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmlu
ZGV4IGYxM2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgxM2Jh
ZjVjYjVhNDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
MzksMTAgKzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAg
c3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
OworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2aXJ0
dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0
b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHko
V2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VB
cmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxT
dG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0
X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44MjU1
N2I3MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDx1
aW50NjRfdCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQ
dHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVp
bnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmIChzbG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90Owog
Ci0gICAgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVu
dGlmaWVyKSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAg
ICBhdXRvIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjsKIH0KQEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1
cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdl
YlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBw
YWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBh
Z2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0
b3BMZXZlbE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aAppbmRleCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2ZGI5
ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmll
cik7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3Jl
YXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsK
KyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3MS4u
ZmM2NTk4NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0KQEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFs
aWRhdGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+
IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0g
ICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNl
ID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0
SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNiMDIy
MWYxNmUuLjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmludmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFj
ZVR1cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZh
Y2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRl
eHRJZCk7CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVyZmFj
ZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JF
eHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFj
ZSk7CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMuLjg2
ZGIyZDg3MThhNTRiMmY2YzI2NTNmOTNjMGFhZTliMmI5ZmQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtOTMs
MzEgKzkzLDMxIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwo
KQogICAgICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUg
PT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6
RXBoZW1lcmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdO
YW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlw
ZSwgbV9wYXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkp
OwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05h
bWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHko
KSk7CiAKICAgICByZXR1cm4gbmV3TmFtZXNwYWNlOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogCiAgICAgUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWE7CiAgICAgaWYgKChzdG9yYWdlQXJlYSA9IG1f
c3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpKQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7
CisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCiAgICAgc3Rv
cmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4s
IG1fc3luY01hbmFnZXIuZ2V0KCksIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0
KG9yaWdpbiwgc3RvcmFnZUFyZWEuZ2V0KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAg
ICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgw
YmZkNjVhOTY2NjE2MTM3Li5jODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1
YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5h
bWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5z
aWduZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VB
cmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFy
ZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0
NWE0NmQ2NzdjODg0YWJkOWUuLjgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTEx
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNo
U2V0PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXJzKCkKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRy
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQpAQCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3Rh
KTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQg
cXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdp
biYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50
YXRpb24gd291bGQgY3JlYXRlIGEgc3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1
c3QgcGlnZ3ktYmFja2luZyBvZmYKICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDBkMjA3ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0
ZWMwNzdhYmIuLmU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAg
IHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgc3RhdGljIHZv
aWQgY2xvc2VMb2NhbFN0b3JhZ2UoKTsKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNv
cmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJD
b3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCmluZGV4IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVl
MDY2N2QxYTYyMTNiOWQuLjYzY2FlMmQwYWQ1MmNkNTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5jcHAKQEAgLTQyLDE4ICs0MiwyMiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3VwcygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91
cHM7CiB9CiAKLVJlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCkKK1JlZjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmll
d0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKIAogICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5h
ZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghd2ViVmlld0dyb3Vw
KQotICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUs
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwotICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAt
Pm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNF
bXB0eSgpKQorICAgIGlmICghd2ViVmlld0dyb3VwKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KSk7CisgICAgICAgIHdlYlZpZXdHcm91cCA9IHJlc3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoOwogCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4g
KndlYlZpZXdHcm91cDsKIH0KIAogV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25z
dCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdHcm91cC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJWaWV3R3JvdXAuaAppbmRleCBmZTA1Y2Q1NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkz
MjcyYjVmLi40ZDQxMzdjZTJhYWFjM2ExNDBkNTljNjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAg
LTM4LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJW
aWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0
YXRpYyBXZWJWaWV3R3JvdXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKaW5kZXggZDA4NDkzYjBmNDJjY2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVk
MC4uODA0OWIxY2NjMjcyYzM0NzI1OTllNDk0MmU1MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9T
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVD
bGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhj
bGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50
KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQog
ewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwog
fQogCiB2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFy
Y2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDcxNmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4
ZWY1OTg3OWFmNGYuLjBlZjQ0YjQyYTY2MGFlMzUyYzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVw
TWVudUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5h
YmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1f
cG9wdXA7CisgICAgUmVmPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBT
ZWFyY2hQb3B1cE1lbnVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkw
MGY0ZjBlNmI5YTVlNjg5ZmMxOWM4NzM3NDQyYjViMjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBj
ZmFmMmYzMmExMzYxZjY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0
MzMsOCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFs
dGVybmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBtYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAg
ICAgWyhOU011dGFibGVBcnJheSAqKSphbHRlcm5hdGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAq
KShtYXJrZXJBbHRlcm5hdGl2ZXNbal0pXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBt
YXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkp
OwogICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01S
YW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aENvcnJlY3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgRG9j
dW1lbnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0
YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZz
ZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0
KHJhbmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5k
ZXggOTZhNjQ5NmMyYzQ0NjA5OTJjNWMxMmMwZGNmZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVl
MTQ5OGQ5ZjM0YjljMDk2MjkzZGMzNmNhNWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwx
MyArNDY1LDEzIEBAIC0gKHZvaWQpc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVS
TAogICAgIGlmICghVVJMKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2
ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9z
ZWQ6OlllcywKKyAgICBhdXRvIGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6
OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93
KCksIG51bGxwdHIsIDEsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwg
bnVsbHB0ciwgTW91c2VFdmVudDo6SXNTaW11bGF0ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRv
IHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVj
a3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJh
bWVdKTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRv
Y3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7
IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJl
ZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dywgIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigp
LmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCks
IG51bGxwdHIpOworICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LnB0cigpLCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4
NjM1ZTNhYThmNGFkNC4uMWI2YzgyMjg1NGEwN2YzZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9p
ZClnZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czoo
TlNBcnJheSAqKilyZWN0cwogICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMo
bm9kZSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXJnaW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBh
Z2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJ
bmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRp
Y2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0g
VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9u
VGlnaHRseUZpdENvbnRlbnQgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRl
eHRDb2xvciB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29u
dGVudEZvckNvbXBsZXhSYW5nZXMgfApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIu
bW0KaW5kZXggMWYzMmRjOTQ5OGJhNDIyMWQxMjkzOTFiODQ3OWFiYTMwYTk3OTg5NC4uNzc0ZDIx
YTlmZjg0ZjAxYTNjMTY5YmE2Nzk5MjU3YTQ3Yzk5ZWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RNYW5hZ2VyLm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQ
bHVnaW4KICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRh
dGFXaXRoUHJvcGVydHlMaXN0OnByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0
QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChk
YXRhKTsKICAgICAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0
YW5jZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1
Z2luVmlldywgZnVsbEZyYW1lKTsKKyAgICBhdXRvIGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwog
ICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IGluc3RhbmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAg
a2Vybl9yZXR1cm5fdCBrciA9IF9XS1BISW5zdGFudGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0
KCksIHJlcXVlc3RJRCwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtk
YXRhIGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCBpbnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAg
aWYgKGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA4ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFl
NzA2OGI3YzMyLi5hYmNhNmJiZTMzMDUzNWE5ODJlNjQyZDRjMmExODhhN2I4YThiN2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC03MTksOCArNzE5LDgg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQ
bHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3
U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQg
dG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpK
U0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK
ICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICAgICAgbV9z
dHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICAgICAgbV9z
dHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAg
ICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTc5OSwxMCArNzk5LDEwIEBAIE5QRXJyb3Ig
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJl
cXVlc3QsIGNvbnN0IGNoCiAgICAgICAgIG1fcGx1Z2luUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUo
cGx1Z2luUmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVx
dWVzdElELCByZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAKICAgICAgICAg
QVNTRVJUKCFtX3N0cmVhbXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0gICAgICAgIG1fc3RyZWFt
cy5hZGQocmVxdWVzdElELCBzdHJlYW0pOworICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJ
RCwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDlhNzQ1ZDkzODNmNzQ0N2Y1NDJkZjUwNDVlMjQ0NWIz
ODUzZTA4ODAuLjFkMWU4YWVmNjc1MjM2MWYzZWNjMDQ2NTA1ZDQ2NTdjMjU0NmI0YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNj
cmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAg
ICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9k
cyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemls
bGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNy
ZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2lu
UmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7
CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVz
dCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAg
ICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgLSAoTlBF
cnJvcilsb2FkUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5UYXJnZXQ6
KGNvbnN0IGNoYXIgKiljVGEKICAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cihsb2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5
OjBdOwogICAgICAgICBbcGx1Z2luUmVxdWVzdCByZWxlYXNlXTsKICAgICB9IGVsc2UgewotICAg
ICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBu
b3RpZnlEYXRhKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVh
bTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7
CiAKLSAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFtcy5h
ZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk2ZWY5MjFmZDYwNmVjZjA4MGVl
ZDEzMWQ0YjhkOTEyZDUxZjNmZmIuLjIzNDc4MWIwYmU4NmE0YmRhNTBjMGNlNTY0ODQyMjM4OGI0
MmJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0yMDcsOCArMjA3LDggQEAg
UmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFZpc2li
bGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikp
OwotICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAg
YXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJh
bWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBm
cmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGVjOGU1OGNmMjA3YmJjYjA0ODIyZWQy
YjE1ZGVhZDA2NzYyYTU2N2QuLjg0NjBiMDNmNTBjN2MyYjEzYTE3ZWZlNGM4MzhmYjdiOTIxOTBl
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KCkKICAgICBpZiAoaXNNYWluRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNv
cmVGcmFtZS0+dmlldygpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUt
PnNldFZpZXcobnVsbHB0cik7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gY29yZVZpZXcgPSBGcmFt
ZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKKyAgICBhdXRvIGNvcmVWaWV3ID0gRnJhbWVWaWV3
OjpjcmVhdGUoKmNvcmVGcmFtZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KGNvcmVWaWV3LmNv
cHlSZWYoKSk7CiAKICAgICBbbV93ZWJGcmFtZS5nZXQoKSBfdXBkYXRlQmFja2dyb3VuZEFuZFVw
ZGF0ZXNXaGlsZU9mZnNjcmVlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA3YjliYjg5OTA4YWU1YzFhNjUyZTM2Y2M4ODliZTA0ZTU2NTRjOTQ2
Li5hOTNkZWY2MTM5OWE1Y2M1NGVmNjFjYWU5YzAzNzk5MDU4OTBjZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE3NDYsOCArMTc0Niw4IEBA
IC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBh
bmRNZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3Rh
cnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBET01S
YW5nZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJh
bmdlID0ga2l0KHJhbmdlLnB0cigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1l
dGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKICAgICAgICAgICAgICAgICBbbWV0YWRhdGFz
IGFkZE9iamVjdDptZXRhZGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA5YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2NDRjOWU3
ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQwYzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEzNDgs
NyArMTM0OCw3IEBAIC0gKHZvaWQpX3dyaXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczoo
TlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0IEhUTUwg
b24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNo
aXZlUGJvYXJkVHlwZV0pIHsKLSAgICAgICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
b3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShb
c2VsZiBfZnJhbWVdKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CiAg
ICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNoaXZlID8g
Y29yZUFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGZvclR5
cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3
ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2MzkzOTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBjOTFmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDcyOSw4
ICs0NzI5LDYgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3Jv
dXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwg
U3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihX
ZWJTY3JpcHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9
IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYg
KCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAKaW5kZXggNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkwNDliNDYz
Zi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAg
IHJlbW92ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQ
bHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQs
IGxhc3RNb2RpZmllZCk7CisgICAgICAgIGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNy
ZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBh
ZGQocGFja2FnZS5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5n
ZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGY4NTVkZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0NGNjYTJm
NDUuLmQzZTMzOWY3NTk0OGEzZTNlMWQ5MjlkZWU3NmQ4YzJlZDQ2ZGRmMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDEwLDcgKzQx
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVx
dWVzdCkKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVh
dGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFzcyBpdCBv
ZmYgdG8gdGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFt
OjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVx
dWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJl
cXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCks
IG1fcGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9h
ZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigp
LCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5j
ZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJl
YW0pOwogICAgICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDU0LDcgKzQ1NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVx
dWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3RyaW5nLnV0Zjgo
KTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZy
YW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNh
dGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBp
bnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwogICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbSk7CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwg
Y3N0cik7CiAgICAgfQpAQCAtNjkwLDcgKzY5MCw3IEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJ
bnN0YW5jZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRv
IHJvb3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwot
ICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8g
aW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1v
dmUocm9vdCkpOwogCiAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThlZjU4ZmU0MTZmY2JmYjY3NWVk
ZTNmYzU4OTZjLi4wMzU5ZDkwMWFjY2NkOTEyNDY5MTFjZTkxZmMyM2NlMWIwYmEyNGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4g
cGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1l
bnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkp
OworICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2lu
U2l6ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBs
b2FkTWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0
YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0x
MTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0
cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJG
cmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2lu
VmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAm
ZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1q
YXZhLWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJl
IGxvYWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1
Z2luVmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAppbmRleCBjMDMyNDJjN2Q2YjYyZDhmYzYzNWQ5YTBkN2JkNmU1ZDdjMjU5ZmVkLi40NWU0YTU3
YjVhOGJhYzJkYTdiNDRlNGRmYmY4MjFjYWVmMGFiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJl
cXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJh
c2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWlt
ZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICgh
bWltZVR5cGUpCkBAIC02MTAsNyArNjEwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEo
X0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKIAog
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0
LCBfSW5fIEJTVFIgdXJsKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4
dCksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwog
ICAgIEJTdHJpbmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAg
ICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0
YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5n
LCB1cmwsIG51bGxwdHIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIAog
dm9pZCBXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8g
QlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4o
aHRtbFN0cmluZykpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBT
eXNTdHJpbmdMZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhU
KCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1
dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaAppbmRleCAxYmFkZDAxYzNhNzY0MGNjZjExMzA0YTQzNWE3YjFlMjQ1MTE1
ZmRlLi41MDJjYTg5ZGY2YjkwZDBhMjc3ZDc5YjFiYjU5ODcxYjVkMTE0MjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBERUNMU1BFQ19V
VUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIGZp
bmFsIDogcAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIg
c3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAg
ICB2b2lkIGxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdV
UkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFn
ZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3Jl
OjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMo
ZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCmluZGV4IDk0MDc3OTEyYTk5
MTY0MTE3ZDBjNjgxY2NjYzA2Njg2ZTA0YzRkZTAuLmY5YWI4M2I1MWNhMzIzZWJlNzFmNTUwMjY3
OTJkYmY2MzUzNDMzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKQEAgLTE4Nyw5ICsxODcs
OSBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIG1lc3NhZ2VXaW5kb3cgPSBudWxscHRyOwogfQog
Ci1SZWZQdHI8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGlu
YXRpb24pCitSZWY8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVz
dGluYXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQVZpZXcoZGVzdGluYXRpb24p
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKIH0KIAog
dm9pZCBDQVZpZXc6OnNldENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayhDb250ZXh0RGlkQ2hhbmdl
Q2FsbGJhY2tGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5o
CmluZGV4IDQ1YjY0ZWMwMTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMuLjcyOTYzYmUz
ZGJiYzQzMjhmNTU3OWE2ZGE1NzBjNjJjNWY0ODkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApA
QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDQVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxDQVZpZXc+
LCBwcml2YXRlIENWRGlzcGxheUxpbmtDbGllbnQgewogCiAgICAgY2xhc3MgSGFuZGxlOwogCi0g
ICAgc3RhdGljIFJlZlB0cjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOworICAg
IHN0YXRpYyBSZWY8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKICAgICB+Q0FW
aWV3KCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2tGdW5j
dGlvbikoQ0FWaWV3Kiwgdm9pZCogaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmNwcAppbmRleCBiMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5ZmM1Li5h
YWJkMTk4YjExMTVlZDdlNjVhZDgzMDg1NDE2MTljZDQxNTg0MGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxp
bmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ1ZEaXNwbGF5TGluazo6
fkNWRGlzcGxheUxpbmsoKQogICAgIDo6Q2xvc2VIYW5kbGUobV93YWtldXBFdmVudCk7CiB9CiAK
LVJlZlB0cjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlu
a0NsaWVudCogY2xpZW50KQorUmVmPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0
ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENWRGlz
cGxheUxpbmsoY2xpZW50KSk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DVkRpc3BsYXlMaW5rLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAppbmRleCAwYWUwMmYxNjllYzgyODkxMjY2MWVm
YTczOGM4NGZiN2M0NDQyMjgzLi5jYTAyNmFmZWFjNDE1ZDcxODc0NzhlODczNzVhMjcxMDk5ZjQw
Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBDVkRpc3BsYXlMaW5rQ2xpZW50OwogLy8gRklYTUUgODc2OTE4MTogUmVwbGFjZSB0
aGlzIHdpdGggQ1ZEaXNwbGF5TGlua1JlZgogY2xhc3MgQ1ZEaXNwbGF5TGluayA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDVkRpc3BsYXlMaW5rPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOworICAg
IHN0YXRpYyBSZWY8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsK
ICAgICB+Q1ZEaXNwbGF5TGluaygpOwogCiAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCmluZGV4IGRjNjY3MGQ0MzNmZjA5ZTBkMTE2NjVk
YzA1NTNiMjE2ZGZiMjYwMGMuLmNmOTIxODVhMTBkYjk0NmQwNmJiNGJkNDgwYzY5ZmRlYzM0NjA0
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgc3RhdGljIEhSRVNVTFQgZ2V0SW1hZ2VDb3B5KElEaXJlY3QzRFN1cmZhY2U5KiBz
eXN0ZW1NZW1vcnlTdXJmYWNlLCBSZWZQdHI8SW1hZ2UKIAogICAgIENTaXplIHN1cmZhY2VTaXpl
KGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0KTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJ
bWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKKyAgICBhdXRvIGltYWdlID0gSW1hZ2U6OmNyZWF0
ZShzdXJmYWNlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlOGJkZGViZjI2MjZmNWNjYWQ4
ZDRhY2VkNTczM2U3MjcyMmFlZWI3Li5mYmMwNGRlNjU5Nzg5OGIwNWQyMmE0ZTU3M2EyNGVkNTYx
OTc5ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjkxMiw4ICs2OTEy
LDYgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3Jv
dXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3Ry
aW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAg
ICAgaWYgKCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02OTQxLDggKzY5
MzksNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJT
VFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBT
dHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357561</attachid>
            <date>2018-12-18 04:00:53 -0800</date>
            <delta_ts>2018-12-18 05:40:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218210052.patch</filename>
            <type>text/plain</type>
            <size>406264</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi42ODk5NGFjY2JkYmRiZGI1NGNhYjUxYmI0MzNjOGZmNjRkNGJhMzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIyNDUsNyArMjI0NSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0
aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9t
CiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFt
ZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBS
ZWZQdHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3RpdmVGcmFt
ZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVz
LCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCph
Y3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRv
d0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICByZXR1cm4g
UmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDZkMTQxZWFmZGFmYWNhNzIzNzhhMWUzNGNjOWI4ZWViMjUzMWMxZDMuLjUxYmE4
OTFmZTE3MzMzOTZiN2U4MGY3OWU4MTAxYjE3MWNlODllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UgogCiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1
cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0
byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBz
dGFydCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5w
dHIoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFjNDBiODBlMmM5NThhN2Y2ZmE3YmU1NjNiOTgwN2NlMWUy
M2FjMDkuLjNhNDY4YjZjNDZlMTM4NzQwZjFiNjhmZDA0MzlmYjMyODUzODNkZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2Vy
U3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0
IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hl
biB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBh
bmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwCmluZGV4IGI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQuLmI0Mjhl
NTIyMWFmZTFiMmI3NGQwMmYxYWQ0ZjJiMjU5MGFkNjUwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE5
MSwxMSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZpbHRl
ck9wZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlmIChibGVu
ZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3Ap
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGlk
ZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAg
ICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IFdURk1v
dmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6
IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4ODAwZTcz
ODE2NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3ZjdlNDNiY2M1NzAyYjAy
NjFmYTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSwxNCArODEs
MTQgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiBzdHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmluaXRGb3JTeW50aGVz
aXplZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkb2N1bWVudCA9
IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlzLCB1cmwpOworICAg
IGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQo
dGhpcywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRD
b21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50LT5jcmVh
dGVET01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgc2V0RG9jdW1l
bnQoZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRt
bEVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1M
SHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGJvZHkgPSBI
VE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gYm9keSA9IEhUTUxC
b2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAoIXN0eWxlLmlzRW1w
dHkoKSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBz
dHlsZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRh
dGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDog
ZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAgICAgLy8gRmlyc3Qs
IGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAgICAgaWYgKHByZWNl
ZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2Rl
LCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRp
bmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1h
cmtlci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVjZWRpbmdU
ZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgYXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBwcmVj
ZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVjZWRpbmdUZXh0KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsKLSAgICAg
ICAgICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5nZUZvck1h
cmtlci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNy
ZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJr
ZXItPmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJr
ZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAgICAgICAgc2l6ZV90
IGludGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0ZXJuYXRp
dmVzKCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50
ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0
ZXh0IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0aGUgdmlz
aWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAgTlNBcnJheSAqRnJh
bWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICB9CiAKICAgICAv
LyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgotICAgIFJlZlB0
cjxSYW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgp
LCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIg
PSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gYWZ0ZXJM
YXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0
U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGls
ZENvdW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0
ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1hcmtlci5p
c0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJl
dGF0aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFmdGVyTGFz
dE1hcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVkZjk1MzgwYWM5MjFi
MTVmMGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJmYmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
bW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246
ZmFsc2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRvIHBsYXRmb3JtQW5p
bWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgp
KTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXll
cigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3JtQW5pbWF0
aW9uLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGln
aHQ6OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWluZWRTZWxmLT5kaWRG
aW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4o
bGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hs
aWdodE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlv
biA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Cisg
ICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+
YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24u
Z2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUwMDk0OGY1MmE1MDA4
OWQzNzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2VmOTE5YzJkNjBhZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAg
ICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5h
YmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUgeCAlbHVcbiIsIHNp
emUoKSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGY2NWNkZTNj
MWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3ZTk4Yjk1NmEwYzBj
NWIwNDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBIUlRGRWxldmF0aW9u
OjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVs
ZXZhdGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVuc2lnbmVkIHN0YXJ0
RnJhbWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2lnbmVkIHN0b3BGcmFt
ZSA9IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+
IHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJG
cm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJlZlB0cjxBdWRpb0J1
cz4gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKKyAg
ICBhdXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVC
dWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOworICAgIGF1dG8gcmVz
cG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKICAgICBBdWRp
b0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRp
b0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1bHNlUmVz
cG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmlu
ZGV4IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEuLjg5NzdmMzk4Njlk
NmI2NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBT
aW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJl
ck9mU291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV3JhcCB0aGUg
cHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJjZSBwcm92
aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVt
YmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1ZGlvQnVzOjpjcmVh
dGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8vIEZJWE1FOiBGaW5k
IGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgogICAgIGJ1cy0+c2V0
Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNkZDUxMDE1YzE2Mjc4
NGNkMjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5NTNmZTlmNGJhYTlh
NWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTM1Miw3
ICszNTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZs
b2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBhdWRpb0J1
cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1ZSk7Cisg
ICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVs
U2l6ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsK
IAogICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExlZnRCdWZm
ZXJzLmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDJh
ZjUxOGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0MTE1YWMyOTZlODJm
MzNiZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0xODAsNyArMTgw
LDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0g
bWl4VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9C
dXMgd2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1
cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZG
cmFtZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxD
b3VudCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKSk7IC8vIHNh
dmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNh
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCAxZmRmZWNkYTcx
YzYwNGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3ZTUwYjQwNGNmZDI2
MzRmZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiB7
CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAog
I2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBo
SWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBS
ZWY8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEljb24o
aEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDllZDJkZjI5YTguLjEz
ZjE4Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6IHB1Ymxp
YyBUcmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAgICAgV2ViVlRUCiAg
ICAgfTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShD
dWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4g
Y3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRUcmFja1By
aXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBj
bGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKaW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBkZDY5NC4uYTkzNTUw
MDM4OWFiZGIzZDE0ZTc2ZWQ4N2QzM2RhNDczYTZmNjE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBA
IC0xODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICAvLyBD
cmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8g
WzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAg
ICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
OwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6OkRhdGFW
aWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgYXV0
byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEp
OworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0
RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7
CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAtMTkwOCw3ICsxOTA4
LDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZD
RkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYKIAotICAgIFJlZlB0
cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOworICAgIGF1dG8gcmVz
b3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9vd25lciwg
YXZSZXF1ZXN0KTsKICAgICBtX293bmVyLT5tX3Jlc291cmNlTG9hZGVyTWFwLmFkZChhdlJlcXVl
c3QsIHJlc291cmNlTG9hZGVyKTsKICAgICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyMTI4NzIxNGEz
YmY1Y2UxNDA4MDQ1NTBkOWFlZWMzOGEzMDYxMWE5Li4xYTRiMTgxYWFjYjg5NjMwMDVjY2U1YWJk
ODczM2FjMWMyZDkxNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM5LDkgKzM5LDkg
QEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZUFW
RiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayAqdHJhY2ssIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RW5hYmxl
ZChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGQwNTc4NWNhZTM2MTZk
ZmZiZTk5MzllMDNkYTUxOTNjNjkxNDk1NGYuLjMxMDc4MGMzYWNhYmQ4MTU1NWMzZDAxOWUzYjQ4
YzZjZjc3N2E5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc0OSw3ICsxNzQ5LDcg
QEAgc3RhdGljIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YShBVkFzc2V0UmVzb3VyY2VM
b2FkaW5nUmVxdWVzdCAqcmVxdWVzdCwgQXIKIAogICAgICAgICBBU1NFUlQoc3RhcnQgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CiAgICAgICAgIEFTU0VSVChlbmQgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gcmVxdWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3Rh
cnQpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuZCkpOworICAgICAgICBhdXRvIHJlcXVlc3RlZEtleURh
dGEgPSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8
aW50PihlbmQpKTsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXF1ZXN0ZWRLZXlEYXRhLT5kYXRhKCkgbGVu
Z3RoOnJlcXVlc3RlZEtleURhdGEtPmJ5dGVMZW5ndGgoKV0pOwogICAgICAgICBbZGF0YVJlcXVl
c3QgcmVzcG9uZFdpdGhEYXRhOm5zRGF0YS5nZXQoKV07CiAgICAgfQpAQCAtMTgxNyw4ICsxODE3
LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICNlbmRpZgogI2VuZGlmCiAKLSAgICBSZWZQ
dHI8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7Ci0gICAgbV9yZXNvdXJjZUxv
YWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVy
KTsKKyAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKKyAgICBtX3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19i
cmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIuY29weVJlZigpKTsKICAg
ICByZXNvdXJjZUxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgK
aW5kZXggMGMwNGFmOTA0MzAyOTFmMTJhMTIxOWViM2M0MzU4Y2NhNGYyYmQxYS4uMTY4MTI3NTll
MGExYWVmY2Y0OGJlZjFhNDM2NGQ1ODRjOTE4MWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQqKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKICAg
ICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxheWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMDg0YzkwZDVmZDc3ZTY2ZWJkMmFlODRlMzE2
N2RmZDllOTM3M2NjLi4yYjM3ZWM3ZGZlYWI0NjVmMTFmN2E1MDdlMDg4OTJlZDk3ODkwYTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW0KQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjcHJhZ21hIG1h
cmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKIAotUmVmUHRyPE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3Vy
Y2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCitSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyogcGFyZW50LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkK
IHsKLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gbWVkaWFTb3VyY2VQcml2
YXRlID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGll
bnQpKTsKLSAgICBjbGllbnQtPnNldFByaXZhdGVBbmRPcGVuKCptZWRpYVNvdXJjZVByaXZhdGUp
OworICAgIGF1dG8gbWVkaWFTb3VyY2VQcml2YXRlID0gYWRvcHRSZWYoKm5ldyBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7CisgICAgY2xpZW50LT5zZXRQcml2YXRl
QW5kT3BlbihtZWRpYVNvdXJjZVByaXZhdGUuY29weVJlZigpKTsKICAgICByZXR1cm4gbWVkaWFT
b3VyY2VQcml2YXRlOwogfQogCkBAIC03Niw3ICs3Niw3IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6
QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcihjb25z
dCBDCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBuZXdTb3VyY2VCdWZmZXItPnNl
dENETUluc3RhbmNlKG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgb3V0UHJpdmF0
ZSA9IG5ld1NvdXJjZUJ1ZmZlcjsKKyAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyLmNv
cHlSZWYoKTsKICAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUobmV3U291cmNlQnVm
ZmVyKSk7CiAKICAgICByZXR1cm4gT2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4MzAwZGMzYjZlMzllOGNhYjE0NWFl
YmEyMTc2ZTk4MTFkZmM5ODcxLi5mMTc2MjYyMzRiOWI1YTBhZGU4YzI3NTQ3YTQ0NjU3YTQ4MmFj
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakNFcnJvckNsaWVudCB7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGZp
bmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKik7CisgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKICAgICB2aXJ0dWFsIH5Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQygpOwogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBt
X21lZGlhU291cmNlID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBhOTlmZWI3ZjY1M2M5OTExNmQw
ZjMzOWVjMzc3NWZjMjBjZWYwYmVkLi4xYzU2NjM2NjBkOWFlZGNjODllNmI1MjMzYjhmYzRhYjNk
NmVkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDMwLDcgKzQzMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7
CiAKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhRGVz
Y3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsgfQorICAgIHN0YXRpYyBSZWY8TWVkaWFE
ZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KICAgICB2aXJ0
dWFsIH5NZWRpYURlc2NyaXB0aW9uQVZGT2JqQygpIHsgfQogCiAgICAgQXRvbWljU3RyaW5nIGNv
ZGVjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb2RlYzsgfQpAQCAtNDg0LDkgKzQ4NCw5
IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcldhc0NvbnN1bWVkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25D
ZW50ZXJSZWYsIGNvbnN0IHZvaWQqLCBDRlN0CiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+YnVmZmVy
V2FzQ29uc3VtZWQoKTsKIH0KIAotUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKK1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhw
YXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyhwYXJlbnQpKTsKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKQEAg
LTU1MSwxNiArNTUxLDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAKICAgICAgICAgaWYgKFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbF0pIHsK
ICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudDo6VmlkZW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAgICAgICBSZWZQdHI8Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKLSAgICAgICAg
ICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrOwotICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5h
cHBlbmQodmlkZW9UcmFjayk7CisgICAgICAgICAgICBhdXRvIHZpZGVvVHJhY2sgPSBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0aGlzKTsKKyAgICAg
ICAgICAgIGluZm8udHJhY2sgPSB2aWRlb1RyYWNrLmNvcHlSZWYoKTsKKyAgICAgICAgICAgIG1f
dmlkZW9UcmFja3MuYXBwZW5kKFdURk1vdmUodmlkZW9UcmFjaykpOwogICAgICAgICAgICAgaW5m
by5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpjcmVhdGUodHJhY2spOwog
ICAgICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljQXVkaWJsZV0pIHsKICAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0aW9uIGluZm87Ci0gICAgICAg
ICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGF1ZGlvVHJh
Y2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNrLCB0
aGlzKTsKLSAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrOwotICAgICAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQoYXVkaW9UcmFjayk7CisgICAgICAgICAgICBhdXRvIGF1ZGlv
VHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlKHRyYWNr
LCB0aGlzKTsKKyAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRpb1RyYWNrLmNvcHlSZWYoKTsK
KyAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKFdURk1vdmUoYXVkaW9UcmFjaykpOwog
ICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDOjpj
cmVhdGUodHJhY2spOwogICAgICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5m
byk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGY0NTZmMGE5NmYyZTJi
YzI2MmRlYWZjMzlmNTMyZGI5ZDViMDZlOGYuLjVkZDdlNjIzMGZlOGUwNWI0ZmYzNDVlM2IxOTQx
NGFiMDkxZjNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDIsOSArNDIsOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlQVZGIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgYm9vbCBzZWxlY3RlZCgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDgwY2ZjNGZhYzM0NWM5MmVjZDYxNzM3ZmM5
MjU0ZGNkOGI3NTViZjguLjkxZGI2NTQxYzRiMTIzYWViMzQ2ZWEzOTJhZTA0Mzg0MGQyNDM5ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAKQEAgLTcyNCw5ICs3MjQsOSBAQCBpbnQgVGlsZUNvbnRyb2xsZXI6OnJp
Z2h0TWFyZ2luV2lkdGgoKSBjb25zdAogICAgIHJldHVybiAobV9tYXJnaW5TaXplICogbV9tYXJn
aW5FZGdlcy5yaWdodCgpKSAvIHRpbGVHcmlkKCkuc2NhbGUoKTsKIH0KIAotUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCitSZWY8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29u
dHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3Jp
ZCYgZ3JpZCkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllciA9IG1fdGlsZUNh
Y2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6
ZSgpKTsKKyAgICBhdXRvIGxheWVyID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJs
ZUxheWVyT3JUYWtlRnJvbVBvb2woUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tp
bmdUaWxlTGF5ZXIsICZncmlkLCB0aWxlUmVjdC5zaXplKCkpOwogCiAgICAgbGF5ZXItPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24odGlsZVJl
Y3QubG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuaAppbmRleCBhZTE5YjhjNTE3MWZkNTc0MWE1NTE1Zjc2YTY5
ODg2NjYyZmFmMDdjLi5kYjlkNDUzMTA3YmQ0OTAwNTE2NTIwZDVhMDY3NTIwYWMyNjZhNGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6
IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAgdm9pZCB1cGRhdGVUaWxlQ292ZXJhZ2VNYXAo
KTsKIAotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJ
bnRSZWN0JiwgVGlsZUdyaWQmKTsKKyAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVUaWxl
TGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CiAKICAgICBjb25zdCBUaWxlR3JpZCYg
dGlsZUdyaWQoKSBjb25zdCB7IHJldHVybiAqbV90aWxlR3JpZDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAyYTlkOTFhZTFjNzhkMWQ3MzVjZTQ5MWIzYWRhOWFhODBmNjc0NDNl
Li4xYWJhNDZmNGMzYmNhNWQxYjJhYzNjMGM0NTVhMWQ5YjZlZTA4MTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIENBQ0ZMYXllclRyZWVIb3N0
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGF2YWls
YWJsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gQ0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGF2YWlsYWJsZSA9IGZh
bHNlOwpAQCAtMTI1LDcgKzEyNSw3IEBAIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gQ0FDRkxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSgpCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRlZENvbXBvc2l0aW5n
QXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDQUNGTGF5
ZXJUcmVlSG9zdD4gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAgICAgaWYg
KCFob3N0KSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBsYXllciB0cmVl
IGhvc3QgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLiIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQppbmRleCA0MDZlMDg1ZmZmMWYxOWE5ZGJmZGI4
MWM2NDkzMWY0NjhhNGY5Nzk1Li5mY2MyNzZkYmUxNDI5NTM4MWI0MzMyNWMwY2MyNmRmZDQ4NTM0
YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCkBAIC01NSwxMSArNTUsMTEgQEAgUmVmUHRy
PEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQ
VUJ1ZmZlckRlc2NyaXB0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9t
Qnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsK
KyAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhwYWdl
QWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZvaWQqIHB0cikgewogICAgICAgICBH
aWdhY2FnZTo6YWxpZ25lZEZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKICAgICB9KTsK
ICAgICBhcnJheUJ1ZmZlci0+cmVmKCk7Ci0gICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29u
dGVudHMgPSBhcnJheUJ1ZmZlci5nZXQoKTsKKyAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXJD
b250ZW50cyA9IGFycmF5QnVmZmVyLnB0cigpOwogICAgIC8vIEZJWE1FOiBEZWZhdWx0IHRoaXMg
TVRMUmVzb3VyY2VPcHRpb25zLgogICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbXRsQnVmZmVy
ID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkKICAgICAgICAgbmV3QnVmZmVyV2l0
aEJ5dGVzTm9Db3B5OmFycmF5QnVmZmVyLT5kYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggOTQ3NjhkYzFhOTJhMmY2NGJmMmNlMjEy
Njg4MTRhYTI5YTA5ZjZjZi4uZGU3OGRiNjA3ZmExMWY3YTU4ZGVmZjRhOTgyNDIzYmI4YmE4ZGQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTczNCw5ICs3MzQsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBk
YXRlVHJhY2tzKCkKICAgICAgICAgICAgIENSRUFURV9UUkFDSyh2aWRlbywgVmlkZW8pCiAgICAg
ICAgIH0gZWxzZSBpZiAodHlwZSAmIEdTVF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNv
dXJjZSkgewogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgICAgIFJlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBzdHJlYW0pOwotICAgICAgICAg
ICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAgICAgICAgICAgbV9wbGF5
ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJhY2tJbmRleCsrLCBzdHJl
YW0pOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwog
I2VuZGlmCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24g
dHJhY2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFtICVzIiwgc3RyZWFtSWQudXRmOCgpLmRhdGEoKSk7
CkBAIC04OTQsMTAgKzg5NCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UGxheWVyT2ZWaWRlbygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAg
ICAgIGF1dG8gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNr
LT5pZCgpKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAg
ICAgICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soKnRyYWNrKTsKKyAgICAgICAgbV92aWRlb1Ry
YWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVyLT5h
ZGRWaWRlb1RyYWNrKHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFsaWRWaWRl
b1RyYWNrcyh2YWxpZFZpZGVvU3RyZWFtcyk7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mQXVkaW8oKQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyPiB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQ
dHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAg
IEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7CiAgICAgICAgIG1fYXVkaW9UcmFja3Mu
YWRkKHN0cmVhbUlkLCB0cmFjayk7CiAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKCp0
cmFjayk7CkBAIC0xMDI5LDkgKzEwMjksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZUZXh0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOwotICAgICAgICBt
X3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRU
ZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShpLCBwYWQpOworICAgICAgICBtX3RleHRUcmFja3MuYWRk
KHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRy
YWNrKHRyYWNrLmdldCgpKTsKICAgICB9CiAKICAgICBwdXJnZUludmFsaWRUZXh0VHJhY2tzKHZh
bGlkVGV4dFN0cmVhbXMpOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICBj
YXNlIEdTVF9NRVNTQUdFX0VMRU1FTlQ6CiAgICAgICAgIGlmIChnc3RfaXNfbWlzc2luZ19wbHVn
aW5fbWVzc2FnZShtZXNzYWdlKSkgewogICAgICAgICAgICAgaWYgKGdzdF9pbnN0YWxsX3BsdWdp
bnNfc3VwcG9ydGVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8TWVkaWFQbGF5ZXJSZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IG1pc3NpbmdQbHVnaW5DYWxsYmFjayA9
IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpjcmVhdGUo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1Z2luQ2Fs
bGJhY2spIHsKKyAgICAgICAgICAgICAgICBhdXRvIG1pc3NpbmdQbHVnaW5DYWxsYmFjayA9IE1l
ZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOjpjcmVhdGUoW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh1aW50MzJfdCByZXN1bHQsIE1lZGlhUGxheWVy
UmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJiBtaXNzaW5nUGx1Z2luQ2FsbGJh
Y2spIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgR1NUX0lORk8oImdvdCBtaXNzaW5nIHBsdWdpbmcgaW5zdGFsbGF0aW9uIGNh
bGxiYWNrIGluIGRlc3Ryb3llZCBwbGF5ZXIgd2l0aCByZXN1bHQgJXUiLCByZXN1bHQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMxMywxMCArMTMxMywxMCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hhbmdlUGlwZWxpbmVTdGF0
ZShHU1RfU1RBVEVfUkVBRFkpOwogICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hhbmdl
UGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5DYWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVn
aW5DYWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tzLmFw
cGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IGRldGFpbChnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfaW5z
dGFsbGVyX2RldGFpbChtZXNzYWdlKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBkZXNjcmlwdGlvbihnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24o
bWVzc2FnZSkpOwotICAgICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5n
Ojpmcm9tVVRGOChkZXNjcmlwdGlvbi5nZXQoKSksICptaXNzaW5nUGx1Z2luQ2FsbGJhY2spOwor
ICAgICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKFN0cmluZzo6ZnJvbVVURjgoZGV0YWlsLmdldCgpKSwgU3RyaW5nOjpmcm9tVVRGOChk
ZXNjcmlwdGlvbi5nZXQoKSksIG1pc3NpbmdQbHVnaW5DYWxsYmFjay5nZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFN
RVJfTVBFR1RTKQpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnByb2Nlc3NNcGVnVHNTZWN0aW9uKEdzdE1wZWd0c1NlY3Rpb24qIHNlY3Rpb24K
ICAgICAgICAgICAgIGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSogc3RyZWFtID0gc3RhdGljX2Nh
c3Q8Y29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKj4oZ19wdHJfYXJyYXlfaW5kZXgocG10LT5zdHJl
YW1zLCBpKSk7CiAgICAgICAgICAgICBpZiAoc3RyZWFtLT5zdHJlYW1fdHlwZSA9PSAweDA1IHx8
IHN0cmVhbS0+c3RyZWFtX3R5cGUgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIEF0b21pY1N0
cmluZyBwaWQgPSBTdHJpbmc6Om51bWJlcihzdHJlYW0tPnBpZCk7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKKyAgICAgICAg
ICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
Ok1ldGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEYXRhLCBwaWQpOwogCiAgICAgICAg
ICAgICAgICAgLy8gNC43LjEwLjEyLjIgU291cmNpbmcgaW4tYmFuZCB0ZXh0IHRyYWNrcwpAQCAt
MjEzMyw3ICsyMTMzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRO
ZXh0TG9jYXRpb24oKQogICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0
aW9uKTsKICAgICAgICAgY29udmVydFRvSW50ZXJuYWxQcm90b2NvbChuZXdVcmwpOwogCi0gICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG1fdXJsKTsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUobV91cmwpOwogICAgICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmNhblJl
cXVlc3QobmV3VXJsKSkgewogICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCks
ICJOZXcgbWVkaWEgdXJsOiAlcyIsIG5ld1VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
CmluZGV4IDg5N2YyOTIwMjVkZDRhYWMyNjVkZDliZGRmMmI3NzgzODZjYjliNjEuLjM1NjM1MTM0
MmYwYTU1MTk3OTk4ZmU3MTgxYjljOGE1NTNmZGM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg3OCw3ICs4NzgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNjZWxl
cmF0ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24u
c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIAotICAg
IFJlZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRl
SW1hZ2UobV9zYW1wbGUuZ2V0KCkpOworICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1l
cjo6Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRleCAwMjZh
MjA1NzNlYzMyYWRiMmEzYmM4YTY4NjAyM2VhODBhZDgzMTA4Li5kMDkyOTIwYzI2YmQ2MGU5ODNi
ZmExNDM2NmQ1NjM5ZWZmZmNlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNw
cApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlR1N0cmVhbWVyPiBtZWRpYVNhbXBsZSA9IFdlYkNvcmU6
Ok1lZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3ByZXNlbnRh
dGlvblNpemUsIHRyYWNrSWQoKSk7CisgICAgYXV0byBtZWRpYVNhbXBsZSA9IFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCBtX3ByZXNlbnRhdGlv
blNpemUsIHRyYWNrSWQoKSk7CiAKICAgICBHU1RfVFJBQ0UoImFwcGVuZDogdHJhY2tJZD0lcyBQ
VFM9JXMgRFRTPSVzIERVUj0lcyBwcmVzZW50YXRpb25TaXplPSUuMGZ4JS4wZiIsCiAgICAgICAg
IG1lZGlhU2FtcGxlLT50cmFja0lEKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKQEAgLTQ1Niw3
ICs0NTYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAgICAgbWVkaWFTYW1wbGUtPmFwcGx5UHRzT2Zmc2V0
KE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CiAgICAgfQogCi0gICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5kaWRSZWNlaXZlU2FtcGxlKCptZWRpYVNhbXBsZSk7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5kaWRSZWNlaXZlU2FtcGxlKG1lZGlhU2FtcGxlLmdldCgpKTsKIH0KIAogdm9pZCBB
cHBlbmRQaXBlbGluZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCmluZGV4IDdj
YmY1NGViM2MzNWVhMTM5YzBlNzA2MjlkZjhkYWJkYjU0NWQwN2UuLjZlNGI2NGZiNDIwMGJiMDkw
YzA1NTg3N2JjOTZiNTEyZDU1MWY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwCkBAIC00NCw5ICs0NCw2IEBAIGJvb2wgSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5z
aWduZWQmIG9mZnNlCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBhdXRvIHN5c3RlbUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAg
ICBpZiAoIXN5c3RlbUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0g
MTY7CiAKICAgICBtX3N5c3RlbUlELnJlc2l6ZSgxNik7CkBAIC02Myw4ICs2MCw2IEBAIGJvb2wg
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZShEYXRhVmlldyYgdmll
dywgdW5zaWduZWQmIG9mZnNlCiAgICAgICAgICAgICBhdXRvJiBjdXJyZW50S2V5SUQgPSBtX2tl
eUlEc1trZXlJRF07CiAgICAgICAgICAgICBjdXJyZW50S2V5SUQucmVzaXplKDE2KTsKICAgICAg
ICAgICAgIGF1dG8gcGFyc2VkS2V5SUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsg
MTYpOwotICAgICAgICAgICAgaWYgKCFwYXJzZWRLZXlJRCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBvZmZzZXQgKz0gMTY7CiAgICAgICAgICAgICBtZW1jcHko
Y3VycmVudEtleUlELmRhdGEoKSwgcGFyc2VkS2V5SUQtPmRhdGEoKSwgMTYpOwogICAgICAgICB9
CkBAIC03Niw5ICs3MSw2IEBAIGJvb2wgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNlCiAgICAgaWYgKGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0IDwgZGF0YVNpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHBhcnNlZERhdGEgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsg
ZGF0YVNpemUpOwotICAgIGlmICghcGFyc2VkRGF0YSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgb2Zmc2V0ICs9IGRhdGFTaXplOwogCiAgICAgbV9kYXRhLnJlc2l6ZShkYXRhU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJh
Y2tFbmNyeXB0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCmluZGV4IDU3YTU2OTRkNWVhZTEzOWVlZDI4NTk1
YTEzMjMwNmJjNWM3NWEwNGYuLjJjOTRmNGQzY2MxYjc2MTc1ZDkyMzg4NjI2ZjE4MGI5Y2I4MDIx
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09U
cmFja0VuY3J5cHRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwCkBAIC02NCw5ICs2NCw2IEBAIGJvb2wg
SVNPVHJhY2tFbmNyeXB0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9m
ZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBrZXlJREJ1ZmZlciA9IGJ1
ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFrZXlJREJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9kZWZh
dWx0S0lELnJlc2l6ZSgxNik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKaW5k
ZXggNjY3ZjIzMDE3MjM1OTE0NjMxN2ZjODYxYTI3ZWM4NDA2YmUwNzQxZi4uMDFhMjc0MjQzOWMy
MjdmMjIyYjhjZWIyY2E2MGEzMWZjOTRmZjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5p
bWF0aW9uLmNwcApAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyBGaWx0ZXJPcGVyYXRpb25zIGFw
cGx5RmlsdGVyQW5pbWF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNvbnN0CiAg
ICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFw
cGVuZChibGVuZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVu
dGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09w
ID8gdG9PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlk
ZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZy
b21PcCA/IGZyb21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApp
bmRleCBjNjZlNDYzNjIwMDI4NjUwYjQ1YzUwNjExYmIyNmRjNDQyZTI3YzhmLi44Y2M1OGQ2MWQ5
YjUwMzc5N2YwNzI3MjVlMGM2ZDc4M2RlNWQxZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmYKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
Qml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpn
ZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CisgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVy
ZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRl
cm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wmPigqdGV4dHVyZSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90
ZXh0dXJlSUQpOworICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0
KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0
ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0
aW9ucy5jcHAKaW5kZXggZjk0NGYwN2E1OGUyYWRkZGIyZGExOTI1YTM1M2Y3M2JlNDRlMjgyZi4u
YjE0NTJmZTJiNjY3YmRlZjMxYThiYzljZTMxZjRlNmQyZWM3YjM4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCkBAIC04NywxMSArODcsMTEgQEAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNv
bnN0IFRyYW5zZm8KICAgICAgICAgaWYgKGJsZW5kZWRPcGVyYXRpb24pCiAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3BlcmF0aW9uKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVudGl0eU9wZXJh
dGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAg
IGF1dG8gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IGlk
ZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFw
cGVuZCh0b09wZXJhdGlvbiA/IHRvT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9wZXJhdGlv
bikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25z
KCkuYXBwZW5kKGZyb21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uIDogaWRlbnRpdHlPcGVyYXRp
b24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcGVy
YXRpb24gPyBmcm9tT3BlcmF0aW9uIDogV1RGTW92ZShpZGVudGl0eU9wZXJhdGlvbikpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDg2MGRhMzg2
MzhlZjUyYTkwZWQxZmQ4OWI1MmRlZTk2NTQzMDE1M2MuLjA2YzBhMTlmMzBkMzlkMTkxOWQyYjRj
ZmQ0MWQ0NDdlYzA1NDIxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xNDQs
OCArMTQ0LDggQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJ
bmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gQ29weSBvdXQgUE5HIGRhdGEgdG8gYSBzZXBhcmF0
ZSB2ZWN0b3IgYW5kIHNlbmQgdG8gdGhlIFBORyBkZWNvZGVyLgogICAgIC8vIEZJWE1FOiBTYXZl
IHRoaXMgY29weSBieSBtYWtpbmcgdGhlIFBORyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgogICAg
IC8vIG9wdGlvbmFsIG9mZnNldC4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbmdEYXRhKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0
XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0KSk7Ci0gICAgbV9wbmdE
ZWNvZGVyc1tpbmRleF0tPnNldERhdGEoKnBuZ0RhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwor
ICAgIGF1dG8gcG5nRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZtX2RhdGEtPmRhdGEoKVtk
aXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBkaXJFbnRyeS5tX2ltYWdl
T2Zmc2V0KTsKKyAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YShwbmdEYXRhLmdldCgp
LCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAogdm9pZCBJQ09JbWFnZURlY29kZXI6OmRlY29k
ZShzaXplX3QgaW5kZXgsIGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5j
cHAKaW5kZXggZTU0YmEzNzZkYTYxNjY0NTdjMjMyODk3MTgxNGNmZjM4NWZhNmUxOC4uMTAwOTEy
YjMyOTMzM2ZjM2ViYzMzYzUxN2JiMmQ0NzM3NmI4ZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCkBAIC05NywxMSAr
OTcsMTEgQEAgTW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJy
YXlCdWZmZXIqIGRhdGEpCiAgICAgc2l6ZV90IG9mZnNldCA9IDE2OwogCiAgICAgd2hpbGUgKG9m
ZnNldCA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc3ViQnVmZmVy
ID0gZGF0YS0+c2xpY2Uob2Zmc2V0KTsKLSAgICAgICAgaWYgKE1vY2tCb3g6OnBlZWtUeXBlKHN1
YkJ1ZmZlci5nZXQoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCisgICAgICAgIGF1dG8gc3Vi
QnVmZmVyID0gZGF0YS0+c2xpY2Uob2Zmc2V0KTsKKyAgICAgICAgaWYgKE1vY2tCb3g6OnBlZWtU
eXBlKHN1YkJ1ZmZlci5wdHIoKSkgIT0gTW9ja1RyYWNrQm94Ojp0eXBlKCkpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLmdldCgp
KTsKKyAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5wdHIoKSk7CiAgICAg
ICAgIG9mZnNldCArPSB0cmFja0JveC5sZW5ndGgoKTsKICAgICAgICAgbV90cmFja3MuYXBwZW5k
KHRyYWNrQm94KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
CmluZGV4IDJhOGIyNGJkMmY5MjFlMWMxZjM1MDAyMjI3N2E4MzM4N2VjMzdhZmUuLjQyNTg4OTdi
ZTZiZTM5MTFlNjBiZWRhYzEwMWYzM2UwOTliY2QxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgUmVmPE1lZGlhU2FtcGxlPiBN
b2NrTWVkaWFTYW1wbGU6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKIAogY2xhc3Mg
TW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja01lZGlhRGVz
Y3JpcHRpb24oYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tNZWRpYURlc2NyaXB0aW9uPiBj
cmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9j
a01lZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFEZXNjcmlw
dGlvbigpID0gZGVmYXVsdDsKIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYm94LmNvZGVjKCk7IH0KQEAgLTExOCw5ICsxMTgsOSBAQCBjbGFzcyBN
b2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKICAg
ICBNb2NrVHJhY2tCb3ggbV9ib3g7CiB9OwogCi1SZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU+IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0
ZSogcGFyZW50KQorUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVudCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVudCkpOwog
fQogCiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoTW9j
a01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQpAQCAtMTQyLDE3ICsxNDIsMTcgQEAgdm9pZCBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRh
dGEpCiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IHJlc3VsdCA9
IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZDsKIAogICAgIHdoaWxl
IChtX2lucHV0QnVmZmVyLnNpemUoKSAmJiByZXN1bHQgPT0gU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6QXBwZW5kU3VjY2VlZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1
ZmZlci5zaXplKCkpOwotICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xl
bmd0aChidWZmZXIuZ2V0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsK
ICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZm
ZXIuZ2V0KCkpOworICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBlZWtUeXBlKGJ1ZmZl
ci5wdHIoKSk7CiAgICAgICAgIGlmICh0eXBlID09IE1vY2tJbml0aWFsaXphdGlvbkJveDo6dHlw
ZSgpKSB7Ci0gICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJ
bml0aWFsaXphdGlvbkJveChidWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgTW9ja0luaXRpYWxp
emF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLnB0cigpKTsK
ICAgICAgICAgICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoaW5pdEJveCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBNb2NrU2FtcGxlQm94Ojp0eXBlKCkpIHsKLSAgICAg
ICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIuZ2V0
KCkpOworICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlU2FtcGxlKHNhbXBsZUJveCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6UGFyc2luZ0ZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUu
aAppbmRleCBiM2Y4YWY0MmEyZjQyYWViOWVkZWNlNmFiMzNiNWU4N2E1MjcyNTI5Li4xNTc2MDA1
M2NiZjBmMDUyOTQzMzhjNDdmMjYxMTUyM2JhOTgyNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
OwogCiBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBTb3VyY2VC
dWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOworICAgIHN0YXRpYyBS
ZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRl
Kik7CiAgICAgdmlydHVhbCB+TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZvaWQg
Y2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgK
aW5kZXggYjQ2Y2E2YjYwMTFiMDIyOTBkNmI4MzBmYmUwYjYwM2ZkMmRiYWQwYy4uZjRjMDA5MjI5
NDg4MWE0ZmFlZjFjMGRmNzUyMDgzNGM2OWUyMjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKQEAgLTUzLDcgKzUz
LDcgQEAgY2xhc3MgTW9ja0F1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIEF1ZGlvVHJhY2tQcml2
YXRlIHsKIAogY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVGV4dFRyYWNrUHJp
dmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgTW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tUZXh0
VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTW9ja1RleHRUcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5N
b2NrVGV4dFRyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBN
b2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIAog
Y2xhc3MgTW9ja1ZpZGVvVHJhY2tQcml2YXRlIDogcHVibGljIFZpZGVvVHJhY2tQcml2YXRlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tWaWRlb1RyYWNrUHJpdmF0ZT4gY3JlYXRl
KGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1ZpZGVv
VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVmlkZW9UcmFja1ByaXZh
dGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KICAgICB2aXJ0dWFsIH5Nb2NrVmlkZW9U
cmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAppbmRleCBkN2MxZTVmYWEwZGU1MDc4M2JmYjQ3NzI0YmY1OTkxOWFiNjZmOTFk
Li5jNDlmNDIxNzgxMjBhNGMzZDJiNGQzMDI2ODRiMmQ4M2FmMWY0NmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9p
ZCBGb3JtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgogUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0
ZSgpOworICAgIGF1dG8gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS0+bV9hbHdheXNTdHJlYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTMxOSw3ICszMTksNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1faWRlbnRp
ZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRhdGE7CisgICAg
cmV0dXJuIFdURk1vdmUoZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFn
ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5oCmluZGV4IDYyNGNjYzVlMTI4MDcxZDc0MTdiOGQxNmU0ZTg1NGZk
NzUzYWVlNjkuLjhlNzczM2M1N2FkNTBkMWVlNjY0NWJkY2I5YTMyMzhjY2RkN2RlNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFn
ZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvb2tpZVN0b3JhZ2VPYnNlcnZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7
CisgICAgc3RhdGljIFJlZjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29r
aWVTdG9yYWdlICopOwogICAgIENvb2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9y
YWdlICopOwogICAgIH5Db29raWVTdG9yYWdlT2JzZXJ2ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VP
YnNlcnZlci5tbQppbmRleCA5MTgxNzFjNmIwNzA3YWEwODAwZTliOGRmMjk0YjQxZTFjZjc4OWQw
Li41ZDI1YWUxMGQyZjFhYmE3MzgzYjcwMzYyMTZlMzc3OTE2NzJlNDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0
b3JhZ2VPYnNlcnZlci5tbQpAQCAtNzQsOSArNzQsOSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2Vy
dmVyOjpjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKK1JlZjxDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENv
b2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CiB9CiAKIENvb2tp
ZVN0b3JhZ2VPYnNlcnZlcjo6Q29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKmNvb2tpZVN0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggYWE5NTczN2Jl
NzlhYmQxNGYxOWJhMjFiOTIyY2NiMTAxNjUwYzQ4OC4uMGY2ZWExOTc4N2E0NmM3NDc0YjQxNjQ4
ZjI0NTg0OTU3YjAwZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJv
ZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlv
blRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBibG9iSXRl
bS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CisgICAgICAgIGlmIChh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJ
dGVtLmZpbGUoKS0+cGF0aCgpKSkgewogICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlKSBjb25zdAogICAgICAgICAgICAgICAgIGJvZHlTaXplICs9IGJ5dGVzLnNpemUoKTsKICAg
ICAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVl
c3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUo
KSk7CiAgICAgICAgICAgICB9LCBbJl0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZp
bGVEYXRhJiBmaWxlRGF0YSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxl
RGF0YS5maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxlRGF0YS5maWxlbmFtZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlw
aGVuLmNwcAppbmRleCBjOTA4NjkzMDE2MTg1NThiNjBlMWYzMDQ4MThkYmRkOWU1MWRiYzEyLi4y
ZDdiNjZkOTM3OTA1ZGNjMjJmNGExM2U5NWEwYWYwNmJiNDhiN2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJI
eXBoZW4uY3BwCkBAIC0xNjksMTQgKzE2OSwxNCBAQCBjbGFzcyBIeXBoZW5hdGlvbkRpY3Rpb25h
cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IHsKIAogICAgIHZp
cnR1YWwgfkh5cGhlbmF0aW9uRGljdGlvbmFyeSgpID0gZGVmYXVsdDsKIAotICAgIHN0YXRpYyBS
ZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKKyAgICBzdGF0aWMgUmVm
PEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVsbCgpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYg
ZGljdFBhdGgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShj
b25zdCBDU3RyaW5nJiBkaWN0UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOwogICAgIH0KIAogICAg
IEh5cGhlbkRpY3QqIGxpYmh5cGhlbkRpY3Rpb25hcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBhYzdjYjY2
N2JjZThhMjcxOGJhYzdkZjE2ZTZiYzQ5MThkNDNkYjc2Li44ZTc0YjA3NjkzNWFhMGRjY2Q3ZWE4
MzdhY2U2N2IzY2U3Y2UxNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNlYXJjaFBvcHVwTWVudVdpbjo6U2VhcmNoUG9wdXBNZW51V2luKFBvcHVw
TWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51
V2luKGNsaWVudCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudVdpbihj
bGllbnQpKSkKIHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVXaW46OnBvcHVwTWVu
dSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRy
KCk7CiB9CiAKIGJvb2wgU2VhcmNoUG9wdXBNZW51V2luOjplbmFibGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAppbmRleCBlNTA2MGI4
YWI5YjlmZWFmMzViZmI4YjM3YjE5YTNjZDE5NTY1MTFlLi45YTdhZTg4MjNjNWM0M2ZmOTQ2YTYx
NTdhZmM1N2I1OWRjMTU0M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudVdpbi5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNlYXJjaFBvcHVw
TWVudVdpbiA6IHB1YmxpYyBTZWFyY2hQb3B1cE1lbnUgewogICAgIHZpcnR1YWwgYm9vbCBlbmFi
bGVkKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKKyAg
ICBSZWY8UG9wdXBNZW51V2luPiBtX3BvcHVwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDUyYjRkNzQ1Yjk5NzMzYWM2YWYwYjViNzJj
MzYwYjZiMmQ0YjBhOWIuLmVlMWUyMjY4MzFjZjY0OTdjMDRkZjNiNTA3N2FkNzU3OTg4NWU4ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTU2Miw3
ICs1NjIsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhS
ZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlckJveCYgYm94KQogc3RhdGljIHZvaWQgYXBwbHlDb21t
b25CdXR0b25QYWRkaW5nVG9TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgp
OwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKKyAgICBhdXRvIGVt
U2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0VNUyk7CiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBkb2N1bWVudC5yZW5kZXJTdHlsZSgpLCBk
b2N1bWVudC5yZW5kZXJWaWV3KCksIGRvY3VtZW50LmZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkp
KTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVs
cykpOwogfQpAQCAtOTE3LDEyICs5MTcsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAg
ICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0Owot
ICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdy
YWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOworICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAg
IHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigweDhkLCAweDhkLCAweDhk
KSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigweGVlLCAw
eGVlLCAweGVlKSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBDb2xv
cigweGVlLCAweGVlLCAweGVlKSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgx
LjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKLSAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRp
ZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0U3Ry
b2tlR3JhZGllbnQoV1RGTW92ZShzdHJva2VHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSkpOwogCkBAIC05MzcsMTAgKzkzNywxMCBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3Vu
ZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVz
KSk7CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0ID0gcHJvZ3Jlc3NCYXJIZWlnaHQg
LyAyLjsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3Jl
YXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxS
ZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9KTsKKyAgICBhdXRv
IHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsg
RmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRp
ZW50SGVpZ2h0IC0gMS41KSB9KTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4w
LCBDb2xvcigxMzMsIDEzMywgMTMzLCAxODgpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMS4wLCBDb2xvcigxOCwgMTgsIDE4LCA1MSkpOwotICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4dC5zZXRG
aWxsR3JhZGllbnQoV1RGTW92ZSh1cHBlckdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0LmZpbGxS
ZWN0KEZsb2F0UmVjdChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwgcmVjdC53
aWR0aCgpLCB1cHBlckdyYWRpZW50SGVpZ2h0KSk7CiAKQEAgLTk0OSwyMCArOTQ5LDIwIEBAIGJv
b2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIC8vIDIpIERyYXcgdGhlIHByb2dyZXNzIGJh
ci4KICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gY2xhbXBUbyhyZW5kZXJQcm9ncmVzcy5wb3Np
dGlvbigpLCAwLjAsIDEuMCk7CiAgICAgICAgIGRvdWJsZSBiYXJXaWR0aCA9IHBvc2l0aW9uICog
cmVjdC53aWR0aCgpOwotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhckdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAg
ICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
MC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHBy
b2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC4wLCBDb2xvcigxOTUsIDIxNywgMjQ3KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC40NSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwogICAgICAgICBiYXJHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDAuNDksIENvbG9yKDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFy
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUxLCBDb2xvcigzNiwgMTE0LCAyMTApKTsKICAgICAg
ICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBDb2xvcigzNiwgMTE0LCAyMTApKTsK
ICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDU3LCAxNDIsIDI0
NCkpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShiYXJH
cmFkaWVudCkpOwogCi0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyU3Ryb2tlR3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOworICAg
ICAgICBhdXRvIGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6
TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJv
Z3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDk1LCAxMDcsIDE4MykpOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKICAgICAg
ICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQsIDE2
NikpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdU
Rk1vdmUoYmFyU3Ryb2tlR3JhZGllbnQpKTsKIAogICAgICAgICBQYXRoIGJhclBhdGg7CiAgICAg
ICAgIGludCBsZWZ0ID0gcmVjdC54KCk7CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2b2lkIFJlbmRl
clRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUmIHN0eQogICAgIC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50
IG9ubHkgbmVlZHMgdGhlIGVsZW1lbnQncyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4K
ICAgICAvLyBTaW5jZSB0aGUgZWxlbWVudCBtaWdodCBub3QgYmUgaW4gYSBkb2N1bWVudCwganVz
dCBwYXNzIG51bGxwdHIgZm9yIHRoZSByb290IGVsZW1lbnQgc3R5bGUKICAgICAvLyBhbmQgdGhl
IHJlbmRlciB2aWV3LgotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsK
KyAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxs
cHRyLCAxLjAsIGZhbHNlKSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwg
cGl4ZWxzLCAwLCBwaXhlbHMpKTsKIApAQCAtMTc0MywxMSArMTc0Myw4IEBAIHN0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRh
Y2htZW50SW5mbyYKICAgICBpZiAoIWluZm8uaWNvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEltYWdlPiBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24g
Q0dJbWFnZV0pOwotICAgIGlmICghaWNvbkltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKKyAgICBhdXRvIGlj
b25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAg
Y29udGV4dC5kcmF3SW1hZ2UoaWNvbkltYWdlLmdldCgpLCBpbmZvLmljb25SZWN0KTsKIH0KIAog
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZmFiYzhiMmFiOGJmZmEx
OWYzZWFiZGU0YzA2YTk5ZGZiZmUzNjk0Yy4uMTU1NzQ0ZDNmZGRiNzA0NDEzYjdhMDY5Y2FmNTZi
ZTM1ODRkYzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MjMsOCArNDIzLDggQEAgdm9pZCB3cml0ZVNWR1Jl
c291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRpbmcgYSBwbGFj
ZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgogICAgICAgICBG
bG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBSZWZQdHI8U1ZHRmlsdGVyPiBkdW1teUZpbHRl
ciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKLSAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRl
ci5idWlsZFByaW1pdGl2ZXMoKmR1bW15RmlsdGVyKSkgeworICAgICAgICBhdXRvIGR1bW15Rmls
dGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBpZiAoYXV0byBidWlsZGVyID0gZmls
dGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsKICAgICAgICAgICAgIFRl
eHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIAogICAgICAgICAgICAgaWYg
KEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGJ1aWxkZXItPmxhc3RFZmZlY3QoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDU2ODcyMzg4OTI3OGVjN2FiMjQ0YjVjOTVhNGY2
YjVlZDI1ZGZmNzYuLmMyNjlhODU1OTQ2YmVlYmQ2YTBiZWQ5MWE4YWFiOTA5MjA0YjJkZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMzcsMTcgKzM3LDE2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPFN0b3JhZ2U+IFN0b3JhZ2U6OmNyZWF0ZShET01XaW5kb3cm
IHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorUmVmPFN0b3JhZ2U+
IFN0b3JhZ2U6OmNyZWF0ZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0
b3JhZ2VBcmVhKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2Uod2luZG93LCBX
VEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOwogfQogCi1TdG9yYWdlOjpTdG9yYWdlKERPTVdpbmRvdyYg
d2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitTdG9yYWdlOjpTdG9y
YWdlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiAg
ICAgOiBET01XaW5kb3dQcm9wZXJ0eSgmd2luZG93KQogICAgICwgbV9zdG9yYWdlQXJlYShXVEZN
b3ZlKHN0b3JhZ2VBcmVhKSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7Ci0gICAgQVNTRVJUKG1f
c3RvcmFnZUFyZWEpOwogCiAgICAgbV9zdG9yYWdlQXJlYS0+aW5jcmVtZW50QWNjZXNzQ291bnQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKaW5kZXggODM2NmJiYzFiNTljNzlmOWU3NTdk
ZTNhMTNmNzUwYTFjYjM3ODIwMS4uOTgzZTg1YTYyYTg2NGM3YTcwZGYxN2QzYWE1MDJmMjVmN2Rj
OWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
U3RvcmFnZUFyZWE7CiAKIGNsYXNzIFN0b3JhZ2UgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWZQdHI8
U3RvcmFnZUFyZWE+JiYpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAgICAgflN0b3JhZ2UoKTsKIAogICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwpAQCAtNTAsMTIgKzUwLDEyIEBAIGNsYXNzIFN0b3JhZ2UgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlPiwgcHVibGljIERP
TVdpCiAgICAgYm9vbCBpc1N1cHBvcnRlZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29u
c3Q7CiAKLSAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJuICptX3N0b3JhZ2VB
cmVhOyB9CisgICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VB
cmVhLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWZQdHI8
U3RvcmFnZUFyZWE+JiYpOworICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVh
PiYmKTsKIAotICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKKyAg
ICBjb25zdCBSZWY8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmlu
ZGV4IDQwOWE0MzNlMWQ1YzFmNmUyZDdkMThhMTE5NzZkOWJiMmZmYzI1MmEuLjU1YzY2MjgyYjhi
ZDY4YmMwNDc4MmRmNDdjYWRlZDBjMjEyOTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zNyw4ICszNyw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdp
bkRhdGE7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFn
ZU5hbWVzcGFjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSA9
IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOworICAg
IHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDY5YzFiMzM1MzA4YmJmY2Q5
N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYuLjU5MzlhZmZkM2ViMmY4ZWVkNDZiZjYyYmFiNGIxNWFl
YjVlOTVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OnJlbW92ZVBhZ2UoUGFnZSYgcGFnZSkKICAgICBtX3BhZ2VzLnJlbW92ZSgmcGFn
ZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjps
b2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZjxTdG9yYWdlQXJlYT4gU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICAvLyBUaGlzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB3YXMgcmV0cmlldmVk
IGZyb20gdGhlIERvY3VtZW50J3MgUGFnZSwKICAgICAvLyBzbyB0aGUgRG9jdW1lbnQgaGFkIGJl
dHRlciBzdGlsbCBhY3R1YWxseSBoYXZlIGEgUGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDE5MTZjY2IyMjdlZDkxZjVm
ZjkyNjQyNGYwMDY5ODI5NjJiMWE3NmYuLmRkN2Y5YTQ2YmQ4NDc5MjQ5Yzc0ZDJhNGMyMjQ1Mjk2
NGU2N2FlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCi0gICAgdmly
dHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1
bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKIAotICAgIFJlZlB0cjxT
dG9yYWdlQXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOworICAgIFJlZjxTdG9yYWdl
QXJlYT4gbG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYpOwogCiAgICAgdm9pZCBhZGRQYWdlKFBh
Z2UmKTsKICAgICB2b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwpAQCAtNTksOCArNTksOCBAQCBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI+IHsKICAgICBTdG9yYWdlTmFtZXNwYWNlJiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoKTsKICAgICBTdG9yYWdlTmFtZXNwYWNlJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoU2VjdXJpdHlPcmlnaW4mKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEpID0gMDsKIAogICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAwMjViOTZiYmNiNDQ0ODYxMWM3MzQ1YjBjZGZj
N2ExMGQ5NmNlNTA2Li44NWY2ZmYxMmYzODU1ZTcyZjM1MTVjZjMyN2I1MzliNWYzZDAyM2IzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBSZWZQdHI8
RGVwcmVjYXRlZENTU09NVmFsdWU+IFNWR0VsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOworICAgIGF1dG8gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUo
YXR0cmlidXRlLT5uYW1lKCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBh
dHRyaWJ1dGUtPnZhbHVlKCkpOwogICAgIGF1dG8gY3NzVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCmluZGV4IDhjNjZkMmMyMjE2MGM0MmVlZDY0MDI5YzI3YTJjYjY0OTFkMWE1NmIuLmMy
NDFlMzBlMzllNjUwOGEyOWI3NTRjODc4NmE5ZDhmODBlM2FjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsZGVyLCBGCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpj
cmVhdGUoZmlsdGVyLCBtb2RlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRl
KGZpbHRlciwgbW9kZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0
eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNh
N2JiNGY1OGZkYWI4MjViZjYxYzk3Yjc5Li43NTEzYWNlNTE3OTBmODZkOGU5Y2Y4ZTBjODE2NDYy
OTA3MjMzOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmls
dGVyVmFsdWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0
ZXIsIGZpbHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggNTdm
YWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4uNTJiZTk3MTJiYzVmNjFhYjQ3
ZTIyNjgwMDBmMmIxOTY4MGY2Njk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVu
Y0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KICAgICAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
ZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4g
ZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cAppbmRleCBhMTBlM2E3MjFjZmVhYmQ0NzIyYWEwOTdiMWRjZjg3ZTJjMjVmOWE3Li5kMzg1NTc0
NzdjMTY4OWIyMThhYmRjOWYwYTkxNjNmMTQ5NWNiYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBv
c2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQo
KSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3Bl
cmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9y
JiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0
cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0Li4wNjdmMTJj
YjcwMzk4MmM3ZWQxNDI4NGYwNGM2MGQzN2M3ZTFkOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5LDcgKzE4OSw3
IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVy
LT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2
Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNj
YWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0
TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURp
ZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZm
dXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwg
V1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1ZmM3MDFkZjYwN2Nm
MGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMTRmNzdmOWY2Zjg4MTMxOTY0YmI0MmVhMjk1ZDkx
MzdlNjljZGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlcgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBz
Y2FsZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmls
dGVyLCB4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAg
ICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0
cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZl
Y3RzLmFwcGVuZChpbnB1dDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuY3BwCmluZGV4IDU1MGY2NWUyNzQzY2YxZWQ2YTY0NDNmOTUxZWNmNGJiOGVmOGM1
OWIuLmQ1NGU1ZjJiNjg1ZTk5MzU3OWFmOTUxOTM3NzY1ZmEzNGVhM2IxZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGlmICghaW5wdXQxKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRHJv
cFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCks
IGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRHJvcFNo
YWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGR4
KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFw
cGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0ZmVm
N2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjMyMGY5MjFmZTBhZmJlZTI4MmY0ZGY3ODc3M2RlYmNj
Nzg4MTJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkKICAg
ICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
R2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlv
blkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3Jl
YXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkp
OwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJu
IGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4
IDUwMmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmZiOTJhMzVlOGQ0NDAz
NzhjMjBjMGM2MjU4NWM3YjVlYTk4NGQwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVy
Z2VFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNW
R0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAog
CiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBl
ZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3Im
IG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYg
bWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRl
eCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5OWQ4YjBiNmZjLi5lM2U4MWFmZTFhZjdm
MTI2ZTRkOWIwN2U4MDM5YzJlOGFiOGQ4NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAgfHwgeVJhZGl1cyA8IDApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVN
b3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVz
KTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9neTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3Bl
cmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3
MDQxYWFkYmQwMjIyLi5jNDAyZTQwM2ViMmI5NDQzOTg4YzhiMGVhOTQ5YjM3ZmQwMjRlYWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTIsNyArOTIs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZz
ZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZz
ZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAzYTJm
NGQyM2Y5NzNkNTdiMWNkYzY5ZGRlMjE3NzM3ODczZDBjZmU3Li45ZTRkN2ZkNDI3ZmNiMWQwYzFi
YmNlYTQzNDVkNWViZTk1ZGNlNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGUKICAgICAKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHls
ZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxl
KCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgp
LCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0
aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOworICAgIGF1
dG8gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1
cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4
IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMyNjNiN2ZlMDA2MjU0ODkyNDQuLmFlMGQxOTE5ODA1N2I4
ZjI0MjJmMWJiZmM1MTgwZjUzZDBlYTU0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVU
aWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAg
ICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZm
ZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
LmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4IDg2ZDk1OGY1NzYwNTFiODA3ZTA1MWMxNWFlYTBiYTY1
MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgwNDc1ZTNkZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NPYnNlcnZhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdDT2JzZXJ2YXRpb24+IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPEdDT2JzZXJ2YXRp
b24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKICAgICB9CiAKICAgICBib29sIHdhc0NvbGxlY3RlZCgpIGNvbnN0IHsgcmV0
dXJuICFtX29ic2VydmVkVmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApp
bmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2YTRlY2Y4ZjQzNWZkZjJjM2I4NDVmLi45OTAxN2FiZWI1
OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIwMTdjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29y
OjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcKICAg
ICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3VsdC5jb3B5UmVmKCkpOwogICAgIH0KIAotICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5cGUpOwogICAgIGRlY29kZXItPnNldEVuY29k
aW5nKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29k
aW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1M
SGVhZGVyKTsKICAgICByZXN1bHQtPnNldERlY29kZXIoV1RGTW92ZShkZWNvZGVyKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXgg
MWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3NWUwZjQ5MGJhYTYwODg1Zi4uYjQyNTBhMDJjZWJmOTBl
MmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFhNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywg
RG9jdW1lbnRGcmFnbQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8
WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJh
Z21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBhdXRvIHBh
cnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50
LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBib29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFw
cGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsKICAgICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4g
VGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGltcGxlbWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBk
b2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4gY2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQg
Y2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgpOyAvLyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRv
IGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVmb3JlIGRlc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3OGQwYmE1YzliOWNlZGI3Zi4uMzY2Yjk4M2NjMGJlYTU4
Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgSVBDOjpDb25uZWN0aW9uKiBjdXJyZW50
Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcikKK1JlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVj
dGlvbklkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzIxYTA4Mzg2OTM4NmM0ZmJmNWYyOGQwN2Vk
MmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3OWUzMzE3ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYyY2EzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsK
IAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVh
dGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNz
Q29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQppbmRleCBiOWZjODk1MGZhMzNjYTU2Zjlh
NjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5jNzY0OTZiNzMxMjQ2N2MzNjYwNjJmYWVlYzQ3NzI2OWUz
YWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsxMDMsOCBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8
V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRo
TmFtZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSBib2R5OihpZCltZXNzYWdlQm9keQogewotICAg
IFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaD4gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6
T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOwotICAgIHNlbGYuX2Nvbm5lY3Rp
b24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIGF1
dG8gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2Fn
ZUJvZHkpOworICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdr
TWVzc2FnZUJvZHkucHRyKCkpOwogfQogCiAtIChXZWJLaXQ6OldlYkNvbm5lY3Rpb24mKV9jb25u
ZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBiOWJlZDFkZTk0ZWY3MTc2YzNmZWJkYWNjMTdlNGRjNGUxZGVhYTdmLi5kMTRiZDlk
MmI3ZWIzMmIzZTE4ZGZlZjMyZDA0MzVjOTIzZGI3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExMzQsNyArMTEzNCw3IEBAIC0g
KHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0
aW9uICopc25hcHNob3RDb25maWd1CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNn
SW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkgOiBudWxscHRyOwogICAgICAg
ICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBzaXplOk5TTWFrZVNpemUoc25hcHNob3RXaWR0
aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAgICAgIGhhbmRsZXIobnNJbWFnZS5nZXQoKSwgbmlsKTsK
QEAgLTIwNjMsOCArMjA2Myw4IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rh
a2VWaWV3U25hcHNob3QKICNpZiBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKICAgICBXZWJD
b3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVzc2VkRm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJm
YWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAoV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0Nv
bnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25hcHNob3RGb3JtYXQsIGNvbXByZXNzZWRGb3Jt
YXQpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gdmlld1NuYXBzaG90
ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRyKTsKLSAgICAgICAgV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgeworICAgICAgICBhdXRvIHZp
ZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAg
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSks
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3QgPSB2aWV3
U25hcHNob3QuY29weVJlZigpXShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBj
b252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAgICAgICAgICBpZiAoY29udmVydGVkU3VyZmFjZSkKICAg
ICAgICAgICAgICAgICB2aWV3U25hcHNob3QtPnNldFN1cmZhY2UoV1RGTW92ZShjb252ZXJ0ZWRT
dXJmYWNlKSk7CiAgICAgICAgIH0pOwpAQCAtNTkwMiw3ICs1OTAyLDcgQEAgLSAodm9pZClfc25h
cHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6
KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICghYml0bWFwKSB7CiAgICAgICAgICAgICBjb3Bp
ZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
aW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0Mi4uOTViMDJlODNl
ZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGkKICAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAgICBjb3Jl
UG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVB
Y2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUo
Y29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hh
bmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtX2dl
b2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5wdHIo
KSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5RXJyb3JPY2N1
cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3YWZhNzljNjFl
YmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMzLi5iY2U4MDU4ZTU5ZTYzODcwNDJkY2QyNjhm
YTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCB3
ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVybl9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklD
QVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChob3N0KTsKIAotICAgIFJl
ZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmlj
YXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3Rh
dGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+
cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0
aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOworICAgIGF1dG8gd2Vi
Q2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFn
cz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5mby5wdHIoKSwgU3RyaW5nOjpm
cm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Np
b25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZkY2EwMDU2Y2M2Y2RkZjI3Y2Y2ZDcyZDExNjFk
MS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcxNjU4YzUwZjZiODQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2Nh
aXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBp
ZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDY3ZjEyMjJhNzQ2YzY3MmM2ODdkMmFm
YmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5ZTFlODI4MDRlMTg5MWZkNTQ5OTIwZjhkN2I2
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2Ev
V2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KQEAgLTM5LDcg
KzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRhSGFuZGxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGlt
YWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghYml0bWFwKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUwNmI2Mjc2NTEwYjczNDg1ZmNkNDY2MmVmNDgx
Li41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNlNGFlNTEzMmZiOTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBCYWNr
aW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8p
CiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRhdGVJbmZvLnZpZXdTaXplKTsKICAgICAKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0ZGYxODA0M2QzYjVhNjRiMTBkNGMyZTYzNzQw
ZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2YjU2MGExNjc5NmJhNGJiNGI1YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAg
LTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiBwYQogCiBzdGF0aWMgUmV0YWlu
UHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKFdLV2ViVmlldyAq
d2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgTlNFcnJvciAqb3JpZ2luYWxF
cnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFtZUhhbmRsZT4gZnJhbWVIYW5kbGUgPSBBUEk6
OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOworICAgIGF1dG8g
ZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFt
ZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9h
ZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZp
ZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVIYW5kbGUpIHVybFN0cmluZzpvcmlnaW5hbEVy
cm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7CisgICAg
YXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNv
dmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6
d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlcklu
Zm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1dKTsKIAogICAgIGF1dG8gdXNl
ckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5nZXQoKSwgX1dLUmVjb3ZlcnlBdHRlbXB0ZXJF
cnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKaW5kZXggOWQ3NzQxMGMwOWMx
YjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4uNjRhMzVmN2U4NzlkYjAzZGMwYmY4NzcyMjE0
NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTE3MSw3ICsxNzEsNyBA
QCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmluYWw6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBjbGFzcyBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+LCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYpOworICAg
IHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVBy
b3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KCk7CiAKICAg
ICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCA0YzhmY2Jm
OGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3MDY3Li44Njc3YTA0MWM3MGQxMWI5NzY5OGM0
N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0yOTIsOSAr
MjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBpY3R1cmVJblBpY3R1
cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogCiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQor
UmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOwogfQogCiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShXZWJQYWdl
UHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IGE5Mjk5ZjFiNzQ2OWIwM2Fk
MjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5NjhiMzUyOWUwYzM1NWNkNGRiMWE4OTljMjBl
OGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xh
c3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAKIGNsYXNzIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVBy
b3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CisgICAgc3RhdGljIFJlZjxWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUyMTJmZjM1NjEyNjQyNTZkMTYuLjRjZjMwYmYz
MzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAjcHJhZ21hIG1hcmsgLSBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKK1Jl
ZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkpOwogfQogCiBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdl
UHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzEwZGYxOWM0MjY1OGY2ZjU5Yzdj
MTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5OTZiMWVmOWQ0YzFhOTliMTcwYmY3NjIzZDM2
ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci0gICAgbmV3Q2hhbmdlQ291bnQg
PSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVm
ZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJv
YXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVz
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBudW1iZXJPZkZpbGVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAxNTM2
NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5YTMxM2IyLi5lNDYzYWM5OTRiYjlmOGFhYzQ0
ZmU4MjkzOGJlMTM2MTZiYjA1OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCw3ICs0Mzc0LDcgQEAgUmVmUHRyPFZpZXdTbmFwc2hv
dD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIGlmICghc3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiBzbmFwc2hv
dCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOworICAgIGF1dG8gc25h
cHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKICAgICBzbmFw
c2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKICAgICByZXR1cm4gc25hcHNob3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5ZDgwZGNlZS4uODZkYzA5
YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApAQCAtNDYs
MTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFByb3h5TWFwKCkKIAogRG93
bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9hZFByb3h5
ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1
ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBk
b3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5Ojpj
cmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIG1fZG93bmxv
YWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuY29weVJl
ZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHktPmRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCBkb3dubG9hZFBy
b3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOworICAgIHJldHVy
biBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHlNYXA6OmRvd25s
b2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUwNDMzOWU3ODQ5ZjRkZDM0
NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05NiwxMSAr
OTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0
YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRp
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25J
RCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFs
Tm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBs
YW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
ICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAg
ICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlm
aWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBh
aXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pKTsK
LSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0aW9uKTsKKyAgICBtX25v
dGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFs
Tm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBtX3Byb3ZpZGVy
LT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCiB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMDI1YzljNmNmNTZjZjI1NDM0ODc2ZmRiZDE2NmYxNGMwOGY4MTUzNC4uNDcw
ODgxMDBlZTMxZDA3YTY2ZDdlOTE1OGU0OTk1OGI4ZGY4NTljNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjQ5LDEwICszNjQ5LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogCiAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAgICAKLSAg
ICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUo
KnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVh
dGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2Vz
cyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCAqc3ViRnJh
bWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIHN1YkZyYW1lLmdldCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFt
ZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmYTQzYTNkMWU3ODMwOTJi
YjdjMDIxODE0N2ZkMTY0ZjgyN2IwM2MwLi45ZTNmNDA0YmQ2ZTZhYmIzYWIyNDM5YWJhNzI3YzZi
NWMzOWJlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNz
KHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiByZXF1ZXN0ID0g
U3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0ID0gU3RhdGlzdGljc1Jl
cXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNzUmVxdWVz
dFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MocmVx
dWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhyZXF1ZXN0LmdldCgpKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0
YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdl
YkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8v
IEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtl
IGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlz
dGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0
d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxh
YmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBtX3N0YXRpc3RpY3NSZXF1
ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBy
ZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3RhdGlzdGljc1JlcXVlc3Rz
LnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHJlcXVl
c3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApp
bmRleCAwNjM0MzI0OWJhYTcyNWFmYjZjYjQ0NGM1NTIzMjUzZDE3ZTA4MGJjLi5lNmI0NDRlOTE0
MjdiOTZjYWE4ODQzYWViM2ZhMjI3Y2RkN2I1NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFzcyBXZWJQcm9jZXNzUG9v
bCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nl
c3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0
YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6
SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZvaWQgcmVxdWVzdFdlYkNv
bnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAgdm9pZCByZXF1ZXN0TmV0
d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAgICB2b2lkIHJlcXVlc3RX
ZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOworICAgIHZvaWQgcmVxdWVz
dE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CiAKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1l
ci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0
cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUzZmI2NWMyMzBkYmQ4NGRh
ZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgwNDk4YWZlMTJhMWY5ZWMz
MWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dl
YlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0
cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7Ci0gICAgaWYgKHBhZ2VD
bGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2Ny
aXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4
IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMuLjkyZWFkMDQ1ZThiOGZj
MmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTMs
MTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1fd2ViVmll
dyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0
byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQy
LiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxv
dyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRz
IHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldExvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgUmVmUHRyPFdlYlBh
Z2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdy
b3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVs
bHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgm
aW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKG51bGxwdHIpKSk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAg
ICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNv
bmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJW
aWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMp
OwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV93ZWJWaWV3KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGI2NGUzMzU5
MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0MjM0MTEyZTg1NzliZDg2
MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAg
ICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7
CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5j
ZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBk
ZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdp
dGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAg
ICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7CiAgICAgfSk7Ci0gICAg
UmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5z
cGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAg
YXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJ
ZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZp
Z3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rp
b25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX29iamVjdF9h
ZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2lu
c3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVk
KSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2JhOTg1N2EwYTYxYWQ0OGQ2
YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUxNzNjMmZiNGIxM2IwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZv
clVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIFVSTCByZXF1ZXN0
RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAgICAgICAgICAgIFJldGFp
blB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4uZ2V0KCkpKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVn
YXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZv
clVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBhdXRvIGNoZWNrZXIg
PSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRl
LCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVS
TDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBXS1dlYlZpZXcgKnZpZXdG
cm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAgICAgIFt1aURlbGVnYXRl
IF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9u
Rm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVjaXNpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggMTEyMzVhMTI3
ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEzMS4uOWZlZmZkZGY0MTA0MTJlNzZkMmMwYzNk
ZmQ2N2JmMWUxYmQyYjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVh
YmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7Ci0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VC
dWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvckltYWdlKGltYWdl
LmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBhcmNo
aXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9pbXBsLT5zZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVy
bCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmlu
ZGV4IGNiZmUzMGU5ZTBiZTgzMjE1MTgxOTYzNTVmNzc5ODA4YjgyNGYyZjYuLjM3OThiZmJiNWE5
YzQxNGY2MGZkYzNjYmVhOWM3YzBkYjNlMDIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRl
bmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIFJlZlB0cjxX
ZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CiAj
aWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5z
cGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBz
ZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVl
KTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZlcmVuY2VzLT5z
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNl
dEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlm
aWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBh
Z2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3Bl
Y3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bv
b2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAKICAgICBXS1Bh
Z2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsKICAgICAgICAgeyAwLCB0
aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUwOTAxNzkwMGY0Nzg5NDQ5
ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVkM2I1NDI0YzUzMDZjODQ2
MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUwLDggKzUwLDggQEAgLSAo
aWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAogLSAoaWQpaW5pdFdpdGhE
b2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3Jl
RG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5n
ZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktp
dDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxmID0gW3NlbGYgX2luaXRX
aXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmls
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRl
eCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZmLi44YzI5NWJhZWJmYmEy
ZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXpl
KCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMjFh
MzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUxMjMwMmIyODJlNDFlZDFi
MjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmco
KSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBl
PEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXpl
KCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2NDg5ZDY2M2I4ZDhlLi42
ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdl
KiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0
ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAgICAgV0tU
eXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVy
RWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKG1v
ZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0
VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1
c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggYzZhNTA2
OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEyZDljNjMxMmQyYzBlYTA2
YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNzUxLDcg
Kzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hv
dCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVnaW5TaXplOwogICAgIGJh
Y2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3RvcigpKTsKIAotICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8g
Y29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBv
ZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYzJjYmEw
OTBmYmJkYjJkOWExOTBiMWFmZjhmZTM1NWNkNmZjMzI2NC4uMDE5OWI4NGY4ZjRlMjhmNzY5YTc0
MjE5NTE4ODkxMzFkYzg3NzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBQREZQbHVn
aW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJl
c3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpt
X3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtDRkhUVFBW
ZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBz
eW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBT
dHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1dG8gcmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEu
Z2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmco
KSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBz
aXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3RvciwgLWNvbnRl
bnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2b2lkIFBERlBsdWdpbjo6
d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkg
Kml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGFpblRleHRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRT
dHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVtY3B5KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0NzlhZmMyOWFkZjRhYzg1MmJi
M2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2QwZDNhNmY0NjdlOTQ0ZDJm
MDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC04NCw4ICs4
NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJUEM6OkNvbm5lY3Rpb246
OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nl
c3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAtOTQsNyArOTQsNyBAQCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLnNl
dChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsK
KyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7CiB9CiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXgg
ODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4uOTcwZWExZmU3Y2E5NjQ1
ZGQ5Yzc3N2NjZDVlMzYyYTY2ZGVhZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDggKzI0Nyw3IEBAIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAgICAgaWYgKHNuYXBzaG90
U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKLSAgICByZXR1cm4gc25hcHNob3RCdWZmZXI7Cisg
ICAgcmV0dXJuIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwog
fQogCiBib29sIFBsdWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNDQ5NWM5OTExMjJkMDg0
M2RhYjBjODRkYTYwYmE1YTdjOTdiYTZjOC4uNTkyYTQ4NzE1MGVkN2FmOGVlZTg1MjcwMDZjZWVi
YzljMzcxZTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTExNzQsOCArMTE3NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9y
bVVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICB9CiAKICAgICAvLyBUaGlzIHJl
cXVlc3QgaXMgdG8gbG9hZCBhIFVSTCBhbmQgY3JlYXRlIGEgc3RyZWFtLgotICAgIFJlZlB0cjxT
dHJlYW0+IHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3Qt
PnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgIGFkZFN0cmVhbShzdHJlYW0u
Z2V0KCkpOworICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhp
cywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7CisgICAgYWRkU3Ry
ZWFtKHN0cmVhbS5wdHIoKSk7CiAgICAgc3RyZWFtLT5zdGFydCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCmluZGV4IGIzMWIxMTdmMGVkYWIzOThiMjUxMjQwNjRlMTYyMjdmYWY3ODYyNTUu
Ljc4ZTY3MzU0MDcxYjM2NTQ3MDBmMTZmNDBlY2FmZDk5NTZlNjExNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC03MTgsOCArNzE4LDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAg
ICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7CiAgICAgYXV0
byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEpOwogICAgIHVp
bnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVy
KCkpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9y
aWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRR
dW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxz
LmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCBkYXRhYmFzZU5hbWUs
IGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2Us
IGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAg
IGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCkBAIC03MzcsOCArNzM3LDggQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKIAogdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOwotICAgIGlmIChtX3BhZ2Uu
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKKyAg
ICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgaWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2Vj
dXJpdHlPcmlnaW4ucHRyKCksIHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvJiBjYWNoZVN0b3JhZ2UgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+YXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGQwNWZj
OTk2YzFkNGVkOWY3NTZmYzg4NWU5M2NkNjViMmM0NWQwMmMuLjFmOTFlOGNmYzRhMDU5ZjllZjc4
MWUxNDYxMTA5ODczYTM3MTM3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzY3LDEwICs3NjcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKIAogICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNy
ZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOworICAgIGF1dG8gYWN0
aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2
aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNs
aWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
d2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJE
YXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
d2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJE
YXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewog
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjliMGNlZWY5Y2YwYmZhZjM0ZjY0
ZGE4YjMxNjA3ODQ3MTQyYTBhMy4uMTY1NDJmYjkwNjE1YzMyMzdmMTU3N2MzNjI5OTQyM2I3Y2I4
ZjM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdAogICAgICAgICBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVz
LCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAgQVNTRVJUKHBhdGhuYW1l
cy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7
IGkrKykgewotICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXlbaV0pKSkKKyAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQogICAg
ICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHkoKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRy
YWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA4NzE2MTIwZjcxZGNmOWFjMjNkOGQxM2Vi
ZGY5M2M2N2RmMzNkODk2Li4xODY3Yzk4NDkwNWM5MjAwZTAyMmRlMzZiOGQwNjVlZmZmMjQ0ZjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJs
ZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRT
aXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFn
ZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4
dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmlu
ZGV4IGZmZWUyYTY0NmNjNmU4OWYyNDMzZjNhNDdmZTdmNjQ3MzQ3YTgwMmUuLmY4N2Q5MzQ0M2Y3
YzU4YTgyYzQzNjNmMDM0YTAwNjAxM2I2YWExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgICAg
ICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQogCi0gICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoZWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGVsZW1lbnQpOwogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYTM4Y2QyYmY2Mzc5
NGM4ZTlmMWQyMTJhM2U3OGIzZThjNGVmOGM2Yi4uOGNlNTY1ZmI5NTZmMzZjYjc1MmVmODExYTEy
NDVlYjU1ZGRjZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIERpY3Rpb25h
cnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBm
cmFtZSwgUmFuZ2UmIHJhCiAgICAgaWYgKHByZXNlbnRhdGlvblRyYW5zaXRpb24gPT0gVGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSkKICAgICAg
ICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90
V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKICAgICAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4g
dGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5k
aWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisgICAgYXV0byB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBpbmRpY2F0b3JP
cHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3Ip
IHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2Up
OwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDc4MjRl
NWNmNzFiNDdkYjA5ZWVhMzVhNzY5ZmE3NjQxYTcyZDdmMzIuLjZhODZiMDAyYjg2ZjQyYTAxY2Y0
OGU1ZGY2OTAwYWNmNThmODMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQg
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50
U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJp
dG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNp
emUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAppbmRleCA5ZmVmZGJjYTEyY2Y1OWU2ZTMyNWNjOWMyNGViZTRmMzA5MjlkMWYzLi42
M2NjMjgzOTJlNDgwZGZiZDU0MzJkNjkwMDBmYTM4ZjIyZGU2NjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6aGlkZUZpbmRVSSgpCiAKIGJvb2wgRmlu
ZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJv
b2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRBbmltYXRlKQogewotICAgIFJlZlB0cjxU
ZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0
aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdp
bklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpOb25lKTsKKyAgICBhdXRvIGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOwogICAgIGlmICghaW5kaWNhdG9yKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA4MGJkMjEzOTU4N2IzMTVkZjE3NmQ2MjBiNDU4
OWRjMzY1OTlhMmY2Li42YWM2MDM5YWEzMTg0OTVlMzdiYjE1ODk0N2E2ZmQ4MmVlYTU1YmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMoKQogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5n
U3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgp
OwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVy
LCBwYWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0
b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAg
ICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90b25pY1Rp
bWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMTg5ZDFhMTg4YjI0YjY0NDZkMDUy
N2RmODY1MGYwYTFhMzg2ODEwYi4uZTQ3MzcwZWZiNWUwZjQxNTg5YjIxNGI1YWI3MTliNzk4MmMw
MmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViRnJhbWU6OmRvY3VtZW50TG9hZGVyRGV0YWNo
ZWQodWludDY0X3QgbmF2aWdhdGlvbklEKQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmV0YWluUHRy
PENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4gYm9vbCB7Cisg
ICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJv
b2wgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmU2
YmVmYjgxNDc4NjVmYzBlODFlODEyMjNiNmM0OTZhYjdmMWJkNS4uYjRiN2Q3YTdjYzg0NWU1NTMy
YzNiMjA2ZTdkOWMwZTI1ZWE1N2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MzIsMTAgKzE0MzIsMTAgQEAgdm9pZCBXZWJQYWdlOjpu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50
UG9pbnQgZG8KICAgICBjb25zdCBpbnQgc2luZ2xlQ2xpY2sgPSAxOwogICAgIC8vIEZJWE1FOiBT
ZXQgbW9kaWZpZXIga2V5cy4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgc2V0
IElzU2ltdWxhdGVkOjpZZXMuCi0gICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVz
LAorICAgIGF1dG8gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygp
LCBudWxscHRyLCBzaW5nbGVDbGljaywgc2NyZWVuUG9pbnQsIGRvY3VtZW50UG9pbnQsIHsgfSwg
eyB9LCAwLCAwLCBudWxscHRyLCAwLCBXZWJDb3JlOjpOb1RhcCwgbnVsbHB0cik7CiAKLSAgICBt
YWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50LT5jb21wbGV0
ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2Vu
ZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5wdHIoKSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpN
YXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKQEAgLTM3MDUsNyArMzcwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAKICAg
ICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7IGkrKykg
ewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5W2ldKSkpCisgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAg
ICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVu
ZChleHRlbnNpb24pOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCAwYzg0ZjY0
YzhjNjNlZDFiYmQ2MGI3M2YzYjU2OGE0YTI3OGMxYWRmLi5mYmE1YjA1NmE0YzlmYWQwMTcxYzE4
ODNmMDBjZWJmNWEzNTdmNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC05NCw3ICs5NCw3IEBA
IGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVk
RnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgICAgIG1faXNTaG93aW5nRmluZEluZGljYXRv
ciA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNh
dG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRG
cmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxW
ZXJ0aWNhbE1hcmdpbikpOworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6
OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNh
dG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZs
b2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGljYWxNYXJnaW4pKTsKICAg
ICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA5
ZGY2MThhNGQ5YWQ4ZTliMWQ2MzIwNmM2MDA1MWRhZmI3NmRiMjM1Li4xMDNmZWEzM2ZmMWIxMTJj
NTMwZjU5ZTZlNTZjZDU4ZWIzNGYxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTgyMCwxNCArMTgyMCwxNCBAQCB2
b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBj
b25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucHJldmlv
dXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBvc2l0aW9uID0gc3Rh
cnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
c3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50
KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKIAot
ICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpICE9IG9s
ZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5wdHIo
KSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBzZWxlY3Rpb24gaGFzIGNoYW5nZWQgdW50aWwg
d2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRoZSBuZXcgdGV4dC4KICAgICBmcmFtZS5lZGl0b3IoKS5z
ZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShyYW5nZS5wdHIoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRU
ZXh0KG5ld1RleHQsIDApOwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNo
YW5nZXMoZmFsc2UpOwogfQpAQCAtMjEzNiwxNyArMjEzNiwxNSBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qm
IHJlcXVlcwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua1JhbmdlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IG1hcmdpbkluUG9pbnRzID0gNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZjxSYW5nZT4g
bGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJnaW5J
blBvaW50cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dElu
ZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgq
bGlua1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5k
aWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJh
Y2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxs
Q29udGVudEZvckNvbXBsZXhSYW5nZXMgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9u
LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1h
cmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dEluZGljYXRv
ciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShsaW5rUmFuZ2UuZ2V0KCksIFRleHRJ
bmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNw
ZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxl
eFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlv
bkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNl
bnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmlj
ZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mby5saW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+
ZGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHRJbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5s
aW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0yMTU2LDcgKzIxNTQsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRh
RGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9ySWRlbnRpZmll
cigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3RvclJl
c3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1bHRz
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVjdGlvbjo6cmVxdWlyZXNF
eHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6
OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5
KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0
TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QWZ0ZXIg
PSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLCBkYXRh
RGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSwg
VGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIxODEsNyArMjE3OSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24g
dG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhcmVkQml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0
bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkMjU1NWMxOTkwOGFiYTY2YTI0YzFjMWJk
ZDE1NmYyZDNkMjkwNDgzLi40N2ZjM2MyOTBmNjUwZTM2N2RiOThkNGMzNzEzNWY5M2Y2NGU0MTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04NTAsNyAr
ODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFuc2Zvcm0uc2NhbGUoc2Nh
bGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRp
b25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3JtIik7
Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb24gPSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0
KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVyVmll
d0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAgUmV0YWluUHRyPENBTGF5
ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0
UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uo
c2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZv
cktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5pbWF0aW9uKTsKKyAgICB6
b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRl
clZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUoZnJh
bWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggODA1ZmU5ZTRjYmI1
ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uODgzMDE3MjY1YmJhOTU2ZGM5ZDIyZjZiNjA0
NDRiMTgwNjBlZmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMjQgKzQwLDI0
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykp
OwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxM
b2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0
ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVv
dGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNl
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiAgICAg
bV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9
CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVh
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3Jh
Z2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVwaGVtZXJhbExvY2FsU3Rv
cmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUsMTYgQEAgY2xhc3MgU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZpbmFsIDogcHVibGljIFN0
b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwogfTsKIAot
UmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxT
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdl
QXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGF1
dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFkZChzZWN1cml0eU9yaWdp
biwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkKICAgICAgICAgc2xv
dCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYTo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1cm4gc2xvdC5nZXQoKTsK
KyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQ
YWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKQEAgLTIwMiw3ICsy
MDIsNyBAQCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNv
cHkoUGFnZSogbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCksIG1fcXVvdGFJ
bkJ5dGVzKTsKIAogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbCk7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3Bh
Y2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9z
dG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVz
KSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3RvcmFnZU5hbWVz
cGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykpOwogCiAgICAg
Zm9yIChhdXRvJiBpdGVyIDogbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcykKICAgICAgICAg
bmV3TmFtZXNwYWNlLT5tX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLnNldChpdGVyLmtleSwg
aXRlci52YWx1ZS0+Y29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGYxM2EyMmRjYmQy
MWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgxM2JhZjVjYjVhNDdkNzJlZTVh
MDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTAgKzM5LDEwIEBA
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxP
cmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFt
ZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFj
ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZl
bE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Jikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHko
V2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4g
c3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSop
IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxM
b2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0
b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0X3QgbV9zdG9yYWdlTmFt
ZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA0NjJk
ZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44MjU1N2I3MjcxNGFkODcyNjU3
ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcgogICAgIHJl
dHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5hZGQo
aWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChzbG90KQotICAg
ICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90OwogCi0gICAgUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRv
cHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7Ci0gICAg
c2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAgICBhdXRvIHN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLnB0
cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIH0KQEAgLTY1LDIy
ICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5yZW1vdmUobV9p
ZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3Jl
UGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBx
dW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdl
SUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2
ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWdu
ZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwg
cXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCA4ZWEyNWU2
ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2ZGI5ZjA2OGU4MDM4OTY4MTE0
ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApA
QCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7CisgICAgc3RhdGlj
IFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcih1aW50
NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92
ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBv
dmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwogCiAg
ICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXgg
Y2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3MS4uZmM2NTk4NjMyNTJiZmU0
ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTIwMiw5ICsy
MDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQogCiBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPmFkZENs
aWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNlID0gUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIG1vZGVs
LT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNiMDIyMWYxNmUuLjVkNjExMGI3
OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0x
NTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmludmFsaWRhdGUo
KQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVs
ID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgYXV0
byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAg
ICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0
ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmFkZENs
aWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0
aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQ
cm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CisgICAgbW9kZWwt
PmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDAx
ODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMuLjg2ZGIyZDg3MThhNTRiMmY2
YzI2NTNmOTNjMGFhZTliMmI5ZmQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtOTMsMzEgKzkzLDMxIEBAIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogICAgICAgICBjbG9z
ZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwp
OwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9w
dFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1
b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOwogICAgIGZvciAoYXV0
byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9y
YWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAKICAgICByZXR1
cm4gbmV3TmFtZXNwYWNlOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKK1Jl
ZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogCiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhSW1w
bD4gc3RvcmFnZUFyZWE7CiAgICAgaWYgKChzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAu
Z2V0KG9yaWdpbikpKQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7CisgICAgICAgIHJldHVy
biBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCiAgICAgc3RvcmFnZUFyZWEgPSBTdG9y
YWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIu
Z2V0KCksIG1fcXVvdGEpOwogICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9yaWdpbiwgc3RvcmFn
ZUFyZWEuZ2V0KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICByZXR1cm4gc3RvcmFn
ZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgwYmZkNjVhOTY2NjE2MTM3
Li5jODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcs
OCArNTcsOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2Vi
Q29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpOwog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdl
YkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+IFN0b3Jh
Z2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwCmluZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0NWE0NmQ2NzdjODg0YWJk
OWUuLjgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTExZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNoU2V0PFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkKICAgICByZXR1
cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIobG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKQpAQCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJlZlB0cjxTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAg
cmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQg
cXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0
dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1
b3RhKQogewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50YXRpb24gd291bGQgY3Jl
YXRlIGEgc3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgcGlnZ3ktYmFja2lu
ZyBvZmYKICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCmluZGV4IDBkMjA3ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0ZWMwNzdhYmIuLmU1ODlm
ZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgp
OworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIHZpcnR1YWwgfldlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgc3RhdGljIHZvaWQgY2xvc2VMb2NhbFN0
b3JhZ2UoKTsKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
LCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwor
ICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3
R3JvdXAuY3BwCmluZGV4IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVlMDY2N2QxYTYyMTNiOWQu
LjYzY2FlMmQwYWQ1MmNkNTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAKQEAgLTQy
LDE4ICs0MiwyMiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJWaWV3R3JvdXA+
PiYgd2ViVmlld0dyb3VwcygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91cHM7CiB9CiAKLVJlZlB0
cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJWaWV3
R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKFN0cmluZygp
LCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIAog
ICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5hZGQobmFtZSwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghd2ViVmlld0dyb3VwKQotICAgICAgICB3ZWJW
aWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCkpOwotICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgu
aXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQorICAgIGlm
ICghd2ViVmlld0dyb3VwKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBX
ZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgICAgIHdl
YlZpZXdHcm91cCA9IHJlc3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
ICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYm
ICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAgICAgICB3ZWJWaWV3R3Jv
dXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
OwogCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4gKndlYlZpZXdHcm91cDsK
IH0KIAogV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAu
aAppbmRleCBmZTA1Y2Q1NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkzMjcyYjVmLi40ZDQxMzdj
ZTJhYWFjM2ExNDBkNTljNjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAgLTM4LDcgKzM4LDcgQEAg
T0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZXdH
cm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJWaWV3R3JvdXA+IGdldE9y
Q3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpOwogICAgIH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0YXRpYyBXZWJWaWV3R3Jv
dXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKaW5k
ZXggZDA4NDkzYjBmNDJjY2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVkMC4uODA0OWIxY2NjMjcy
YzM0NzI1OTllNDk0MmU1MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
CkBAIC0yNiwxMyArMjYsMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTZWFyY2hQ
b3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKKyAgICA6
IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSkpCiB7CiB9CiAKIFBv
cHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBt
X3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiB2b2lkIFNlYXJj
aFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1Mu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5oCmluZGV4IDcxNmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4ZWY1OTg3OWFmNGYuLjBl
ZjQ0YjQyYTY2MGFlMzUyYzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudUlPUyA6IHB1Ymxp
YyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CisgICAgUmVm
PFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVJ
T1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkwMGY0ZjBlNmI5YTVlNjg5
ZmMxOWM4NzM3NDQyYjViMjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBjZmFmMmYzMmExMzYxZjY2
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0MzMsOCBAQCAtIChET01S
YW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVybmF0aXZlczooTlNB
cnJheSAqKilhbHRlcm5hdAogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtYXJr
ZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAgWyhOU011dGFibGVB
cnJheSAqKSphbHRlcm5hdGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKShtYXJrZXJBbHRlcm5h
dGl2ZXNbal0pXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0
KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGtpdChy
YW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNl
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgICAgICAKQEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2lu
Z1JhbmdlV2l0aENvcnJlY3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1h
cmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPD0g
b2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2Vy
LT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAg
IHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFy
a2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLnB0cigpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5kZXggOTZhNjQ5NmMyYzQ0
NjA5OTJjNWMxMmMwZGNmZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVlMTQ5OGQ5ZjM0YjljMDk2
MjkzZGMzNmNhNWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmll
dy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwxMyArNDY1LDEzIEBAIC0g
KHZvaWQpc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVSTAogICAgIGlmICghVVJM
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMs
IEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKKyAgICBh
dXRvIGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6Oklz
Q29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIDEs
IHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgTW91c2VF
dmVudDo6SXNTaW11bGF0ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2Fk
ZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJhbWVdKTsKICAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7IH0sIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgIEluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVl
c3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCksIG51bGxwdHIpOworICAg
IGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVz
dCksIGV2ZW50LnB0cigpLCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET00ubW0KaW5kZXggZjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4NjM1ZTNhYThmNGFkNC4u
MWI2YzgyMjg1NGEwN2YzZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tCkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9pZClnZXRQcmV2aWV3U25h
cHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNBcnJheSAqKilyZWN0
cwogICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMobm9kZSk7CiAKICAgICBj
b25zdCBmbG9hdCBtYXJnaW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBhZ2UoKS0+cGFnZVNjYWxl
RmFjdG9yKCk7Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdo
dGx5Rml0Q29udGVudCB8CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6
Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRl
bnQgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8CiAgICAg
ICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwKICAgICAgICAgVGV4dElu
ZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVudEZvckNvbXBsZXhS
YW5nZXMgfApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KaW5kZXggMWYzMmRj
OTQ5OGJhNDIyMWQxMjkzOTFiODQ3OWFiYTMwYTk3OTg5NC4uYTA0YmM1NTdiZmRkYzk3NmZkMTgw
NWFmZWI3ODY1YjRkMTI3YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
Lm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4KICAgICBOU0Rh
dGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlM
aXN0OnByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3Yx
XzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChkYXRhKTsKICAgICAKLSAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0YW5jZSA9IE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVsbEZy
YW1lKTsKKyAgICBhdXRvIGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpj
cmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwogICAgIHVpbnQzMl90IHJl
cXVlc3RJRCA9IGluc3RhbmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAga2Vybl9yZXR1cm5fdCBr
ciA9IF9XS1BISW5zdGFudGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0KCksIHJlcXVlc3RJRCwg
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRhIGJ5dGVzXSkpLCBb
ZGF0YSBsZW5ndGhdLCBpbnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAgaWYgKGtyID09IE1BQ0hf
U0VORF9JTlZBTElEX0RFU1QpIHsKQEAgLTI5OSw3ICsyOTksNyBAQCBSZWZQdHI8TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0
ZVBsdWdpbgogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVwbHktPm1fcmVuZGVy
Q29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJlcGx5LT5tX3JlbmRl
cmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgcmV0dXJuIFdURk1vdmUoaW5z
dGFuY2UpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OmNyZWF0ZVByb3Bl
cnR5TGlzdEZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdpbkFy
Y2hpdGVjdHVyZSwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBi
YzBjNzYyMWU3MDY4YjdjMzIuLmFiY2E2YmJlMzMwNTM1YTk4MmU2NDJkNGMyYTE4OGE3YjhhOGI3
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcxOSw4
ICs3MTksOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZh
U2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAvLyBEb24ndCBjYWxs
IE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpT
IHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBO
U0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBs
dWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAg
ICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtKTsKKyAgICAgICAg
YXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBs
dWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAg
ICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtLmNvcHlSZWYoKSk7
CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtNzk5LDEwICs3OTksMTAgQEAg
TlBFcnJvciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCwgY29uc3QgY2gKICAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQo
V1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0
aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKIAog
ICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAg
bV9zdHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQo
cmVxdWVzdElELCBzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWE3NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0
NWUyNDQ1YjM4NTNlMDg4MC4uMWQxZThhZWY2NzUyMzYxZjNlY2MwNDY1MDVkNDY1N2MyNTQ2YjRj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIC0gKHZvaWQpZXZhbHVh
dGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVx
dWVzdAogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVh
bSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdo
YXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVm
UHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0
cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBb
SlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlm
eURhdGFdKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6
Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVn
aW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFd
KTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC0xNjc4LDkgKzE2NzgsOSBA
QCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBp
blRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFm
dGVyRGVsYXk6MF07CiAgICAgICAgIFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2VdOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3Rp
ZnlEYXRhKTsKIAotICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBz
dHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggOTZlZjkyMWZkNjA2
ZWNmMDgwZWVkMTMxZDRiOGQ5MTJkNTFmM2ZmYi4uMjM0NzgxYjBiZTg2YTRiZGE1MGMwY2U1NjQ4
NDIyMzg4YjQyYmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwNyw4ICsy
MDcsOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9y
Q3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZVZpZXctPmZyYW1lKCkuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVy
QW5jaG9yKSk7Ci0gICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3Vz
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3Np
dGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5v
ZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBmcmFtZVZpZXctPmZy
YW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0
KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBPcHRpb25TZXQ8UGFp
bnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigp
OwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yOjpTZWxlY3Rp
b25Pbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZWM4ZTU4Y2YyMDdiYmNi
MDQ4MjJlZDJiMTVkZWFkMDY3NjJhNTY3ZC4uODQ2MGIwM2Y1MGM3YzJiMTNhMTdlZmU0YzgzOGZi
N2I5MjE5MGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0NjUsNyArMTQ2
NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UoKQogICAgIGlmIChpc01haW5GcmFtZSAmJiBjb3JlRnJhbWUtPnZpZXcoKSkKICAg
ICAgICAgY29yZUZyYW1lLT52aWV3KCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgIGNv
cmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBjb3JlVmll
dyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOworICAgIGF1dG8gY29yZVZpZXcgPSBG
cmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoY29y
ZVZpZXcuY29weVJlZigpKTsKIAogICAgIFttX3dlYkZyYW1lLmdldCgpIF91cGRhdGVCYWNrZ3Jv
dW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDdiOWJiODk5MDhhZTVjMWE2NTJlMzZjYzg4OWJlMDRl
NTY1NGM5NDYuLmE5M2RlZjYxMzk5YTVjYzU0ZWY2MWNhZTljMDM3OTkwNTg5MGNkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTc0Niw4ICsx
NzQ2LDggQEAgLSAodm9pZClnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0
UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAqKikKICAgICAgICAgICAgIGlmICghbWV0YWRh
dGEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAg
ICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBh
dXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRP
ZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBET01SYW5n
ZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAobWV0YWRhdGEgIT0gcHJldmlvdXNNZXRhZGF0YSkgewogICAgICAgICAgICAgICAgIFtt
ZXRhZGF0YXMgYWRkT2JqZWN0Om1ldGFkYXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDljM2MyYmI5OWNjMGM2Y2QzMDUzNzk4ZGRi
NjY0NGM5ZTdkYjgxNDIuLjRhODZjNzk0NTVmYjM2ZDBjNWJlYmZiMzkwY2U4NDYzZmViMjQyNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMTM0OCw3ICsxMzQ4LDcgQEAgLSAodm9pZClfd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZFR5cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3QKIHsKICAgICAvLyBQ
dXQgSFRNTCBvbiB0aGUgcGFzdGVib2FyZC4KICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0
OldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewotICAgICAgICBpZiAoUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihjb3JlKFtzZWxmIF9mcmFtZV0pKSkgeworICAgICAgICBpZiAoYXV0byBjb3JlQXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVd
KSkpIHsKICAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gY29yZUFy
Y2hpdmUgPyBjb3JlQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkgOiAwKQogICAgICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0
KCkgZm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZWI5NTc1MjgyYzFiNjUzZGNi
YzlhYTZhNDdlZDcwYzA1ZTdkNWVmLi40ZjkwZjYzOTM5NzQxMjY5NzY4ZDYzMDM2Y2IwZDNiMGQz
MGM5MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC00NzI5LDggKzQ3MjksNiBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJp
bmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3Jv
dXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsK
IAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3NTQsOCArNDc1Miw2IEBA
ICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUg
d29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmll
d0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsK
LSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA1YzA3NzEyMTFlYWVkNjQ5MDczZTEwM2U5MDRhNWVj
OTA0OWI0NjNmLi5iYzc5ZDg5YmQ0NDZjNTZlYTFiYTlkNTdjNzVhZTM5OWFhOGYwNGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cApAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAg
ICAgICAgICAgcmVtb3ZlKG9sZFBhY2thZ2UuZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNr
YWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKKyAgICAgICAgYXV0byBwYWNrYWdlID0gUGx1Z2luUGFj
a2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CiAgICAgICAgIGlmIChwYWNr
YWdlICYmIGFkZChwYWNrYWdlLnJlbGVhc2VOb25OdWxsKCkpKQogICAgICAgICAgICAgcGx1Z2lu
U2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZjg1NWRkMjYzZjc5Y2RmZDQxYjY0NjU5NTAyMmE4
YzQ0Y2NhMmY0NS4uZWYwYTJlMjBiNDEzNzY2MGYyN2JlNWJhNGZhY2NiZmIwZjYyNGFiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0y
NzIsNyArMjcyLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KERvY3VtZW50JikK
IHsKICAgICBBU1NFUlQoIW1faXNTdGFydGVkKTsKICAgICBpZiAoIXN0YXJ0KCkpCi0gICAgICAg
IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJhbWUoKS0+bG9hZGVy
KCkuY2xpZW50KCkpLmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4odGhpcyk7CisgICAgICAg
IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJhbWUoKS0+bG9hZGVy
KCkuY2xpZW50KCkpLmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oKnRoaXMpOwogfQogCiBQ
bHVnaW5WaWV3Ojp+UGx1Z2luVmlldygpCkBAIC00MTAsOCArNDEwLDggQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAvLyBp
ZiB0aGlzIGlzIG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQu
IG90aGVyd2lzZSwKICAgICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0aGUgbG9hZGVyCiAg
ICAgICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3Bh
cmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgp
LCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygp
KTsKLSAgICAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKKyAgICAgICAgICAgIGF1dG8g
c3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwg
cmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5z
ZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdp
bkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBt
X3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgc3RyZWFtLT5zdGFy
dCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBmcmFt
ZSBpcyBvdXIgZnJhbWUsIHdlIGNvdWxkIGRlc3Ryb3kgdGhlCkBAIC00NTQsOCArNDU0LDggQEAg
dm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQog
ICAgICAgICAgICAgICAgIGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgp
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3Qt
Pm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1
Z2luLT5xdWlya3MoKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKKyAgICAgICAg
YXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdl
dCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVl
c3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+
cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAgICAg
bV9zdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zZW5kSmF2
YVNjcmlwdFN0cmVhbShyZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9CiB9CkBAIC02OTAsMTEgKzY5
MCwxMSBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFBsdWdpblZpZXc6OmJpbmRp
bmdJbnN0YW5jZSgpCiAgICAgfQogCiAgICAgYXV0byByb290ID0gbV9wYXJlbnRGcmFtZS0+c2Ny
aXB0KCkuY3JlYXRlUm9vdE9iamVjdCh0aGlzKTsKLSAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2Jq
ZWN0LCBXVEZNb3ZlKHJvb3QpKTsKKyAgICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6
Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCBXVEZNb3ZlKHJvb3QpKTsKIAogICAgIF9OUE5fUmVs
ZWFzZU9iamVjdChvYmplY3QpOwogCi0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHJldHVybiBX
VEZNb3ZlKGluc3RhbmNlKTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggN2NmYzdh
OWE4MmU3MmM5MTJmNWRiOTk5Y2ZiMzdiZjljZjFhOWY0ZS4uYjViNjBhODA5OTFkNjA3MTBiODcw
NjMwMjQwMjFkNjUwOTA2MzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKQEAgLTMxNyw3ICszMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgVmVjdG9yPGJvb2wsIDQ+IG1fcG9wdXBTdGF0ZVN0YWNrOwogCi0gICAgICAgIEhh
c2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPiBtX3N0cmVhbXM7CisgICAgICAgIEhhc2hTZXQ8
UmVmUHRyPFBsdWdpblN0cmVhbT4+IG1fc3RyZWFtczsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxQbHVnaW5SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKIAogICAgICAgICBib29sIG1faXNX
aW5kb3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThl
ZjU4ZmU0MTZmY2JmYjY3NWVkZTNmYzU4OTZjLi41MGFjZjc3OWRkNmI1NDQ4NDg0OGVjYzI1YzE4
NjQ4Yjk5NmFiN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDYxLDcg
KzEwNjEsNyBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok9i
amVjdENvbnRlbnRUeXBlOjpOb25lOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpblZpZXcp
IGNvbnN0Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0
UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcmIHBsdWdpblZpZXcpIGNvbnN0CiB7CiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAtMTA3MiwyMyArMTA3Miwy
MyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1
Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwot
ICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKKyAgICBBU1NF
UlQoZnJhbWUgPT0gcGx1Z2luVmlldy5wYXJlbnRGcmFtZSgpKTsKIAotICAgIGlmICghcGx1Z2lu
Vmlldy0+cGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewotICAgICAgICBVUkwgcGx1Z2luUGFnZVVS
TCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOworICAgIGlmICghcGx1Z2lu
Vmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJM
ID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdp
blBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgICAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5n
UmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAgICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KCFwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwbHVnaW5WaWV3
Lm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvck1J
TUVUeXBlS2V5KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleSwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luVmll
dy5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmIChw
bHVnaW5WaWV3LT5wbHVnaW4oKSkgewotICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdp
blZpZXctPnBsdWdpbigpLT5uYW1lKCk7CisgICAgaWYgKHBsdWdpblZpZXcucGx1Z2luKCkpIHsK
KyAgICAgICAgU3RyaW5nIHBsdWdpbk5hbWUgPSBwbHVnaW5WaWV3LnBsdWdpbigpLT5uYW1lKCk7
CiAgICAgICAgIGlmICghcGx1Z2luTmFtZS5pc051bGwoKSkgewogICAgICAgICAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmlu
Z1JlZihXZWJLaXRFcnJvclBsdWdJbk5hbWVLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAg
CiAgICAgaW50IGVycm9yQ29kZSA9IDA7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uOwotICAgIHN3
aXRjaCAocGx1Z2luVmlldy0+c3RhdHVzKCkpIHsKKyAgICBzd2l0Y2ggKHBsdWdpblZpZXcuc3Rh
dHVzKCkpIHsKICAgICAgICAgY2FzZSBQbHVnaW5TdGF0dXNDYW5Ob3RGaW5kUGx1Z2luOgogICAg
ICAgICAgICAgZXJyb3JDb2RlID0gV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luOwogICAgICAg
ICAgICAgZGVzY3JpcHRpb24gPSBXRUJfVUlfU1RSSU5HKCJUaGUgcGx1Zy1pbiBjYW5ceEUyXHg4
MFx4OTl0IGJlIGZvdW5kIiwgIldlYktpdEVycm9yQ2Fubm90RmluZFBsdWdpbiBkZXNjcmlwdGlv
biIpOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdp
blZpZXctPnVybCgpLCBTdHJpbmcoKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9y
KFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29kZSwgcGx1Z2luVmlldy51cmwoKSwg
U3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJv
cjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKICAg
ICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJvcih3ZWJW
aWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSkpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBI
VE0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUobV93ZWJGcmFtZSk7Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQ
bHVnaW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNpemUsICZlbGVtZW50LCB1cmwsIHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKKyAgICBhdXRvIHBs
dWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNpemUsICZlbGVtZW50
LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsK
IAogICAgIGlmIChwbHVnaW5WaWV3LT5zdGF0dXMoKSA9PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNj
ZXNzZnVsbHkpCiAgICAgICAgIHJldHVybiBwbHVnaW5WaWV3OwpAQCAtMTE4MCw3ICsxMTgwLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0
JiBwbHVnaW5XaWRnZXQpCiBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiAvKmJhc2VVUkwqLywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4g
cGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5T
aXplLCAmZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRp
b24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKKyAgICBhdXRvIHBsdWdpblZpZXcgPSBQbHVnaW5W
aWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgp
LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBm
YWxzZSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBsb2FkZWQgc3VjY2Vz
c2Z1bGx5CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdpblZpZXctPnBsdWdp
bigpLT5sb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBmOGQ3NDg4NWYwNmM1
NGE0MzM4NzY5MzMzOGMwZTA2MzI0ZDk4YWNiLi4yZmJhYjc5YzcwZDAyMTRlODRmMDdlOGRiZThh
ZDQ3MThjMWM3OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIHNldFdlYkZyYW1lKFdlYkZyYW1l
KiB3ZWJGcmFtZSkgeyBtX3dlYkZyYW1lID0gd2ViRnJhbWU7IH0KICAgICBXZWJGcmFtZSogd2Vi
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3dlYkZyYW1lOyB9CiAKLSAgICB2b2lkIGRpc3BhdGNo
RGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyopIGNvbnN0Owor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVn
aW5WaWV3JikgY29uc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYzAzMjQyYzdkNmI2
MmQ4ZmM2MzVkOWEwZDdiZDZlNWQ3YzI1OWZlZC4uNDVlNGE1N2I1YThiYWMyZGE3YjQ0ZTRkZmJm
ODIxY2FlZjBhYjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTY0
LDcgKzU2NCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJV
UkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1l
Ojpsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdV
UkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBl
LCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNjEwLDcg
KzYxMCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRh
dGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAKIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICog
U3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9m
KFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKICAgICBCU3RyaW5nIHBsYWluVGV4
dE1pbWVUeXBlKFRFWFQoInRleHQvcGxhaW4iKSwgMTApOwogICAgIEJTdHJpbmcgdXRmMTZFbmNv
ZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZm
ZXIpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGluZywgdXJsLCBudWxscHRyKTsKQEAg
LTYxOSw3ICs2MTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9J
bl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiAKIHZvaWQgV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBC
U1RSIHVucmVhY2hhYmxlVVJMKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxT
dHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJpbmcpKTsKKyAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJp
bmcpKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAg
IGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgMCwgdXRmMTZFbmNvZGluZywgYmFzZVVS
TCwgdW5yZWFjaGFibGVVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXgg
MWJhZGQwMWMzYTc2NDBjY2YxMTMwNGE0MzVhN2IxZTI0NTExNWZkZS4uNTAyY2E4OWRmNmI5MGQw
YTI3N2Q3OWIxYmI1OTg3MWI1ZDExNDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
CkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3MgREVDTFNQRUNfVVVJRCgie0EzNjc2Mzk4LTQ0ODUt
NGE5ZC04N0RDLUNCNUE0MEU2MzUxRH0iKSBXZWJGcmFtZSBmaW5hbCA6IHAKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJh
c2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNv
ZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWRE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4
dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7
CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5v
dCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FWaWV3LmNwcAppbmRleCA5NDA3NzkxMmE5OTE2NDExN2QwYzY4MWNjY2MwNjY4
NmUwNGM0ZGUwLi5mOWFiODNiNTFjYTMyM2ViZTcxZjU1MDI2NzkyZGJmNjM1MzQzMzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0NBVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQVZpZXcuY3BwCkBAIC0xODcsOSArMTg3LDkgQEAgQ0FWaWV3Ojp+Q0FWaWV3
KCkKICAgICBtZXNzYWdlV2luZG93ID0gbnVsbHB0cjsKIH0KIAotUmVmUHRyPENBVmlldz4gQ0FW
aWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQorUmVmPENBVmlldz4g
Q0FWaWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ0FWaWV3KGRlc3RpbmF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ0FWaWV3KGRlc3RpbmF0aW9uKSk7CiB9CiAKIHZvaWQgQ0FWaWV3OjpzZXRDb250
ZXh0RGlkQ2hhbmdlQ2FsbGJhY2soQ29udGV4dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAppbmRleCA0NWI2NGVjMDE1MmU1
MWQ0MjRmNDJlMzM5YzVlMDZmYjU0NDgwNDZjLi43Mjk2M2JlM2RiYmM0MzI4ZjU1NzlhNmRhNTcw
YzYyYzVmNDg5MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xh
c3MgQ0FWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8Q0FWaWV3PiwgcHJpdmF0ZSBDVkRpc3BsYXlM
aW5rQ2xpZW50IHsKIAogICAgIGNsYXNzIEhhbmRsZTsKIAotICAgIHN0YXRpYyBSZWZQdHI8Q0FW
aWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKKyAgICBzdGF0aWMgUmVmPENBVmlldz4g
Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CiAgICAgfkNBVmlldygpOwogCiAgICAgdHlwZWRl
ZiB2b2lkICgqQ29udGV4dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24pKENBVmlldyosIHZvaWQq
IGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKaW5kZXggYjE1NDgy
NGNlNDQ4M2M3ZGQ5ZTYzMWJhZDFiMTM5ODQ1N2Y0OWZjNS4uYWFiZDE5OGIxMTE1ZWQ3ZTY1YWQ4
MzA4NTQxNjE5Y2Q0MTU4NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsu
Y3BwCkBAIC00NCw5ICs0NCw5IEBAIENWRGlzcGxheUxpbms6On5DVkRpc3BsYXlMaW5rKCkKICAg
ICA6OkNsb3NlSGFuZGxlKG1fd2FrZXVwRXZlbnQpOwogfQogCi1SZWZQdHI8Q1ZEaXNwbGF5TGlu
az4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkKK1Jl
ZjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVu
dCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1ZEaXNwbGF5TGluayhjbGll
bnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOwog
fQogCiB2b2lkIENWRGlzcGxheUxpbms6OnN0YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3Bs
YXlMaW5rLmgKaW5kZXggMGFlMDJmMTY5ZWM4Mjg5MTI2NjFlZmE3MzhjODRmYjdjNDQ0MjI4My4u
Y2EwMjZhZmVhYzQxNWQ3MTg3NDc4ZTg3Mzc1YTI3MTA5OWY0MGNjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DVkRpc3BsYXlMaW5rLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ1ZEaXNwbGF5TGlu
a0NsaWVudDsKIC8vIEZJWE1FIDg3NjkxODE6IFJlcGxhY2UgdGhpcyB3aXRoIENWRGlzcGxheUxp
bmtSZWYKIGNsYXNzIENWRGlzcGxheUxpbmsgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q1ZEaXNwbGF5TGluaz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1ZEaXNwbGF5TGlu
az4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsKKyAgICBzdGF0aWMgUmVmPENWRGlzcGxh
eUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CiAgICAgfkNWRGlzcGxheUxpbmso
KTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJz
aW9uLmNwcAppbmRleCBkYzY2NzBkNDMzZmYwOWUwZDExNjY1ZGMwNTUzYjIxNmRmYjI2MDBjLi5j
ZjkyMTg1YTEwZGI5NDZkMDZiYjRiZDQ4MGM2OWZkZWMzNDYwNDQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVy
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBIUkVT
VUxUIGdldEltYWdlQ29weShJRGlyZWN0M0RTdXJmYWNlOSogc3lzdGVtTWVtb3J5U3VyZmFjZSwg
UmVmUHRyPEltYWdlCiAKICAgICBDU2l6ZSBzdXJmYWNlU2l6ZShkZXNjLldpZHRoLCBkZXNjLkhl
aWdodCk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2U6OmNyZWF0ZShzdXJmYWNl
U2l6ZSk7CisgICAgYXV0byBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOwogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKaW5kZXggZThiZGRlYmYyNjI2ZjVjY2FkOGQ0YWNlZDU3MzNlNzI3MjJhZWVi
Ny4uZmJjMDRkZTY1OTc4OThiMDVkMjJhNGU1NzNhMjRlZDU2MTk3OTgzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTY5MTIsOCArNjkxMiw2IEBAIEhSRVNVTFQgV2ViVmll
dzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdl
YlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9
IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZp
ZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNjk0MSw4ICs2OTM5LDYgQEAgSFJFU1VMVCBXZWJW
aWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29w
dF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGF1dG8gdmlld0dyb3Vw
ID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3RyaW5nKCkpOwotICAgIGlmICgh
dmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYgKCFpV29ybGQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357562</attachid>
            <date>2018-12-18 05:40:15 -0800</date>
            <delta_ts>2018-12-18 06:07:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218224013.patch</filename>
            <type>text/plain</type>
            <size>406674</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi43ZDQzNTcwMTZiYmNhMzZkMjgyOTNmMmQ4MTU2ODU5YzE0Nzk2ZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCiBSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZy
YW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRo
ZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUg
dG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1l
PiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7
CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUs
IG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFt
ZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2
ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2
YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGlj
IGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFu
Y2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUp
OwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2
OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBi
NDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJi
NzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25z
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5
T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2
NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQg
RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVu
dCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7
CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50
LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50Ojpj
cmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBA
IC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3Vy
cmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCkt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWlu
VGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZz
ZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5U
ZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRh
dGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUo
KSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9u
c0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhl
IGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwg
b3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnBy
ZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwg
YWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFm
dGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5n
VGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290
Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0
KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwor
ICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtl
clJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2
YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYs
OCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAg
ICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJ
biIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0
KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91
dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAq
cGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEz
ZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVv
ZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1
ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4
OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAg
Ly8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5k
ZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZy
YW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1
cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBs
ZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5u
ZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVz
cG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMx
OGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0
NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxl
cjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAg
UmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJl
ck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBt
YWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1v
cnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3
NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUp
OwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwg
YXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgy
NWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIz
MDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0
cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/
IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdl
J2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJl
ck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1
ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZj
YjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRl
eCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQw
ZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZv
cm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZh
dGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBk
ZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4
Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmFmMGE3Y2M3N2JmMjkyY2Rm
ZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsx
ODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGlu
aXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBr
ZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25l
ZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
NCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERh
dGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
MCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAg
YXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5p
dERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAg
IGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsOCArMTkwOCw4IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKLSAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKKyAgICBhdXRvIHJlc291
cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2
UmVxdWVzdCk7CisgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjExYTkuLjFhNGIxODFhYWNiODk2
MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJh
Y2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDA1
Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4uMzEwNzgwYzNhY2FiZDgxNTU1
YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgogCiAgICAgICAgIEFTU0VSVChz
dGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICAgICAgQVNTRVJU
KGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKLSAgICAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlcXVlc3RlZEtleURhdGEt
PmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxlbmd0aCgpXSk7CiAgICAgICAg
IFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKICAgICB9CkBAIC0x
ODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKLSAgICBt
X3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVz
b3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5
UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFh
Li4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgxZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUwODRjOTBkNWZkNzdlNjZl
YmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2NWYxMWY3YTUwN2UwODg5MmVk
OTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
Ci1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50
LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1JlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBtZWRp
YVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhw
YXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1lZGlhU291
cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZigqbmV3
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQpKTsKKyAgICBjbGllbnQt
PnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5jb3B5UmVmKCkpOwogICAgIHJl
dHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIG5ld1NvdXJj
ZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAjZW5kaWYKLSAg
ICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91dFByaXZhdGUgPSBuZXdTb3Vy
Y2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShu
ZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDgzMDBkYzNiNmUz
OWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIzNGI5YjVhMGFkZThjMjc1NDdh
NDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOwogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGE5OWZlYjdm
NjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2MzY2MGQ5YWVkY2M4OWU2YjUy
MzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyArNDMwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgc3RhdGlj
IFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsg
fQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9CkBAIC00
ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QKICAgICAgICAgc291cmNlQnVm
ZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIAogICAgICAg
ICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAg
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMp
OwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7Ci0gICAgICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAg
ICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5m
bzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2s7Ci0g
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2su
Y29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tz
LmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZjQ1
NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4uNWRkN2U2MjMwZmU4ZTA1YjRm
ZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICBib29sIHNl
bGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODBjZmM0ZmFjMzQ1Yzky
ZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIxMjNhZWIzNDZlYTM5MmFlMDQz
ODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIGludCBUaWxlQ29u
dHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX21hcmdpblNp
emUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQoKS5zY2FsZSgpOwogfQogCi1S
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkKK1JlZjxQbGF0Zm9ybUNBTGF5
ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVy
ID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0
aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVh
dGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CiAKICAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIGxheWVyLT5zZXRQb3Np
dGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGFlMTliOGM1MTcxZmQ1NzQx
YTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5MDA1MTY1MjBkNWEwNjc1MjBh
YzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFRpbGVDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxh
eWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKIAogICAgIGNvbnN0
IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVHcmlkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3OGQxZDczNWNlNDkxYjNhZGE5
YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1NWExZDliNmVlMDgxNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgQ0FDRkxh
eWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
aG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgYXZh
aWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDQwNmUwODVmZmYx
ZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRiZTE0Mjk1MzgxYjQzMzI1YzBj
YzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTU1LDExICs1NSwx
MSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZv
aWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIp
OwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAgICBBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOworICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7CiAgICAgLy8gRklYTUU6IERl
ZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0
ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKQogICAgICAgICBu
ZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5NDc2OGRjMWE5MmEy
ZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdmYTExZjdhNThkZWZmNGE5ODI0
MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBW
aWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7
Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBhdXRvIHRy
YWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0lu
ZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklO
RygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZC51dGY4
KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwg
cGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFt
SWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwg
dHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdl
SW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsKQEAgLTk2OCw3ICs5NjgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFk
KTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAgICAgbV9wbGF5ZXItPmFkZEF1
ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7
Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgbV9w
bGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7CisgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFRl
eHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAgICAgICAgaWYgKGdzdF9pc19t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICBpZiAoZ3N0X2lu
c3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbWlzc2luZ1BsdWdp
bkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3Vs
dCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3Np
bmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1dG8gbWlzc2luZ1BsdWdpbkNh
bGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6
OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3VsdCwg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1pc3NpbmcgcGx1Z2luZyBpbnN0
YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3aXRoIHJlc3VsdCAldSIsIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEzLDEwICsxMzEz
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5D
YWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNz
YWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9k
ZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgp
LnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgKm1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6
OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1BsdWdpbkNhbGxiYWNrLmdldCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlv
biogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qPihnX3B0cl9hcnJheV9pbmRl
eChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChzdHJlYW0tPnN0cmVhbV90eXBl
ID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0cmVhbS0+cGlkKTsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRhdGEsIHBpZCk7
CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQg
dHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVy
bCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKG5ld1Vy
bCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRkOWJkZGYyYjc3ODM4NmNiOWI2
MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2ZkYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODc4
LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAgYXV0byBnc3RJbWFnZSA9IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4MGFkODMxMDguLmQwOTI5MjBj
MjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBw
c2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IG1lZGlhU2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSks
IG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1f
cHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0
cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICBtZWRpYVNhbXBsZS0+YXBw
bHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB9CiAKLSAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlhU2FtcGxlKTsKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUuZ2V0KCkpOwog
fQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRhYmRiNTQ1ZDA3ZS4uNmU0YjY0
ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0
ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXplKDE2KTsKQEAgLTYzLDggKzYw
LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRL
ZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1cnJlbnRLZXlJRC5yZXNpemUo
MTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZEtleUlEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNldCArPSAxNjsKICAgICAgICAg
ICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRLZXlJRC0+ZGF0YSgpLCAxNik7
CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAg
ICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBkYXRhU2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWREYXRhKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAKICAgICBtX2RhdGEucmVzaXpl
KGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKaW5kZXggNTdhNTY5NGQ1ZWFl
MTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNjYzFiNzYxNzVkOTIzODg2MjZm
MTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKQEAgLTY0LDkgKzY0
LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGtleUlE
QnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBpZiAoIWtl
eUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7CiAK
ICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFhMjdlYzg0MDZiZTA3NDFmLi4w
MWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIEZpbHRlck9w
ZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpdHlPcCA9IFBhc3N0aHJv
dWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+
IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8g
ZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2MTFiYjI2ZGM0NDJlMjdjOGYu
LjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIHRleHR1cmUgPSBC
aXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwogICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJhZGRkYjJkYTE5MjVhMzUzZjcz
YmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFmNGU2ZDJlYzdiMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTg3LDExICs4NywxMSBAQCBU
cmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGlk
ZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3Bl
cmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50
aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBpZGVu
dGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0
aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMwMTUzYy4uMDZjMGExOWYzMGQz
OWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBDb3B5IG91dCBQTkcgZGF0YSB0
byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5HIGRlY29kZXIuCiAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0byB0
YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
LSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKHBu
Z0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2
ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2YjhkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
QEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CiAKICAg
ICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAgICAgICBpZiAoTW9ja0JveDo6
cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAgICAg
ICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9j
a0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLnB0
cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0aCgpOwogICAgICAgICBtX3Ry
YWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUwMDIyMjc3YTgzMzg3ZWMzN2Fm
ZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJjZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBSZWY8TWVk
aWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYURlc2NyaXB0aW9u
PiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tN
ZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQpAQCAtMTE4LDkgKzExOCw5
IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAKLVJlZlB0cjxNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUo
cGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCkBAIC0xNDIsMTcgKzE0Miwx
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgp
LCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2Nr
Qm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVl
a1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0luaXRpYWxpemF0
aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0
Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBN
b2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChp
bml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUo
KSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1v
Y2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUo
c2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRlY2U2YWIzM2I1ZTg3YTUyNzI1
MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5ODI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGZpbmFsIDogcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7Cisg
ICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2YjgzMGZiZTBiNjAzZmQyZGJhZDBj
Li5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIyMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tU
ZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQogICAg
IHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwg
fk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBkZTUwNzgzYmZiNDc3MjRiZjU5
OTE5YWI2NmY5MWQuLmM0OWY0MjE3ODEyMGE0YzNkMmI0ZDMwMjY4NGIyZDgzYWYxZjQ2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzE5LDcgKzMxOSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gV1RGTW92ZShkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4
ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3
ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2llU3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2ll
U3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRl
KE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgQ29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRU
UENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkxODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRi
NDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTczODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3Rv
cmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBAIC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVT
dG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVh
dGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
IH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRl
eCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJjY2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2
Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1Nv
dXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxl
TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
ICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNT
aW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMu
c2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVz
c2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwg
Ynl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZp
bGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5
ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0
aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
ewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAg
IHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFy
eT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAg
ICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlwaGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZlNmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1
YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1l
bnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdp
bjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4g
bV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmlu
ZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdiMTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1
YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBt
X3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNh
YzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uZWUxZTIyNjgzMWNmNjQ5N2MwNGRmM2I1MDc3YWQ3
NTc5ODg1ZTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9y
ZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9p
ZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRl
clN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsMTIgKzkxNywxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogCiAgICAg
Y29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGlj
YWxPZmZzZXQ7Ci0gICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgYXV0byBzdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDB4OGQs
IDB4OGQsIDB4OGQpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENv
bG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQuc2V0
U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50KSk7CiAKICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKQEAgLTkzNywxMCAr
OTM3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRD
b3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVz
c0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIApAQCAtOTQ5LDIwICs5
NDksMjAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgLy8gMikgRHJhdyB0aGUg
cHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclBy
b2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZG91YmxlIGJhcldpZHRoID0g
cG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAg
IGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwog
ICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIx
MCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAx
MTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
NTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRp
ZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0
MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
MzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VHcmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFy
UGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQgb25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRv
Y3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAg
IC8vIGFuZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExl
bmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDExICsxNzQzLDggQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
W2luZm8uaWNvbiBDR0ltYWdlXSk7Ci0gICAgaWYgKCFpY29uSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwor
ICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uYzI0MWUzMGUzOWU2NTA4YTI5Yjc1NGM4Nzg2YTlkOGY4MGUzYWM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFQmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUJs
ZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5w
dXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVz
ZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDUxNWQz
MmZmYmNkN2U1M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjc1MTNhY2U1MTc5MGY4NmQ4ZTlj
ZjhlMGM4MTY0NjI5MDcyMzM5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0
ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBlZmZlY3QtPmlu
cHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cAppbmRleCA1N2ZhZjNiNDYzMDAxOTcwM2UzZDg3YjljMzMyNDMyN2M0N2RiYWIyLi41MmJlOTcx
MmJjNWY2MWFiNDdlMjI2ODAwMGYyYjE5NjgwZjY2OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5
LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHQKICAgICAgICAgICAgIGFscGhhID0gZG93bmNh
c3Q8U1ZHRkVGdW5jQUVsZW1lbnQ+KGNoaWxkKS50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQog
ICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwog
ICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5N2IxZGNmODdlMmMyNWY5
YTcuLmQzODU1NzQ3N2MxNjg5YjIxOGFiZGM5ZjBhOTE2M2YxNDk1Y2JiMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGUKICAgICBpZiAoIWlucHV0MSB8fCAhaW5wdXQyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigp
LCBrMygpLCBrNCgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoZmls
dGVyLCBzdmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKICAgICBGaWx0ZXJF
ZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAg
aW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5k
KGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3ZWNjZGQwNzc3NDlkMjcyNTkyM2QyYmZk
MDQuLjA2N2YxMmNiNzAzOTgyYzdlZDE0Mjg0ZjA0YzYwZDM3YzdlMWQ5YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIENvbG9yIGNvbG9y
ID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXIt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCks
IGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNj
YWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0
TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVj
dHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCA0MzVm
YzcwMWRmNjA3Y2YwYjBiZDk2YWQ3NzFkYjVmZmFmZDQ0ZjUzLi4xNGY3N2Y5ZjZmODgxMzE5NjRi
YjQyZWEyOTVkOTEzN2U2OWNkZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3Bs
YWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNl
bGVjdG9yKCksIHNjYWxlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBz
Y2FsZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAg
ICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNjZjFlZDZhNjQ0M2Y5NTFl
Y2Y0YmI4ZWY4YzU5Yi4uZDU0ZTVmMmI2ODVlOTkzNTc5YWY5NTE5Mzc3NjVmYTM0ZWEzYjFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAgICAgaWYgKCFpbnB1dDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERl
dmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOworICAgIGF1dG8gZWZmZWN0
ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggOTMzMTg3
ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uMzIwZjkyMWZlMGFmYmVlMjgyZjRk
Zjc4NzczZGViY2M3ODgxMmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0ZERldmlhdGlvblkoKSA8
IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwg
c3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwg
ZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsK
ICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5jcHAKaW5kZXggNTAyYTk5MTkzYzg5YjBmN2U5MWI4MTE5Yjk2YmY1ZGM4NzQzNWI4OS4uZmI5
MmEzNWU4ZDQ0MDM3OGMyMGMwYzYyNTg1YzdiNWVhOTg0ZDAyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxTVkdGRU1lcmdl
RWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBECiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXImIGZpbHRlcikKIHsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOwogICAgIEZpbHRlckVm
ZmVjdFZlY3RvciYgbWVyZ2VJbnB1dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogCiAgICAg
Zm9yIChhdXRvJiBtZXJnZU5vZGUgOiBjaGlsZHJlbk9mVHlwZTxTVkdGRU1lcmdlTm9kZUVsZW1l
bnQ+KCp0aGlzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCmluZGV4IGZjYmM2M2I2MmU2ZTEwNmViYjVkNTYyMDllM2Y1Mjk5ZDhiMGI2ZmMuLmUz
ZTgxYWZlMWFmN2YxMjZlNGQ5YjA3ZTgwMzljMmU4YWI4ZDg2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwg
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRp
dXMsIHlSYWRpdXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmls
dGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCmluZGV4IDI4MjM2OTg0ZjQxYTViYTJm
YTYyMzUxNmJiZjcwNDFhYWRiZDAyMjIuLmM0MDJlNDAzZWIyYjk0NDM5ODhjOGIwZWE5NDliMzdm
ZDAyNGVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwKICAgICBpZiAoIWlucHV0MSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwgZHkoKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZpbHRlciwgZHgoKSwgZHkoKSk7CiAgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDNhMmY0ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjllNGQ3ZmQ0
MjdmY2IxZDBjMWJiY2VhNDM0NWQ1ZWJlOTVkY2U1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVu
ZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxl
KCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNl
KSk7CisgICAgYXV0byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9u
ZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUo
bGlnaHRTb3VyY2UpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEp
OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5jcHAKaW5kZXggM2YzODc5ZDdlNjZhOGMxZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uYWUw
ZDE5MTk4MDU3YjhmMjQyMmYxYmJmYzUxODBmNTNkMGVhNTRlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaQogICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7Cisg
ICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgKaW5kZXggODZkOTU4ZjU3NjA1MWI4MDdlMDUx
YzE1YWVhMGJhNjUxYmI0ZmIxYi4uYWUxMThlZjlkZGZiODA0NzVlM2RmNTQwMzA3NGE1YTdjZDg2
NDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmgKQEAgLTM1LDkgKzM1
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHQ09ic2VydmF0aW9uIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8R0NPYnNlcnZhdGlvbj4gewogcHVibGljOgotICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWZQdHI8R0NPYnNlcnZhdGlvbj4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8
R0NPYnNlcnZhdGlvbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHQ09ic2VydmF0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ09ic2VydmF0aW9uKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgIH0KIAogICAgIGJvb2wgd2FzQ29sbGVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fb2JzZXJ2ZWRWYWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCmluZGV4IGE5YjE3NTE5NjkyZWRiM2NkYzZhNGVjZjhmNDM1ZmRmMmMzYjg0NWYu
Ljk5MDE3YWJlYjU5OTMzYzMwZWFjMDJlNjgyYzUyNDZiMjAxN2M5NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBSZWY8RG9jdW1lbnQ+IFhT
TFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZwogICAgICAgICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0LmNvcHlSZWYoKSk7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5cGUpOworICAgIGF1dG8gZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CiAgICAgZGVjb2Rl
ci0+c2V0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcuaXNFbXB0eSgpID8gVVRGOEVuY29kaW5nKCkg
OiBUZXh0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNv
ZGluZ0Zyb21YTUxIZWFkZXIpOwogICAgIHJlc3VsdC0+c2V0RGVjb2RlcihXVEZNb3ZlKGRlY29k
ZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAppbmRleCAxZjI4YThlYmE1OWRmMWU2ZTIxZmNjODc1ZTBmNDkwYmFhNjA4ODVmLi5iNDI1
MGEwMmNlYmY5MGUyYWNjM2VkYjM3NDk4YWE0ODgxODFlZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJp
bmcmIGNodW5rLCBEb2N1bWVudEZyYWdtCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIFJlZlB0cjxYTUxEb2N1bWVudFBhcnNlcj4gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZShmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwor
ICAgIGF1dG8gcGFyc2VyID0gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29u
dGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgIGJvb2wgd2VsbEZvcm1lZCA9
IHBhcnNlci0+YXBwZW5kRnJhZ21lbnRTb3VyY2UoY2h1bmspOwogICAgIC8vIERvIG5vdCBjYWxs
IGZpbmlzaCgpLiBUaGUgZmluaXNoKCkgYW5kIGRvRW5kKCkgaW1wbGVtZW50YXRpb25zIHRvdWNo
IHRoZSBtYWluIGRvY3VtZW50IGFuZCBsb2FkZXIgYW5kIGNhbiBjYXVzZSBjcmFzaGVzIGluIHRo
ZSBmcmFnbWVudCBjYXNlLgogICAgIHBhcnNlci0+ZGV0YWNoKCk7IC8vIEFsbG93cyB+RG9jdW1l
bnRQYXJzZXIgdG8gYXNzZXJ0IGl0IHdhcyBkZXRhY2hlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA2ZDRhMGVmNGQ2ZGJmZDc2NzMwYzA0ZDc4ZDBiYTVjOWI5Y2VkYjdmLi4zNjZi
OTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4ZGY3NDg0NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBJUEM6OkNvbm5lY3Rp
b24qIGN1cnJlbnRDb25uZWN0aW9uOwogCi1SZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyKQorUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMjFhMDgzODY5Mzg2YzRm
YmY1ZjI4ZDA3ZWQyZGQ2NDQxYzI5NWM1Li4zYTBhN2E4OTc5ZTMzMTdkMzc3MjY4ZjhlNjkwMjRl
YTJkNjJjYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzOwogCiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlByb2Nlc3NDb25uZWN0aW9uPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwg
fldlYlByb2Nlc3NDb25uZWN0aW9uKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCmluZGV4IGI5ZmM4OTUw
ZmEzM2NhNTZmOWE2NTA5ZjZhMmUxYThjMGFmOWRhMTcuLmM3NjQ5NmI3MzEyNDY3YzM2NjA2MmZh
ZWVjNDc3MjY5ZTNhZThjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQpAQCAtMTAzLDggKzEwMyw4IEBAIC0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxXS0Nvbm5lY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIAogLSAodm9pZClzZW5k
TWVzc2FnZVdpdGhOYW1lOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIGJvZHk6KGlkKW1lc3NhZ2VC
b2R5CiB7Ci0gICAgUmVmUHRyPFdlYktpdDo6T2JqQ09iamVjdEdyYXBoPiB3a01lc3NhZ2VCb2R5
ID0gV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZShtZXNzYWdlQm9keSk7Ci0gICAgc2Vs
Zi5fY29ubmVjdGlvbi5wb3N0TWVzc2FnZShtZXNzYWdlTmFtZSwgd2tNZXNzYWdlQm9keS5nZXQo
KSk7CisgICAgYXV0byB3a01lc3NhZ2VCb2R5ID0gV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNy
ZWF0ZShtZXNzYWdlQm9keSk7CisgICAgc2VsZi5fY29ubmVjdGlvbi5wb3N0TWVzc2FnZShtZXNz
YWdlTmFtZSwgd2tNZXNzYWdlQm9keS5wdHIoKSk7CiB9CiAKIC0gKFdlYktpdDo6V2ViQ29ubmVj
dGlvbiYpX2Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGI5YmVkMWRlOTRlZjcxNzZjM2ZlYmRhY2MxN2U0ZGM0ZTFkZWFh
N2YuLmQxNGJkOWQyYjdlYjMyYjNlMThkZmVmMzJkMDQzNWM5MjNkYjcxNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTEzNCw3ICsx
MTM0LDcgQEAgLSAodm9pZCl0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY2dJbWFnZSA9IGJpdG1hcCA/IGJpdG1hcC0+bWFrZUNHSW1hZ2UoKSA6IG51bGxw
dHI7CiAgICAgICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlID0gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpIHNpemU6TlNNYWtlU2l6ZShz
bmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodCldKTsKICAgICAgICAgaGFuZGxlcihuc0ltYWdlLmdl
dCgpLCBuaWwpOwpAQCAtMjA2Myw4ICsyMDYzLDggQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmlld1Nu
YXBzaG90PilfdGFrZVZpZXdTbmFwc2hvdAogI2lmIEhBVkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9S
KQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IGNvbXByZXNzZWRGb3JtYXQgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyOwogICAgIGlmIChXZWJDb3JlOjpJT1N1cmZh
Y2U6OmFsbG93Q29udmVyc2lvbkZyb21Gb3JtYXRUb0Zvcm1hdChzbmFwc2hvdEZvcm1hdCwgY29t
cHJlc3NlZEZvcm1hdCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB2
aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxwdHIpOwotICAg
ICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3ZlKHN1cmZhY2Up
LCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBzaG90XShzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CisgICAg
ICAgIGF1dG8gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxs
cHRyKTsKKyAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92
ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFw
c2hvdCA9IHZpZXdTbmFwc2hvdC5jb3B5UmVmKCldKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsKICAgICAgICAgICAgIGlmIChjb252ZXJ0ZWRT
dXJmYWNlKQogICAgICAgICAgICAgICAgIHZpZXdTbmFwc2hvdC0+c2V0U3VyZmFjZShXVEZNb3Zl
KGNvbnZlcnRlZFN1cmZhY2UpKTsKICAgICAgICAgfSk7CkBAIC01OTAyLDcgKzU5MDIsNyBAQCAt
ICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3Q29vcmRpbmF0ZXMgaW50b0lt
YWdlT2ZXaWR0aDooQ0dGbG9hdClpbQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICAgICAgaWYgKCFiaXRtYXApIHsKICAgICAg
ICAgICAgIGNvcGllZENvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBy
b3ZpZGVyLmNwcAppbmRleCAwMDdkMTExYmFkMDdiMDMwY2I5YTgwYTM3YWFjYzk1YjI1ZjkzYzQy
Li45NWIwMmU4M2VlYzAxMDA3ODU3NTlmMGZkNmIyOGQ1Y2ZmZjljZTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyLmNwcApAQCAtODQsOCArODQsOCBAQCB2b2lkIFdlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0
aQogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgc3RhdGlj
X2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXApLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9
OwogICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOwogICAgIGNvcmVQb3NpdGlv
bi5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBSZWZQdHI8V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJv
dmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5nZXQoKSk7CisgICAgYXV0byBwb3NpdGlv
biA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikp
OworICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBv
c2l0aW9uLnB0cigpKTsKIH0KIAogdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3Rp
ZnlFcnJvck9jY3VycmVkKGNvbnN0IGNoYXIqIC8qIG1lc3NhZ2UgKi8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDdhZmE3OWM2MWViY2MwMmVjZmI4ZWY5OWJkZGRlMTM3NTg2MjQxMzMuLmJjZTgwNThlNTllNjM4
NzA0MmRjZDI2OGZhMTk5M2E2Y2Q0Yjc0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xNDU1LDggKzE0NTUs
OCBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9hbGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hv
c3QoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoR19JU19U
TFNfQ0VSVElGSUNBVEUoY2VydGlmaWNhdGUpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGhvc3Qp
OwogCi0gICAgUmVmUHRyPFdlYkNlcnRpZmljYXRlSW5mbz4gd2ViQ2VydGlmaWNhdGVJbmZvID0g
V2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRp
ZmljYXRlLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKLSAgICBjb250
ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KHdlYkNlcnRpZmljYXRlSW5mby5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7Cisg
ICAgYXV0byB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzPigwKSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qod2ViQ2VydGlmaWNhdGVJbmZvLnB0cigp
LCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCBmMTViYTY4ZDFkZmRjYTAwNTZjYzZjZGRmMjdj
ZjZkNzJkMTE2MWQxLi42YTBkNjViZjAxODEyNWE1ZjVjOTAzYTI1NzE2NThjNTBmNmI4NDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1
dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1
dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KaW5kZXggNjdmMTIyMmE3NDZj
NjcyYzY4N2QyYWZiZDI3OGMxZGI1Mzg5OGJjYi4uYzUyMjQ1YjVmMDllMWU4MjgwNGUxODkxZmQ1
NDk5MjBmOGQ3YjYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5t
bQpAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29k
ZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFIYW5kbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0
YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFi
aXRtYXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGM4ODM2NDJiNWRjNTA2YjYyNzY1MTBiNzM0ODVm
Y2Q0NjYyZWY0ODEuLjVmZDVhZjQ5YjRjZDU3YWVhZmYxNjg2Y2FhY2U0YWU1MTMyZmI5NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBA
QCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYg
dXBkYXRlSW5mbykKIHsKICAgICBBU1NFUlQobV9zaXplID09IHVwZGF0ZUluZm8udmlld1NpemUp
OwogICAgIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKICAgICBp
ZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZjVlZTRkZjE4MDQzZDNiNWE2NGIx
MGQ0YzJlNjM3NDBkOTkzOTc3Mi4uMzEzZTE0NTczNTVhZjk3OTg1ZDZiNTYwYTE2Nzk2YmE0YmI0
YjVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQpAQCAtNzQwLDkgKzc0MCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHBhCiAKIHN0
YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIo
V0tXZWJWaWV3ICp3ZWJWaWV3LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBOU0Vycm9y
ICpvcmlnaW5hbEVycm9yKQogewotICAgIFJlZlB0cjxBUEk6OkZyYW1lSGFuZGxlPiBmcmFtZUhh
bmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7
CisgICAgYXV0byBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFt
ZVByb3h5LmZyYW1lSUQoKSk7CiAKLSAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHRO
UyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKCpmcmFtZUhhbmRsZSkgdXJsU3RyaW5n
Om9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktl
eV1dKTsKKyAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJh
bWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBm
cmFtZUhhbmRsZTp3cmFwcGVyKGZyYW1lSGFuZGxlLmdldCgpKSB1cmxTdHJpbmc6b3JpZ2luYWxF
cnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOwogCiAg
ICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHNBbmRLZXlzOnJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpLCBfV0tSZWNvdmVy
eUF0dGVtcHRlckVycm9yS2V5LCBuaWxdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCA5
ZDc3NDEwYzA5YzFiNzExNWE0MDQxZDI5N2JiNDU2ODM4ZWFlOTYwLi42NGEzNWY3ZTg3OWRiMDNk
YzBiZjg3NzIyMTQ0YzIyYmZmM2Q5ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaApAQCAtMTcx
LDcgKzE3MSw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCBmaW5hbDogcHVi
bGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDCiAKIGNsYXNzIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVBy
b3h5Jik7CisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0
ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmlu
ZGV4IDRjOGZjYmY4ZWY3MmUwNTFlOGEyMjkxYjVmNGYxNmZmZGMwMjcwNjcuLjg2NzdhMDQxYzcw
ZDExYjk3Njk4YzQ3ZWMyYjc5YWRmMzFkOTAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0K
QEAgLTI5Miw5ICsyOTIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGlj
dHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpCiAKICNwcmFnbWEgbWFyayAt
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJv
eHkmIHBhZ2UpCitSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CiB9
CiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggYTkyOTlm
MWI3NDY5YjAzYWQyMzQ2MjRiY2QwYjM1NmJjOTI4YjY5Mi4uMjk3Zjk2OGIzNTI5ZTBjMzU1Y2Q0
ZGIxYTg5OWMyMGU4Y2M5MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTExOSw3ICsx
MTksNyBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWwKIAogY2xhc3Mg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0
ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKKyAgICBzdGF0
aWMgUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYs
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KaW5kZXggYTQzOGZlNzFhODZkMzI3Mjg1YWVmNTIxMmZmMzU2MTI2NDI1NmQx
Ni4uNGNmMzBiZjMzMWU3OTQyMWYyMzljY2E1OTYzMTEzOTJmOGY1YTgzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbQpAQCAtMzE0LDkgKzMxNCw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiAKICNwcmFnbWEgbWFyayAtIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkm
IHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KQorUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CiB9
CiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3MTBkZjE5YzQy
NjU4ZjZmNTljN2MxODA3NzcxYWYyMmUyMjNkYzIuLjFkYWQ3MDRlYzk5NmIxZWY5ZDRjMWE5OWIx
NzBiZjc2MjNkMzY4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNTksOCArMTU5LDggQEAgdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKLSAgICBuZXdD
aGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVy
Rm9yVHlwZShidWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRy
KCksIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldE51
bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIG51bWJl
ck9mRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDE1MzY1MDg0MGEwMDM2YjMzNjBkNDA3OTQ0OGVlMDcwNTlhMzEzYjIuLmU0NjNhYzk5
NGJiOWY4YWFjNDRmZTgyOTM4YmUxMzYxNmJiMDU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00Mzc0LDcgKzQzNzQsNyBAQCBSZWZQdHI8
Vmlld1NuYXBzaG90PiBXZWJWaWV3SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCiAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7Cisg
ICAgYXV0byBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkp
OwogICAgIHNuYXBzaG90LT5zZXRWb2xhdGlsZSh0cnVlKTsKIAogICAgIHJldHVybiBzbmFwc2hv
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5TWFwLmNwcAppbmRleCA3NTA5ZGRlZGI0YzA4ZTZiZTg1NGJiN2NlZjcyNWE5NzlkODBk
Y2VlLi44NmRjMDljMzQxZGE3ZjZlYzQxYzZhODJhMzcxZjE3MjcxZjY4YzZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCkBAIC00NiwxMiArNDYsMTIgQEAgRG93bmxvYWRQcm94eU1hcDo6fkRvd25sb2FkUHJveHlN
YXAoKQogCiBEb3dubG9hZFByb3h5KiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFBy
b3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRv
d25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCBy
ZXNvdXJjZVJlcXVlc3QpOwotICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3du
bG9hZElEKCksIGRvd25sb2FkUHJveHkpOworICAgIGF1dG8gZG93bmxvYWRQcm94eSA9IERvd25s
b2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7Cisg
ICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQ
cm94eS5jb3B5UmVmKCkpOwogCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94
eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJv
Y2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCks
IGRvd25sb2FkUHJveHkuZ2V0KCkpOwogCi0gICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7
CisgICAgcmV0dXJuIGRvd25sb2FkUHJveHkucHRyKCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94
eU1hcDo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDc5NjU4NjhiZTA0MzM5
ZTc4NDlmNGRkMzQ0MmM2NGRjOTU2ZTY2OGMuLmZhZTFmM2ZjYTg4ODcxOWJlN2Y2MjcyZDIwNTcy
MGJiODkwMTc3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTk2LDExICs5NiwxMSBAQCBIYXNoTWFwPFN0cmluZywgYm9vbD4gV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
dCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
aXJlY3Rpb24gZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3QgcGFnZU5v
dGlmaWNhdGlvbklEKQogewogICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2Vu
ZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwotICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29u
VVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7
CisgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQpOwogICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlv
bklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0
aW9uSUQpOwogICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRp
b25JRCwgbm90aWZpY2F0aW9uSURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlm
aWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlm
aWNhdGlvbikpOwotICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsICpub3RpZmljYXRpb24p
OworICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2Vf
cGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOworICAg
IG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCAwMjVjOWM2Y2Y1NmNmMjU0MzQ4NzZmZGJkMTY2ZjE0YzA4
ZjgxNTM0Li40NzA4ODEwMGVlMzFkMDdhNjZkN2U5MTU4ZTQ5OTU4YjhkZjg1OWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2NDksMTAgKzM2NDksMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
CiAKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcy0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkp
OwogICAgIAotICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1lUHJv
eHk6OmNyZWF0ZSgqdGhpcywgZnJhbWVJRCk7CisgICAgYXV0byBzdWJGcmFtZSA9IFdlYkZyYW1l
UHJveHk6OmNyZWF0ZSgqdGhpcywgZnJhbWVJRCk7CiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRv
IHRoZSBwcm9jZXNzIHdpZGUgbWFwLgotICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1l
SUQsICpzdWJGcmFtZSk7CisgICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgc3Vi
RnJhbWUuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlV2luZG93KHVp
bnQ2NF90IGZyYW1lSUQsIEdsb2JhbFdpbmRvd0lkZW50aWZpZXImJiB3aW5kb3dJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGZhNDNh
M2QxZTc4MzA5MmJiN2MwMjE4MTQ3ZmQxNjRmODI3YjAzYzAuLjllM2Y0MDRiZDZlNmFiYjNhYjI0
MzlhYmE3MjdjNmI1YzM5YmVmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omdl
dFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+
IHJlcXVlc3QgPSBTdGF0aXN0aWNzUmVxdWVzdDo6Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6
Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBT
dGF0aXN0aWNzUmVxdWVzdDo6Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbikpKTsKIAogICAgIGlmIChzdGF0aXN0aWNzTWFzayAmIFN0YXRp
c3RpY3NSZXF1ZXN0VHlwZVdlYkNvbnRlbnQpCiAgICAgICAgIHJlcXVlc3RXZWJDb250ZW50U3Rh
dGlzdGljcyhyZXF1ZXN0LmdldCgpKTsKQEAgLTE3MjIsMjAgKzE3MjIsMjAgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rp
b248dm9pZCAoQVBJOjoKICAgICAgICAgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKHJlcXVl
c3QuZ2V0KCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0
YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIw
MDA1OT46IE1ha2UgZ2V0dGluZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2Vz
IHdvcmsuCiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlz
dGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
cXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIGdldCBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3Mg
aXMgdW5hdmFpbGFibGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IHJlcXVlc3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgIG1fc3Rh
dGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgIHVpbnQ2NF90IHJl
cXVlc3RJRCA9IHJlcXVlc3QuYWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CisgICAgbV9zdGF0aXN0
aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgJnJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRp
c3RpY3MocmVxdWVzdElEKSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCmluZGV4IDA2MzQzMjQ5YmFhNzI1YWZiNmNiNDQ0YzU1MjMyNTNkMTdlMDgwYmMu
LmU2YjQ0NGU5MTQyN2I5NmNhYTg4NDNhZWIzZmEyMjdjZGQ3YjU0ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDg3LDggKzQ4Nyw4IEBAIGNsYXNzIFdl
YlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UHJvY2Vzc1BvCiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJv
Y2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8pOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgdm9pZCBy
ZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKLSAgICB2b2lk
IHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOworICAgIHZv
aWQgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CisgICAg
dm9pZCByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCA1ZTNmYjY1
YzIzMGRiZDg0ZGFlMzcwMmRkNmRkZjdkMjUzMjQwODlkLi5lM2FlNTE0YjAzN2NlOGY4ODA0OThh
ZmUxMmExZjllYzMxYmE2NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
c3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcApAQCAtMzQsOCArMzQs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pCiB7Ci0gICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5z
UGVybWlzc2lvblJlcXVlc3Q+IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKLSAg
ICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QoKnJlcXVlc3QpKQorICAgIGF1dG8gcmVxdWVzdCA9IEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0
YWlscywgZGVzY3JpcHRpb24pOworICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChyZXF1ZXN0LmdldCgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVxdWVzdC0+ZGVueSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0
ay5jcHAKaW5kZXggODUxNjQzNzBmN2I1MWJmYjA5MTBlYTAwNDFkYmUxMDE0NDI3Zjg2My4uOTJl
YWQwNDVlOGI4ZmMyZTRiOTkzNDQyNmJkMTBhNGE4ZTU5ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCkBAIC01MywxOCArNTMsMTggQEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewogICAgIEFTU0VS
VCghbV93ZWJWaWV3KTsKIAotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMg
PSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4i
KTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmco
KSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQog
ICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBk
ZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+
c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0TG9n
c1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBS
ZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNw
ZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShudWxscHRyKSk7CisgICAgYXV0byBwYWdl
R3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVy
Rm9yUGFnZShudWxscHRyKSk7CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBy
b2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0b3JMZXZlbEZvclBhZ2UobnVs
bHB0cikpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5j
ZXMuZ2V0KCkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3Vw
LmdldCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5j
ZXMucHRyKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3Vw
LnB0cigpKTsKICAgICBtX3dlYlZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlKCpwYWdlQ29uZmlndXJhdGlvbi5wdHIoKSkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChtX3dlYlZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJv
eWVkKSwgdGhpcyk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX3dl
YlZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fd2ViVmlldykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5k
ZXggYjY0ZTMzNTkyOTJiM2ZlZWNmN2U3MmVhYjMwZTBhNmE3MTlmZDM0Yy4uY2ExODdhNjQyMzQx
MTJlODU3OWJkODYxNjJkOWI4M2ZiNDI5YzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xMzgsNyArMTM4LDcg
QEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UoKQogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JWaWV3KTsKIAotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBX
ZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsK
KyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwg
IldlYktpdDIuIiwgIldlYktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAg
IC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1
ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIFdlYlBh
Z2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkK
ICNlbmRpZgogICAgIHByZWZlcmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsKICAg
ICB9KTsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6
OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdl
KCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogCiAgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bv
b2woaW5zcGVjdGlvbkxldmVsKCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdl
R3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdl
R3JvdXAocGFnZUdyb3VwLnB0cigpKTsKICAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VU
KHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCpwYWdlQ29uZmlndXJhdGlvbi5wdHIoKSkpOwogICAg
IGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG1faW5zcGVjdG9yVmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZp
ZXdEZXN0cm95ZWQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IGMxY2Y1ODc1OGVjYmE5ODU3
YTBhNjFhZDQ4ZDZiZmEzZTFjMGQ3ZjMuLjlhNDdlMjY0OWY2OTNjZDJiM2I1NWNlYzIwZTE3M2My
ZmI0YjEzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAg
VVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwogICAgICAg
ICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQo
KSkpOwotICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcj4gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgICAgIGF1
dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2Vi
VmlldyAqdmlld0Zyb21SZXF1ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAgICAgICAgICAg
W3VpRGVsZWdhdGUgX3dlYlZpZXc6dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5mby5nZXQoKSBk
ZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRl
eCAxMTIzNWExMjdlMjc3YTAxODc2MDM4Yzk3NDZmN2Y4ZWQyY2NiYTMxLi45ZmVmZmRkZjQxMDQx
MmU3NmQyYzBjM2RmZDY3YmYxZTFiZDJiMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC0zODQsOSArMzg0LDkgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBj
b25zdCBTaGFyZWFibGVCaXQKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlcikKIHsK
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGF1
dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RG
TW92ZShpbWFnZUJ1ZmZlciksIHRydWUpOwotICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UoaW1hZ2UuZ2V0KCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIGFyY2hpdmVCdWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBtX2ltcGwt
PnNldFByb21pc2VkRGF0YUZvckltYWdlKGltYWdlLnB0cigpLCBmaWxlbmFtZSwgZXh0ZW5zaW9u
LCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJk
TmFtZSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclBy
b3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAKaW5kZXggY2JmZTMwZTllMGJlODMyMTUxODE5NjM1NWY3Nzk4MDhiODI0ZjJmNi4u
Mzc5OGJmYmI1YTljNDE0ZjYwZmRjM2NiZWE5YzdjMGRiM2UwMjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC0x
OTIsNyArMTkyLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0g
ICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpj
cmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVy
ZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxv
cGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0
IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNF
bmFibGVkKHRydWUpOwpAQCAtMjAwLDExICsyMDAsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJl
ZmVyZW5jZXMtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICBwcmVm
ZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7IH0pOwotICAgIFJlZlB0cjxXZWJQ
YWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VH
cm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdy
b3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZv
clBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVsKCkpKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsK
IAogICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50ID0gewogICAg
ICAgICB7IDAsIHRoaXMgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCmluZGV4IDgyNTA5MDE3
OTAwZjQ3ODk0NDllYzVkZWZjNzEyOGExNzVjNjY5OTcuLjkzMTM0M2ViMWJiODczMmVhNWQzYjU0
MjRjNTMwNmM4NDYyZTlhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpAQCAtNTAsOCAr
NTAsOCBAQCAtIChpZClfaW5pdFdpdGhJbXBsOihXZWJDb3JlOjpSYW5nZSopaW1wbAogCiAtIChp
ZClpbml0V2l0aERvY3VtZW50OihXS0RPTURvY3VtZW50ICopZG9jdW1lbnQKIHsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0
Ojp0b1dlYkNvcmVEb2N1bWVudChkb2N1bWVudCkpOwotICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdp
dGhJbXBsOnJhbmdlLmdldCgpXTsKKyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b1dlYkNvcmVEb2N1bWVudChkb2N1bWVudCkpOworICAgIHNlbGYgPSBb
c2VsZiBfaW5pdFdpdGhJbXBsOnJhbmdlLnB0cigpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCmluZGV4IGU5OWYzNTcwZDBlMzBiYWRmZTAxZGFjZmRiM2ZhZjQ1MGU3Y2FlNmYuLjhj
Mjk1YmFlYmZiYTJlMDZiNWI3NjE4NTViZjJlZDk4Mjk5ZmVkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFJl
ZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShT
bmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFp
bnRSZWN0LnNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBi
YWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3Rv
cmVTaXplLCB7IH0pOwogICAgIGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAyMWEzMTIzM2U2ZmM5ZTI4MThhMmZjZmEzMDE5MWE1ZmExNTc4OGI1Li45NTEyMzAy
YjI4MmU0MWVkMWIyNDcxOWEyZDA0NDhkYzc0N2ZmZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYlBhZ2UmIHBhZ2UsIFJhCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5
cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxl
bWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5z
aXplKCkpOwotICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCks
IGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuY3BwCmluZGV4IGVjMDk4NjdiZjAzOGVlNThjOWZlMmQzODc0MDY0ODlk
NjYzYjhkOGUuLjZlMjgyZDllMGI5MGIyOTBlYWEwODk4N2E0MmI4Zjg5OGNhOWIwMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcApAQCAtNzgsMTAgKzc4LDEw
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IEhpCiAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURpZE1v
dmVPdmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdDo6Y3JlYXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1bHQg
PSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7
CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50Lm1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0LmdldCgp
KSwgdG9BUEkobW9kaWZpZXJzKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2Up
LCB0b0FQSShoaXRUZXN0UmVzdWx0LnB0cigpKSwgdG9BUEkobW9kaWZpZXJzKSwgJnVzZXJEYXRh
VG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApp
bmRleCBjNmE1MDY5MTc0MGE1ZGIzZTY1ZjE5NzU3MWI3YmQ0MDA1YmI3MWEwLi44OGMwYTJkOWM2
MzEyZDJjMGVhMDZhNTU3ZjVhMDFlMmMzOWE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CkBAIC03NTEsNyArNzUxLDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVn
aW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBtX3BsdWdpblNp
emU7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKCkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7
CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGNhbGwgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
ciBpbnN0ZWFkIG9mIHNjYWxlLCBidXQgdGhhdCBlbmRzIHVwIGNhbGxpbmcgaW50byBXS1NJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCBjMmNiYTA5MGZiYmRiMmQ5YTE5MGIxYWZmOGZlMzU1Y2Q2ZmMzMjY0Li4wMTk5Yjg0Zjhm
NGUyOGY3NjlhNzQyMTk1MTg4OTEzMWRjODc3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0Myw3ICs5NDMsNyBAQCB2
b2lkIFBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKCkKICAgICBSZXRhaW5QdHI8TlNVUkxS
ZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOm1fc291cmNlVVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0cmlu
Zyopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOmhlYWRlcnNdKTsKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHN5bnRoZXNpemVkUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0
aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAg
YXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5n
KCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZy
YW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2Uu
cmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0
b3JlU2l6ZSA9IHNpemUoKTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2Nh
bGVGYWN0b3IpOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9y
ZVNpemUsIHsgfSk7CiAgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKIAogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFj
dG9yLCAtY29udGVudHNTY2FsZUZhY3RvcikpOwpAQCAtMTg1MywxMSArMTg1Myw3IEBAIHZvaWQg
UERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFt
ZSwgTlNBcnJheSAqaXRlbXMsCiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYWlu
VGV4dFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIHdlYlByb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUs
IHBsYWluVGV4dFN0cmluZy5nZXQoKSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Ci0KLSAgICAgICAgICAgIGlmICghYnVmZmVyKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBt
ZW1jcHkoc2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAzMTQ3OWFmYzI5
YWRmNGFjODUyYmIzY2UzZDgzYzQxMjkyNDdiZmMwLi42NThlY2Q5ZDIzNzg5MDRiMzQ3ZDBkM2E2
ZjQ2N2U5NDRkMmYwNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAK
QEAgLTg0LDggKzg0LDggQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICBpZiAoIUlQQzo6
Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBv
cnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwotICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywg
cGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hy
b25vdXNJbml0aWFsaXphdGlvbik7CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBw
ZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CkBAIC05NCw3
ICs5NCw3IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgICAgIG1fdG9rZW5zQW5kQ29u
bmVjdGlvbnMuc2V0KHBsdWdpblByb2Nlc3NUb2tlbiwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmdldCgpOworICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5wdHIoKTsKIH0K
IAogdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAppbmRleCA4ODVmY2EzZTE0Y2YwNmQwNWM3NGIwM2JiOTRmM2FiYjZiYzkxZDE2Li45NzBl
YTFmZTdjYTk2NDVkZDljNzc3Y2NkNWUzNjJhNjZkZWFkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yNDcsOCArMjQ3LDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKICAgICBp
ZiAoc25hcHNob3RTdG9yZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJldHVybiBzbmFwc2hv
dEJ1ZmZlcjsKKyAgICByZXR1cm4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9y
ZUhhbmRsZSk7CiB9CiAKIGJvb2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NDk1
Yzk5MTEyMmQwODQzZGFiMGM4NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4ZWVl
ODUyNzAwNmNlZWJjOWMzNzFlODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAogICAg
IC8vIFRoaXMgcmVxdWVzdCBpcyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0uCi0g
ICAgUmVmUHRyPFN0cmVhbT4gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhp
cywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRkU3Ry
ZWFtKHN0cmVhbS5nZXQoKSk7CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06
OmNyZWF0ZSh0aGlzLCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsK
KyAgICBhZGRTdHJlYW0oc3RyZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUxNjIy
N2ZhZjc4NjI1NS4uNzhlNjczNTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZQogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRh
KTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0
YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9wYWdl
LmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2Us
IHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUo
KSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdl
KCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFi
YXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlP
cmlnaW4oKSk7CisgICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIGRh
dGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdl
KCkpOwogCiAgICAgaWYgKCFuZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3Mzcs
OCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90
KQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7
Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0gICAg
aWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0ZXNO
ZWVkZWQpKQorICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgm
bV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgpLT5h
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZDA1ZmM5OTZjMWQ0ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4Y2Zj
NGEwNTlmOWVmNzgxZTE0NjExMDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC03NjcsMTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQog
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7Cisg
ICAgYXV0byBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZSht
X2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1l
TmFtZSwgdXNlckRhdGEpOworICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZyYW1l
TmFtZSwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uVXNlKSB7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2VlZjlj
ZjBiZmFmMzRmNjRkYThiMzE2MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3YzM2
Mjk5NDIzYjdjYjhmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNG
b3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBs
eShwYXRobmFtZXMsIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NF
UlQocGF0aG5hbWVzLnNpemUoKSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
ZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
W2ldKSkpCiAgICAgICAgICAgICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFkY2Y5
YWMyM2Q4ZDEzZWJkZjkzYzY3ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4ZDA2
NWVmZmYyNDRmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFj
ZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3Jh
cGhpY3NDb250ZXh0LT5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KaW5kZXggZmZlZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAyZS4u
Zjg3ZDkzNDQzZjdjNThhODJjNDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVs
ZW1lCiAgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoZWxlbWVudCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGlt
YWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBh
MzhjZDJiZjYzNzk0YzhlOWYxZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYzNmNi
NzUyZWY4MTFhMTI0NWViNTVkZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcg
QEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNpdGlv
biA9PSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3Nm
YWRlKQogICAgICAgICBpbmRpY2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNs
dWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxUZXh0
SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KHJhbmdlLCBpbmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBh
dXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2Us
IGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICghdGV4
dEluZGljYXRvcikgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVw
SW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAK
aW5kZXggNzgyNGU1Y2Y3MWI0N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIwMDJi
ODZmNDJhMDFjZjQ4ZTVkZjY5MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyArNDE3
LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoYml0bWFwU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYz
MDkyOWQxZjMuLjYzY2MyODM5MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKCkK
IAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0
ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7Ci0g
ICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0
ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25J
bmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dElu
ZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxk
QW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFpbmRp
Y2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMxNWRm
MTc2ZDYyMGI0NTg5ZGMzNjU5OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZmZDgy
ZWVhNTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hl
ciA9IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBh
Z2UucGFnZUlEKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdT
dG9yZUZsdXNoZXIsIHBhZ2VJRF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUs
IFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFn
ZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAg
TW9ub3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWExODhi
MjRiNjQ0NmQwNTI3ZGY4NjUwZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0YjVh
YjcxOWI3OTgyYzAyYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRM
b2FkZXJEZXRhY2hlZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0
ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1l
KCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAt
PiBib29sIHsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBm
cmFtZSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBiZTZiZWZiODE0Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3ZDdh
N2NjODQ1ZTU1MzJjM2IyMDZlN2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2b2lk
IFdlYlBhZ2U6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmlu
ZyYgdXJsLCBJbnRQb2ludCBkbwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAgICAg
Ly8gRklYTUU6IFNldCBtb2RpZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBw
cm9iYWJseSBzZXQgSXNTaW11bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4gbW91
c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZl
bnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0Nv
bXBvc2VkOjpZZXMsCisgICAgYXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0Nh
bmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3Rvbmlj
VGltZTo6bm93KCksIG51bGxwdHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1lbnRQ
b2ludCwgeyB9LCB7IH0sIDAsIDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxscHRy
KTsKIAotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1l
bnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJl
cjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KTsKKyAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFt
ZURvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LnB0
cigpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5k
UmVmZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQpAQCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25z
dCBXZWIKIAogICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXlbaV0pKSkKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVV
cGxvYWQuYXBwZW5kKGV4dGVuc2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmlu
ZGV4IDBjODRmNjRjOGM2M2VkMWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2YTRj
OWZhZDAxNzFjMTg4M2YwMGNlYmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk0
LDcgKzk0LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFt
ZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dpbmdG
aW5kSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+
IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFt
ZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFy
Z2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgZmlu
ZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
bjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNhbE1h
cmdpbikpOwogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDlkZjYxOGE0ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjEwM2Zl
YTMzZmYxYjExMmM1MzBmNTllNmU1NmNkNThlYjM0ZjFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDE0ICsx
ODIwLDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcm
IG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3Np
dGlvbi5wcmV2aW91cygpOwogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9z
aXRpb24gPSBzdGFydE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0
YXJ0KCkpOwogCi0gICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5n
ZXQoKSkgIT0gb2xkVGV4dCkKKyAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
KHJhbmdlLnB0cigpKSAhPSBvbGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMgY2hh
bmdlZCB1bnRpbCB3ZSBhcmUgZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgogICAgIGZyYW1l
LmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLnB0cigpLCBVUFNUUkVBTSwgV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgIGZyYW1lLmVkaXRv
cigpLmluc2VydFRleHQobmV3VGV4dCwgMCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3Jl
U2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiB9CkBAIC0yMTM2LDE3ICsyMTM2LDE1IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvcikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKmxp
bmtFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rUmFuZ2UpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQ
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OworICAgICAgICAgICAgICAgICAgICAgICAg
UmVmPFJhbmdlPiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZs
b2F0IG1hcmdpbkluUG9pbnRzID0gNDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVu
dCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9w
dGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0
QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdlcyB8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNo
ZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBG
bG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2lu
dHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKGxpbmtSYW5nZS5n
ZXQoKSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRv
ck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3Jv
dW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRl
bnRGb3JDb21wbGV4UmFuZ2VzIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0SW5k
aWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBUZXh0SW5k
aWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdpbkluUG9p
bnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0
b3IpKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRpY2F0b3IgPSB0ZXh0
SW5kaWNhdG9yLT5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvLmxpbmtJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTIxNTYsNyAr
MjE1NCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0
b3JJZGVudGlmaWVyKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0
YURldGVjdG9yUmVzdWx0cyA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVj
dGlvblJlc3VsdHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9u
OjpyZXF1aXJlc0V4dGVuZGVkQ29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVu
dC0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRX
b3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRl
bmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9y
RGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVk
QnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0
aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndh
cmQpLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3
ICsyMTc5LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGlt
YWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0
aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJh
dGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRp
b24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFy
ZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1h
cFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBi
aXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJh
NjZhMjRjMWMxYmRkMTU2ZjJkM2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1
ZjkzZjY0ZTQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
QEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9y
bS5zY2FsZShzY2FsZSk7CiAKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVy
Vmlld0FuaW1hdGlvbkNBID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0
cmFuc2Zvcm0iKTsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0Fu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmlt
YXRpb25DQS5nZXQoKSk7CisgICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1D
QUFuaW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAg
ICByZW5kZXJWaWV3QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gc2hhZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgRmxvYXRQb2ludAogICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50
Wm9vbVRvUGFnZShzY2FsZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRk
QW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRp
b24pOworICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29t
bWl0IiwgcmVuZGVyVmlld0FuaW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXll
cikgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNG
b3JGcmFtZShmcmFtZVZpZXcsIHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4
MDVmZTllNGNiYjVkNzI2ZmYyMjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZk
YzlkMjJmNmI2MDQ0NGIxODA2MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00
MCwyNCArNDAsMjQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxs
cHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVv
dGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
RXBoZW1lcmFsTG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJ
bkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJ
bkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4s
IHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVs
T3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpkaWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAm
IG1hcCkKICAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1Jl
ZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5
cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1l
cmFsTG9jYWxTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBA
QCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwg
OiBwdWJsaWMgU3RvcmFnZUFyZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VN
YXA7CiB9OwogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhl
bWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxM
b2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4p
CiB7CiAgICAgYXV0byYgc2xvdCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNl
Y3VyaXR5T3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQog
ICAgICAgICBzbG90ID0gU3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVh
OjpjcmVhdGUoc2VjdXJpdHlPcmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBz
bG90LmdldCgpOworICAgIEFTU0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBu
ZXdQYWdlKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5
KFBhZ2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApA
QCAtMjAyLDcgKzIwMiw3IEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQo
KSwgbV9xdW90YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFn
ZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3Jh
Z2VUeXBlLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9x
dW90YUluQnl0ZXMpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFj
ZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9z
dG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVz
KSk7CiAKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFz
KQogICAgICAgICBuZXdOYW1lc3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0
KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXgg
ZjEzYTIyZGNiZDIxYjY3NDBlNDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNi
NWE0N2Q3MmVlNWEwNjU1ZTY3NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwx
MCArMzksMTAgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwg
OiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsK
LSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsK
LSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Cisg
ICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwg
flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFn
ZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJD
b3JlOjpQYWdlKikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+
IGVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJik7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3Qg
V2ViQ29yZTo6U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBt
X3N0b3JhZ2VOYW1lc3BhY2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
CmluZGV4IDQ2MmRlODZjNDkwMDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3Yjcy
NzE0YWQ4NzI2NTdlYWY4NDk2ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2
NF90LCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0
X3QgaWRlbnRpZmllcikKIHsKICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVycygpLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KHNsb3QpCi0gICAgICAgIHJldHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAg
ICBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgPSBhZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZp
ZXIpKTsKLSAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1
dG8gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoaWRlbnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIucHRyKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwog
fQpAQCAtNjUsMjIgKzY1LDIyIEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygp
LnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFn
ZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2Us
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgm
cGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExl
dmVsT3JpZ2luLCBxdW90YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmlu
ZGV4IDhlYTI1ZTZlNzUwOWViMmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4
ZTgwMzg5NjgxMTRlZjk5YWMyNWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oCkBAIC0zMSwxNiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUo
dWludDY0X3QgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2Um
LCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWdu
ZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CiAKICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5tbQppbmRleCBjZjMwODViODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1
OTg2MzI1MmJmZTRmYThjMWUxMjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpA
QCAtMjAyLDkgKzIwMiw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0
ZSgpCiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4
dElkKQogewotICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9k
ZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBt
b2RlbC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7
CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KaW5kZXggN2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2
ZS4uNWQ2MTEwYjc5MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KQEAgLTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
aW52YWxpZGF0ZSgpCiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVw
bGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKQogewotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudD4gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElk
KTsKKyAgICBhdXRvIG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFu
YWdlci0+YWRkQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5z
ZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsK
KyAgICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAKaW5kZXggMDE4MTVjMTNhYzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uODZkYjJk
ODcxOGE1NGIyZjZjMjY1M2Y5M2MwYWFlOWIyYjlmZDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSAr
OTMsMzEgQEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAg
ICAgICAgIGNsb3NlKCk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weShQYWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weShQYWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBT
dG9yYWdlVHlwZTo6U2Vzc2lvbiB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhl
bWVyYWxMb2NhbCk7CiAKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVz
cGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBt
X3BhdGgsIG1fcXVvdGEpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAg
ICAgZm9yIChhdXRvJiBpdGVyIDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNw
YWNlLT5tX3N0b3JhZ2VBcmVhTWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsK
IAogICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U3Rv
cmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKICAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9y
YWdlQXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAg
ICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICBzdG9yYWdl
QXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9z
eW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CiAgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3Jp
Z2luLCBzdG9yYWdlQXJlYS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIHJl
dHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2
NWE5NjY2MTYxMzcuLmM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCkBAIC01Nyw4ICs1Nyw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGlj
IFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNw
YWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25l
ZCBxdW90YSk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJ
bXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1h
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2
ZDY3N2M4ODRhYmQ5ZS4uODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMo
KQogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
IHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
IHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlv
biB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBw
aWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKaW5kZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3
N2FiYi4uZTU4OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmly
dHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBj
bG9zZUxvY2FsU3RvcmFnZSgpOwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5jcHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3
ZDFhNjIxM2I5ZC4uNjNjYWUyZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3Vw
LmNwcApAQCAtNDIsMTggKzQyLDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdl
YlZpZXdHcm91cD4+JiB3ZWJWaWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsK
IH0KIAotUmVmUHRyPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQor
UmVmPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3Jv
dXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCkpOwogCiAgICAgYXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChu
YW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0g
ICAgICAgIHdlYlZpZXdHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9z
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5
KCkpCisgICAgaWYgKCF3ZWJWaWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsK
KyAgICAgICAgd2ViVmlld0dyb3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5p
c0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGg7CiAKLSAgICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2Vi
Vmlld0dyb3VwOwogfQogCiBXZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0
cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5oCmluZGV4IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJi
NWYuLjRkNDEzN2NlMmFhYWMzYTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgs
NyArMzgsNyBAQCBPQkpDX0NMQVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdH
cm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGlj
IFdlYlZpZXdHcm91cCogZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmNwcAppbmRleCBkMDg0OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44
MDQ5YjFjY2MyNzJjMzQ3MjU5OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKQEAgLTI2LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVu
dCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkK
IHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0g
ICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAK
IHZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmgKaW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5
ODc5YWY0Zi4uMGVmNDRiNDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51
SU9TIDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVk
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1
cDsKKyAgICBSZWY8UG9wdXBNZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJj
aFBvcHVwTWVudUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRm
MGU2YjlhNWU2ODlmYzE5Yzg3Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYy
ZjMyYTEzNjFmNjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4
IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJu
YXRpdmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IG1hcmtlckFsdGVybmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBb
KE5TTXV0YWJsZUFycmF5ICopKmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1h
cmtlckFsdGVybmF0aXZlc1tqXSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+
c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtl
ci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdl
ICopZW5jbG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVu
dE1hcmtlciogbWFya2VyID0gbWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRP
ZmZzZXQoKSA8PSBvZmZzZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBu
b2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
LCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFu
Z2UucHRyKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5
NmE2NDk2YzJjNDQ2MDk5MmM1YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4
ZDlmMzRiOWMwOTYyOTNkYzM2Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0
NjUsMTMgQEAgLSAodm9pZClzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAg
ICAgaWYgKCFVUkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQg
PSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6
WWVzLAorICAgIGF1dG8gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
LCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwg
bnVsbHB0ciwgMSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxs
cHRyLCBNb3VzZUV2ZW50OjpJc1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhl
IGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBh
cmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0p
OwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1l
bnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJy
ZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAg
SW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9h
ZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVs
bHB0cik7CisgICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFt
ZUxvYWRSZXF1ZXN0KSwgZXZlbnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVl
M2FhOGY0YWQ0Li4xYjZjODIyODU0YTA3ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdl
dFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0Fy
cmF5ICoqKXJlY3RzCiAgICAgUmVmPFJhbmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2Rl
KTsKIAogICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgp
LT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdo
dGx5Rml0Q29udGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENv
bG9yIHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAg
ICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50
Rm9yQ29tcGxleFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpp
bmRleCAxZjMyZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li5hMDRiYzU1N2Jm
ZGRjOTc2ZmQxODA1YWZlYjc4NjViNGQxMjdhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdp
bgogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdp
dGhQcm9wZXJ0eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEp
OwogICAgIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNl
ID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5W
aWV3LCBmdWxsRnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAg
dWludDMyX3QgcmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJu
X3JldHVybl90IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwg
cmVxdWVzdElELCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEg
Ynl0ZXNdKSksIFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAo
a3IgPT0gTUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpAQCAtMjk5LDcgKzI5OSw3IEBAIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6
Omluc3RhbnRpYXRlUGx1Z2luCiAgICAgaW5zdGFuY2UtPnNldFJlbmRlckNvbnRleHRJRChyZXBs
eS0+bV9yZW5kZXJDb250ZXh0SUQpOwogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJlclR5cGUocmVw
bHktPm1fcmVuZGVyZXJUeXBlKTsKIAotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICByZXR1cm4g
V1RGTW92ZShpbnN0YW5jZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eXBl
X3QgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggODgzYjkyMDcyMDdl
MjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMi4uYWJjYTZiYmUzMzA1MzVhOTgyZTY0MmQ0YzJh
MTg4YTdiOGE4YjdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtNzE5LDggKzcxOSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgIC8v
IERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhl
cmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMu
CiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVl
c3QoKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0p
OworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVl
c3QoKSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0u
Y29weVJlZigpKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC03OTksMTAg
Kzc5OSwxMCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVl
c3QoTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaAogICAgICAgICBtX3BsdWdpblJlcXVl
c3RzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblJlcXVlc3QpKTsKICAgICAgICAgbV9yZXF1ZXN0VGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEhvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgICAgIGF1dG8gc3RyZWFt
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJl
cXVlc3QpOwogCiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkp
OwotICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtKTsKKyAgICAgICAgbV9z
dHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0t
PnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5YTc0NWQ5MzgzZjc0
NDdmNTQyZGY1MDQ1ZTI0NDViMzg1M2UwODgwLi4xZDFlOGFlZjY3NTIzNjFmM2VjYzA0NjUwNWQ0
NjU3YzI1NDZiNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgLSAo
dm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICop
SlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgIC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQg
b3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIu
IFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jl
c3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAot
ICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxd
LCBwbHVnaW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJl
cXVlc3Qgbm90aWZ5RGF0YV0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVn
aW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qg
bm90aWZ5RGF0YV0pOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVS
TCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTE2Nzgs
OSArMTY3OCw5IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3Qg
KilyZXF1ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAgICAgICAgIFtzZWxmIHBlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IobG9hZFBsdWdpblJlcXVlc3Q6KSB3aXRoT2JqZWN0OnBsdWdp
blJlcXVlc3QgYWZ0ZXJEZWxheTowXTsKICAgICAgICAgW3BsdWdpblJlcXVlc3QgcmVsZWFzZV07
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBz
dHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwg
c2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEpOwogCi0gICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5nZXQoKSk7
CisgICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0t
PnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCA5
NmVmOTIxZmQ2MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiLi4yMzQ3ODFiMGJlODZhNGJk
YTUwYzBjZTU2NDg0MjIzODhiNDJiZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpA
QCAtMjA3LDggKzIwNyw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVu
dDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lVmlldy0+
ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlv
bjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRv
Tm90U2V0Rm9jdXMpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3Vt
ZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIGZy
YW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWlu
dEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZp
b3I6OlNlbGVjdGlvbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBlYzhl
NThjZjIwN2JiY2IwNDgyMmVkMmIxNWRlYWQwNjc2MmE1NjdkLi44NDYwYjAzZjUwYzdjMmIxM2Ex
N2VmZTRjODM4ZmI3YjkyMTkwZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAt
MTQ2NSw3ICsxNDY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIGNvcmVGcmFtZS0+
dmlldygpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0UGFyZW50VmlzaWJsZShmYWxz
ZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwotICAgIFJlZlB0cjxGcmFtZVZp
ZXc+IGNvcmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CisgICAgYXV0byBj
b3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwogICAgIGNvcmVGcmFtZS0+
c2V0Vmlldyhjb3JlVmlldy5jb3B5UmVmKCkpOwogCiAgICAgW21fd2ViRnJhbWUuZ2V0KCkgX3Vw
ZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW5dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2I5YmI4OTkwOGFlNWMxYTY1MmUz
NmNjODg5YmUwNGU1NjU0Yzk0Ni4uYTkzZGVmNjEzOTlhNWNjNTRlZjYxY2FlOWMwMzc5OTA1ODkw
Y2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC0xNzQ2LDggKzE3NDYsOCBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNB
cnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAgICAg
aWYgKCFtZXRhZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50
LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkp
OwotICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CiAgICAgICAg
ICAgICAgICAgW21ldGFkYXRhcyBhZGRPYmplY3Q6bWV0YWRhdGFdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOWMzYzJiYjk5Y2MwYzZj
ZDMwNTM3OThkZGI2NjQ0YzllN2RiODE0Mi4uNGE4NmM3OTQ1NWZiMzZkMGM1YmViZmIzOTBjZTg0
NjNmZWIyNDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAtICh2b2lkKV93cml0ZVNlbGVjdGlvbldp
dGhQYXN0ZWJvYXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdAog
ewogICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmIChbdHlwZXMgY29u
dGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVG
cm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CisgICAgICAgIGlmIChhdXRvIGNv
cmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtz
ZWxmIF9mcmFtZV0pKSkgewogICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEgPSBjb3JlQXJjaGl2ZSA/IGNvcmVBcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSA6
IDApCiAgICAgICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSBmb3JUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDVlYjk1NzUy
ODJjMWI2NTNkY2JjOWFhNmE0N2VkNzBjMDVlN2Q1ZWYuLjRmOTBmNjM5Mzk3NDEyNjk3NjhkNjMw
MzZjYjBkM2IwZDMwYzkxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTQ3MjksOCArNDcyOSw2IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dy
b3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRP
ckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc1NCw4
ICs0NzUyLDYgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAq
KWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwg
U3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDVjMDc3MTIxMWVhZWQ2NDkwNzNl
MTAzZTkwNGE1ZWM5MDQ5YjQ2M2YuLmJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4
ZjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVm
cmVzaCgpCiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6
OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBhdXRvIHBhY2thZ2Ug
PSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKICAgICAg
ICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAg
ICAgICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBmODU1ZGQyNjNmNzljZGZkNDFi
NjQ2NTk1MDIyYThjNDRjY2EyZjQ1Li5lZjBhMmUyMGI0MTM3NjYwZjI3YmU1YmE0ZmFjY2JmYjBm
NjI0YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQo
RG9jdW1lbnQmKQogewogICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwogICAgIGlmICghc3RhcnQo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbih0aGlz
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbigqdGhp
cyk7CiB9CiAKIFBsdWdpblZpZXc6On5QbHVnaW5WaWV3KCkKQEAgLTQxMCw4ICs0MTAsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAg
ICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3Ry
ZWFtIGZvciBpdC4gb3RoZXJ3aXNlLAogICAgICAgICAvLyBqdXN0IHBhc3MgaXQgb2ZmIHRvIHRo
ZSBsb2FkZXIKICAgICAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRl
KHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5u
b3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdp
bi0+cXVpcmtzKCkpOwotICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOworICAgICAg
ICAgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZy
YW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVn
aW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAg
ICAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBz
dHJlYW0tPnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUg
dGFyZ2V0IGZyYW1lIGlzIG91ciBmcmFtZSwgd2UgY291bGQgZGVzdHJveSB0aGUKQEAgLTQ1NCw4
ICs0NTQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3Qq
IHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgY3N0ciA9IHJlc3VsdFN0cmluZy51dGY4KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5T
dHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxv
YWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24o
KSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFu
Y2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0p
OworICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFy
ZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCks
IHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkp
OworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJl
YW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlcXVlc3RVUkwsIGNzdHIpOwogICAgIH0KIH0KQEAg
LTY5MCwxMSArNjkwLDExIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1Z2lu
Vmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRvIHJvb3QgPSBtX3BhcmVu
dEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwotICAgIFJlZlB0cjxKU0M6
OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6
OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6
OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOwogCiAg
ICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7Cisg
ICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApp
bmRleCA3Y2ZjN2E5YTgyZTcyYzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5ZjRlLi5iNWI2MGE4MDk5
MWQ2MDcxMGI4NzA2MzAyNDAyMWQ2NTA5MDYzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzE3LDcgKzMxNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBWZWN0b3I8Ym9vbCwgND4gbV9wb3B1cFN0YXRlU3RhY2s7CiAK
LSAgICAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPiA+IG1fc3RyZWFtczsKKyAgICAg
ICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPj4gbV9zdHJlYW1zOwogICAgICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFBsdWdpblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogCiAgICAgICAg
IGJvb2wgbV9pc1dpbmRvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE5
M2UwMmIwNTAxOGVmNThmZTQxNmZjYmZiNjc1ZWRlM2ZjNTg5NmMuLjUwYWNmNzc5ZGQ2YjU0NDg0
ODQ4ZWNjMjVjMTg2NDhiOTk2YWI3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTEwNjEsNyArMTA2MSw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZXR1cm4g
V2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyog
cGx1Z2luVmlldykgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyYgcGx1Z2luVmlldykgY29uc3QKIHsK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkBAIC0xMDcy
LDIzICsxMDcyLDIzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93
ZWJGcmFtZSk7Ci0gICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkp
OworICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LnBhcmVudEZyYW1lKCkpOwogCi0gICAg
aWYgKCFwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTCBw
bHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAg
aWYgKCFwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKSkpOwogICAgICAg
ICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAg
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNU
UlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKICAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblBh
Z2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoIXBsdWdpblZpZXctPm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAo
IXBsdWdpblZpZXcubWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdl
YktpdEVycm9yTUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2Vy
SW5mby5nZXQoKSwga2V5LCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5
LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnaW5O
YW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKKyAgICBpZiAocGx1Z2luVmlldy5w
bHVnaW4oKSkgeworICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2lu
KCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3
KiBwbHVnaW4KICAKICAgICBpbnQgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcgZGVzY3JpcHRp
b247Ci0gICAgc3dpdGNoIChwbHVnaW5WaWV3LT5zdGF0dXMoKSkgeworICAgIHN3aXRjaCAocGx1
Z2luVmlldy5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIFBsdWdpblN0YXR1c0Nhbk5vdEZpbmRQ
bHVnaW46CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVn
SW47CiAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFdFQl9VSV9TVFJJTkcoIlRoZSBwbHVnLWlu
IGNhblx4RTJceDgwXHg5OXQgYmUgZm91bmQiLCAiV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z2lu
IGRlc2NyaXB0aW9uIik7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBs
dWdpbgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVz
b3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9y
Q29kZSwgcGx1Z2luVmlldy0+dXJsKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJl
c291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5W
aWV3LnVybCgpLCBTdHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRvcHRD
T00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0JhZy5n
ZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVkV2l0
aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgRnJh
bWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1
Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQs
IHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOwor
ICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6
ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2Fk
TWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0YXR1
c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0xMTgw
LDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1Bs
dWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFt
ZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMs
ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luVmll
dyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxl
bWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZh
LWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxv
YWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2lu
Vmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY4
ZDc0ODg1ZjA2YzU0YTQzMzg3NjkzMzM4YzBlMDYzMjRkOThhY2IuLjJmYmFiNzljNzBkMDIxNGU4
NGYwN2U4ZGJlOGFkNDcxOGMxYzc5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgc2V0V2ViRnJh
bWUoV2ViRnJhbWUqIHdlYkZyYW1lKSB7IG1fd2ViRnJhbWUgPSB3ZWJGcmFtZTsgfQogICAgIFdl
YkZyYW1lKiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJhbWU7IH0KIAotICAgIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5WaWV3
KikgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdl
YkNvcmU6OlBsdWdpblZpZXcmKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCBj
MDMyNDJjN2Q2YjYyZDhmYzYzNWQ5YTBkN2JkNmU1ZDdjMjU5ZmVkLi40NWU0YTU3YjVhOGJhYzJk
YTdiNDRlNGRmYmY4MjFjYWVmMGFiOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC01NjQsNyArNTY0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0lu
X29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJT
VFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBC
U1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJp
bmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUp
CkBAIC02MTAsNyArNjEwLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8g
SVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKIAogSFJFU1VMVCBX
ZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJT
VFIgdXJsKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVv
ZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRl
eHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwogICAgIEJTdHJp
bmcgcGxhaW5UZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAgICAgQlN0cmlu
ZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShXVEZNb3Zl
KHNoYXJlZEJ1ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5nLCB1cmwsIG51
bGxwdHIpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRl
eHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIAogdm9pZCBXZWJG
cmFtZTo6bG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8gQlNUUiBiYXNl
VVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0cmlu
ZykpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdM
ZW4oaHRtbFN0cmluZykpOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYtMTYi
KSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1dGYxNkVuY29k
aW5nLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuaAppbmRleCAxYmFkZDAxYzNhNzY0MGNjZjExMzA0YTQzNWE3YjFlMjQ1MTE1ZmRlLi41MDJj
YTg5ZGY2YjkwZDBhMjc3ZDc5YjFiYjU5ODcxYjVkMTE0MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmgKQEAgLTE5OSw3ICsxOTksNyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7QTM2
NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIGZpbmFsIDogcAog
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBf
SW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxv
YWREYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOworICAg
IHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7
CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhE
QyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3Jp
Z2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RW
aWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBm
bG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCmluZGV4IDk0MDc3OTEyYTk5MTY0MTE3ZDBj
NjgxY2NjYzA2Njg2ZTA0YzRkZTAuLmY5YWI4M2I1MWNhMzIzZWJlNzFmNTUwMjY3OTJkYmY2MzUz
NDMzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKQEAgLTE4Nyw5ICsxODcsOSBAQCBDQVZp
ZXc6On5DQVZpZXcoKQogICAgIG1lc3NhZ2VXaW5kb3cgPSBudWxscHRyOwogfQogCi1SZWZQdHI8
Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24pCitS
ZWY8Q0FWaWV3PiBDQVZpZXc6OmNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24p
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDQVZpZXcoZGVzdGluYXRpb24pKTsKIH0KIAogdm9pZCBDQVZp
ZXc6OnNldENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayhDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2tG
dW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCmluZGV4IDQ1
YjY0ZWMwMTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMuLjcyOTYzYmUzZGJiYzQzMjhm
NTU3OWE2ZGE1NzBjNjJjNWY0ODkwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApAQCAtNDgsNyAr
NDgsNyBAQCBjbGFzcyBDQVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxDQVZpZXc+LCBwcml2YXRl
IENWRGlzcGxheUxpbmtDbGllbnQgewogCiAgICAgY2xhc3MgSGFuZGxlOwogCi0gICAgc3RhdGlj
IFJlZlB0cjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOworICAgIHN0YXRpYyBS
ZWY8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKICAgICB+Q0FWaWV3KCk7CiAK
ICAgICB0eXBlZGVmIHZvaWQgKCpDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2tGdW5jdGlvbikoQ0FW
aWV3Kiwgdm9pZCogaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApp
bmRleCBiMTU0ODI0Y2U0NDgzYzdkZDllNjMxYmFkMWIxMzk4NDU3ZjQ5ZmM1Li5hYWJkMTk4YjEx
MTVlZDdlNjVhZDgzMDg1NDE2MTljZDQxNTg0MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAgQ1ZEaXNwbGF5TGluazo6fkNWRGlzcGxh
eUxpbmsoKQogICAgIDo6Q2xvc2VIYW5kbGUobV93YWtldXBFdmVudCk7CiB9CiAKLVJlZlB0cjxD
VkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCog
Y2xpZW50KQorUmVmPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3Bs
YXlMaW5rQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDVkRpc3Bs
YXlMaW5rKGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENWRGlzcGxheUxpbmso
Y2xpZW50KSk7CiB9CiAKIHZvaWQgQ1ZEaXNwbGF5TGluazo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3Bs
YXlMaW5rLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NWRGlzcGxheUxpbmsuaAppbmRleCAwYWUwMmYxNjllYzgyODkxMjY2MWVmYTczOGM4NGZi
N2M0NDQyMjgzLi5jYTAyNmFmZWFjNDE1ZDcxODc0NzhlODczNzVhMjcxMDk5ZjQwY2NiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0NWRGlzcGxheUxpbmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBD
VkRpc3BsYXlMaW5rQ2xpZW50OwogLy8gRklYTUUgODc2OTE4MTogUmVwbGFjZSB0aGlzIHdpdGgg
Q1ZEaXNwbGF5TGlua1JlZgogY2xhc3MgQ1ZEaXNwbGF5TGluayA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDVkRpc3BsYXlMaW5rPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxD
VkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOworICAgIHN0YXRpYyBS
ZWY8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsKICAgICB+Q1ZE
aXNwbGF5TGluaygpOwogCiAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9J
bWFnZUNvbnZlcnNpb24uY3BwCmluZGV4IGRjNjY3MGQ0MzNmZjA5ZTBkMTE2NjVkYzA1NTNiMjE2
ZGZiMjYwMGMuLmNmOTIxODVhMTBkYjk0NmQwNmJiNGJkNDgwYzY5ZmRlYzM0NjA0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
SW1hZ2VDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
c3RhdGljIEhSRVNVTFQgZ2V0SW1hZ2VDb3B5KElEaXJlY3QzRFN1cmZhY2U5KiBzeXN0ZW1NZW1v
cnlTdXJmYWNlLCBSZWZQdHI8SW1hZ2UKIAogICAgIENTaXplIHN1cmZhY2VTaXplKGRlc2MuV2lk
dGgsIGRlc2MuSGVpZ2h0KTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZTo6Y3Jl
YXRlKHN1cmZhY2VTaXplKTsKKyAgICBhdXRvIGltYWdlID0gSW1hZ2U6OmNyZWF0ZShzdXJmYWNl
U2l6ZSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlOGJkZGViZjI2MjZmNWNjYWQ4ZDRhY2VkNTcz
M2U3MjcyMmFlZWI3Li5mYmMwNGRlNjU5Nzg5OGIwNWQyMmE0ZTU3M2EyNGVkNTYxOTc5ODM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNjkxMiw4ICs2OTEyLDYgQEAgSFJF
U1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBf
SW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGF1dG8g
dmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3RyaW5nKCkpOwot
ICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYgKCFp
V29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC02OTQxLDggKzY5MzksNiBAQCBI
UkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBO
YW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0
byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7
Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAo
IWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357563</attachid>
            <date>2018-12-18 06:07:59 -0800</date>
            <delta_ts>2018-12-18 06:28:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218230758.patch</filename>
            <type>text/plain</type>
            <size>407753</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi43ZDQzNTcwMTZiYmNhMzZkMjgyOTNmMmQ4MTU2ODU5YzE0Nzk2ZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCiBSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZy
YW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRo
ZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUg
dG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1l
PiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7
CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUs
IG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFt
ZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2
ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2
YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGlj
IGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFu
Y2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUp
OwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2
OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBi
NDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJi
NzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25z
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5
T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2
NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQg
RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVu
dCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7
CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50
LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50Ojpj
cmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBA
IC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3Vy
cmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCkt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWlu
VGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZz
ZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5U
ZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRh
dGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUo
KSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9u
c0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhl
IGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwg
b3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnBy
ZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwg
YWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFm
dGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5n
VGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290
Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0
KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwor
ICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtl
clJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2
YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYs
OCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAg
ICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJ
biIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0
KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91
dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAq
cGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEz
ZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVv
ZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1
ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4
OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAg
Ly8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5k
ZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZy
YW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1
cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBs
ZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5u
ZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVz
cG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMx
OGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0
NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxl
cjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAg
UmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJl
ck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBt
YWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1v
cnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3
NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUp
OwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwg
YXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgy
NWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIz
MDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0
cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/
IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdl
J2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJl
ck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1
ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZj
YjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRl
eCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQw
ZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZv
cm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZh
dGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBk
ZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4
Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmFmMGE3Y2M3N2JmMjkyY2Rm
ZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsx
ODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGlu
aXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBr
ZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25l
ZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
NCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERh
dGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
MCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAg
YXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5p
dERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAg
IGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsOCArMTkwOCw4IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKLSAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKKyAgICBhdXRvIHJlc291
cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2
UmVxdWVzdCk7CisgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjExYTkuLjFhNGIxODFhYWNiODk2
MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJh
Y2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDA1
Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4uMzEwNzgwYzNhY2FiZDgxNTU1
YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgogCiAgICAgICAgIEFTU0VSVChz
dGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICAgICAgQVNTRVJU
KGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKLSAgICAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlcXVlc3RlZEtleURhdGEt
PmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxlbmd0aCgpXSk7CiAgICAgICAg
IFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKICAgICB9CkBAIC0x
ODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKLSAgICBt
X3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVz
b3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5
UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFh
Li4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgxZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUwODRjOTBkNWZkNzdlNjZl
YmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2NWYxMWY3YTUwN2UwODg5MmVk
OTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
Ci1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50
LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1JlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBtZWRp
YVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhw
YXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1lZGlhU291
cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZigqbmV3
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQpKTsKKyAgICBjbGllbnQt
PnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5jb3B5UmVmKCkpOwogICAgIHJl
dHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIG5ld1NvdXJj
ZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAjZW5kaWYKLSAg
ICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91dFByaXZhdGUgPSBuZXdTb3Vy
Y2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShu
ZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDgzMDBkYzNiNmUz
OWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIzNGI5YjVhMGFkZThjMjc1NDdh
NDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOwogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGE5OWZlYjdm
NjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2MzY2MGQ5YWVkY2M4OWU2YjUy
MzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyArNDMwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgc3RhdGlj
IFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsg
fQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9CkBAIC00
ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QKICAgICAgICAgc291cmNlQnVm
ZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIAogICAgICAg
ICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAg
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMp
OwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7Ci0gICAgICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAg
ICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5m
bzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2s7Ci0g
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2su
Y29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tz
LmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZjQ1
NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4uNWRkN2U2MjMwZmU4ZTA1YjRm
ZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICBib29sIHNl
bGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODBjZmM0ZmFjMzQ1Yzky
ZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIxMjNhZWIzNDZlYTM5MmFlMDQz
ODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIGludCBUaWxlQ29u
dHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX21hcmdpblNp
emUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQoKS5zY2FsZSgpOwogfQogCi1S
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkKK1JlZjxQbGF0Zm9ybUNBTGF5
ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVy
ID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0
aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVh
dGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CiAKICAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIGxheWVyLT5zZXRQb3Np
dGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGFlMTliOGM1MTcxZmQ1NzQx
YTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5MDA1MTY1MjBkNWEwNjc1MjBh
YzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFRpbGVDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxh
eWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKIAogICAgIGNvbnN0
IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVHcmlkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3OGQxZDczNWNlNDkxYjNhZGE5
YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1NWExZDliNmVlMDgxNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgQ0FDRkxh
eWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
aG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgYXZh
aWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDQwNmUwODVmZmYx
ZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRiZTE0Mjk1MzgxYjQzMzI1YzBj
YzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTU1LDExICs1NSwx
MSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZv
aWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIp
OwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAgICBBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOworICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7CiAgICAgLy8gRklYTUU6IERl
ZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0
ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKQogICAgICAgICBu
ZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5NDc2OGRjMWE5MmEy
ZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdmYTExZjdhNThkZWZmNGE5ODI0
MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBW
aWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7
Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBhdXRvIHRy
YWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0lu
ZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklO
RygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZC51dGY4
KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwg
cGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFt
SWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwg
dHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdl
SW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsKQEAgLTk2OCw3ICs5NjgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFk
KTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAgICAgbV9wbGF5ZXItPmFkZEF1
ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7
Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgbV9w
bGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7CisgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFRl
eHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAgICAgICAgaWYgKGdzdF9pc19t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICBpZiAoZ3N0X2lu
c3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbWlzc2luZ1BsdWdp
bkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3Vs
dCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3Np
bmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1dG8gbWlzc2luZ1BsdWdpbkNh
bGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6
OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3VsdCwg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1pc3NpbmcgcGx1Z2luZyBpbnN0
YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3aXRoIHJlc3VsdCAldSIsIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEzLDEwICsxMzEz
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5D
YWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNz
YWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9k
ZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgp
LnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgKm1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6
OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1BsdWdpbkNhbGxiYWNrLmdldCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlv
biogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qPihnX3B0cl9hcnJheV9pbmRl
eChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChzdHJlYW0tPnN0cmVhbV90eXBl
ID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0cmVhbS0+cGlkKTsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRhdGEsIHBpZCk7
CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQg
dHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVy
bCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKG5ld1Vy
bCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRkOWJkZGYyYjc3ODM4NmNiOWI2
MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2ZkYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODc4
LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAgYXV0byBnc3RJbWFnZSA9IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4MGFkODMxMDguLmQwOTI5MjBj
MjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBw
c2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IG1lZGlhU2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSks
IG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1f
cHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0
cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICBtZWRpYVNhbXBsZS0+YXBw
bHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB9CiAKLSAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlhU2FtcGxlKTsKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUuZ2V0KCkpOwog
fQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRhYmRiNTQ1ZDA3ZS4uNmU0YjY0
ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0
ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXplKDE2KTsKQEAgLTYzLDggKzYw
LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRL
ZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1cnJlbnRLZXlJRC5yZXNpemUo
MTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZEtleUlEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNldCArPSAxNjsKICAgICAgICAg
ICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRLZXlJRC0+ZGF0YSgpLCAxNik7
CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAg
ICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBkYXRhU2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWREYXRhKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAKICAgICBtX2RhdGEucmVzaXpl
KGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKaW5kZXggNTdhNTY5NGQ1ZWFl
MTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNjYzFiNzYxNzVkOTIzODg2MjZm
MTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKQEAgLTY0LDkgKzY0
LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGtleUlE
QnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBpZiAoIWtl
eUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7CiAK
ICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFhMjdlYzg0MDZiZTA3NDFmLi4w
MWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIEZpbHRlck9w
ZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpdHlPcCA9IFBhc3N0aHJv
dWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+
IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8g
ZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2MTFiYjI2ZGM0NDJlMjdjOGYu
LjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIHRleHR1cmUgPSBC
aXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwogICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJhZGRkYjJkYTE5MjVhMzUzZjcz
YmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFmNGU2ZDJlYzdiMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTg3LDExICs4NywxMSBAQCBU
cmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGlk
ZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3Bl
cmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50
aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBpZGVu
dGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0
aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMwMTUzYy4uMDZjMGExOWYzMGQz
OWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBDb3B5IG91dCBQTkcgZGF0YSB0
byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5HIGRlY29kZXIuCiAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0byB0
YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
LSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKHBu
Z0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2
ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2YjhkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
QEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CiAKICAg
ICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAgICAgICBpZiAoTW9ja0JveDo6
cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAgICAg
ICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9j
a0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLnB0
cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0aCgpOwogICAgICAgICBtX3Ry
YWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUwMDIyMjc3YTgzMzg3ZWMzN2Fm
ZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJjZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBSZWY8TWVk
aWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYURlc2NyaXB0aW9u
PiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tN
ZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQpAQCAtMTE4LDkgKzExOCw5
IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAKLVJlZlB0cjxNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUo
cGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCkBAIC0xNDIsMTcgKzE0Miwx
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgp
LCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2Nr
Qm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVl
a1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0luaXRpYWxpemF0
aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0
Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBN
b2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChp
bml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUo
KSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1v
Y2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUo
c2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRlY2U2YWIzM2I1ZTg3YTUyNzI1
MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5ODI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGZpbmFsIDogcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7Cisg
ICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2YjgzMGZiZTBiNjAzZmQyZGJhZDBj
Li5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIyMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tU
ZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQogICAg
IHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwg
fk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBkZTUwNzgzYmZiNDc3MjRiZjU5
OTE5YWI2NmY5MWQuLmM0OWY0MjE3ODEyMGE0YzNkMmI0ZDMwMjY4NGIyZDgzYWYxZjQ2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzE5LDcgKzMxOSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gV1RGTW92ZShkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4
ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3
ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2llU3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2ll
U3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRl
KE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgQ29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRU
UENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkxODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRi
NDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTczODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3Rv
cmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBAIC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVT
dG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVh
dGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
IH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRl
eCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJjY2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2
Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1Nv
dXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxl
TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
ICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNT
aW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMu
c2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVz
c2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwg
Ynl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZp
bGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5
ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0
aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
ewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAg
IHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFy
eT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAg
ICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlwaGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZlNmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1
YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1l
bnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdp
bjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4g
bV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmlu
ZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdiMTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1
YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBt
X3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNh
YzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uZWUxZTIyNjgzMWNmNjQ5N2MwNGRmM2I1MDc3YWQ3
NTc5ODg1ZTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9y
ZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9p
ZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRl
clN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsMTIgKzkxNywxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogCiAgICAg
Y29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGlj
YWxPZmZzZXQ7Ci0gICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgYXV0byBzdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDB4OGQs
IDB4OGQsIDB4OGQpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENv
bG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQuc2V0
U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50KSk7CiAKICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKQEAgLTkzNywxMCAr
OTM3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRD
b3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVz
c0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIApAQCAtOTQ5LDIwICs5
NDksMjAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgLy8gMikgRHJhdyB0aGUg
cHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclBy
b2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZG91YmxlIGJhcldpZHRoID0g
cG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAg
IGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwog
ICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIx
MCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAx
MTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
NTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRp
ZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0
MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
MzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VHcmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFy
UGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQgb25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRv
Y3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAg
IC8vIGFuZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExl
bmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDExICsxNzQzLDggQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
W2luZm8uaWNvbiBDR0ltYWdlXSk7Ci0gICAgaWYgKCFpY29uSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwor
ICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uMTY3YTU0N2FjNmQyYzQ0YTY5OTdhNzAxNTE2MmQ3YTc1NDM3OThkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
QmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNhN2JiNGY1
OGZkYWI4MjViZjYxYzk3Yjc5Li4zNmU2Njk4YjJjNGI3NWQyY2FiNmE5ZDIzODRmZDBjODU4NzYz
ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKQEAgLTE0Myw5ICsxNDMsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFs
dWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZp
bHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBl
bmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVj
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMw
MDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjAyMzc5OTUyYmRjYjYxNmE4ZjA4M2ZiNDEz
NTdhMzE1NjBhYzg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksOSArODksOSBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsK
KyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5
N2IxZGNmODdlMmMyNWY5YTcuLmE3YTc2ODI5NmQzNGU0MjdlNTAwOWRhZTJhNzhjNDk5YzZmMGIy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBA
IC0xNDMsMTIgKzE0MywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5w
dXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJh
dG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0
Mik7ICAgIAotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0
Li5kOWRiMGFjZWI3ZjNlMDQ0Mjg1MjY3M2Y3YjgyYWRjMTkwMDM0NDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5
LDkgKzE4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5z
dHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
c3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExl
bmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92
ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRi
NWZmYWZkNDRmNTMuLjJiNDJmMzQ0MDgyODllZjliMDkwM2E4YTZiYTVhYzMyNGVjMzU1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0
ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZm
ZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlu
cHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJu
IGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNj
ZjFlZDZhNjQ0M2Y5NTFlY2Y0YmI4ZWY4YzU5Yi4uNjk4YTQ4NTRjMWIxNTRlMjkzNThhOWIyYjQ5
YjNmNmVlMjY4ZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcApAQCAtMTM0LDkgKzEzNCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0
ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjk1NDcyZGI3MTg2Mzk3NTAxNzA3N2E2OTMxOTY1
MzQ1YzQxMmYxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkK
ICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2Rl
KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkx
YjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5lZmE3N2RlMmMxYmJkNTg2MjVlNTZmODRhYzNlNTNiZjRk
MGY5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3Jl
YXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVu
T2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CkBAIC01OSw3ICs1OSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVy
biBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5
OWQ4YjBiNmZjLi43YTRjZDA4MmQ1NDE1OWFhZjUyNTAwMmRhOTQ2MGViYTFkOWVmMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUs
OSArMTQ1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAg
fHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVy
YXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5
ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uODg1MjcxMWE1YTZhNmQ0NDMzM2M0
ZTcxZTZlM2IyMTNhMGE1N2RjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZz
ZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDNhMmY0
ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjgxZWY0NTc2ODY5NzE3YTY5ZTlk
ZWI2ZTY0OTVkYTUxMTc0Y2MyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw5ICsxOTgsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUo
KS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMy
NjNiN2ZlMDA2MjU0ODkyNDQuLmUzY2Y1YWRjZjRmNjQ5N2Q3MzZiY2RiN2I2YzJlYmVhZjFmMGU4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDkgKzgx
LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRp
bGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmls
dGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFj
MTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0
NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBj
b25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4u
OTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVy
LT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6
IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29k
aW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2Rl
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUw
YTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAg
Ym9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cisg
ICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0g
cGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwg
ZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2gg
dGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhl
IGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVu
dFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5
ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyAr
NDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlv
biogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZi
ZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVh
MmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBm
YTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFl
ZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRN
ZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJv
ZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkg
PSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxm
Ll9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3Jl
YXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0
aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3
Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzEx
MzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0
cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNu
YXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0
KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1Ip
CiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21w
cmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZp
ZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSks
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsKKyAgICAg
ICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxw
dHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3Zl
KHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBz
aG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1
cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUo
Y29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsKQEAgLTU5MDIsNyArNTkwMiw3IEBAIC0g
KHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1h
Z2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAgICBpZiAoIWJpdG1hcCkgewogICAgICAg
ICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBjYjlhODBhMzdhYWNjOTViMjVmOTNjNDIu
Ljk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVjZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRp
CiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07
CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9u
LmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OwotICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsKKyAgICBhdXRvIHBvc2l0aW9u
ID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7
CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9z
aXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlm
eUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2FnZSAqLykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
N2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3
MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX1RM
U19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7
CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBX
ZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlm
aWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwotICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpKTsKKyAg
ICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRp
ZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCks
IFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJhNjhkMWRmZGNhMDA1NmNjNmNkZGYyN2Nm
NmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0
b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCA2N2YxMjIyYTc0NmM2
NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIyNDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0
OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRh
SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZj
ZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUgPT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEw
ZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFmOTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRi
NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGEKIAogc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihX
S1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIE5TRXJyb3Ig
Km9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQSTo6RnJhbWVIYW5kbGU+IGZyYW1lSGFu
ZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsK
KyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1l
UHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5T
KFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoKmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6
b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFt
ZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZy
YW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0KCkpIHVybFN0cmluZzpvcmlnaW5hbEVy
cm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7CiAKICAg
ICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IDlk
Nzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4MzhlYWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2Rj
MGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0xNzEs
NyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbEMKIAogY2xhc3MgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBk
MTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpA
QCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0
dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKIH0K
IAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCBhOTI5OWYx
Yjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjkyLi4yOTdmOTY4YjM1MjllMGMzNTVjZDRk
YjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTE5LDcgKzEx
OSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbAogCiBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOworICAgIHN0YXRp
YyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jiwg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcyODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2
Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIAogI3ByYWdtYSBtYXJrIC0gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKIH0K
IAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTcxMGRmMTljNDI2
NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3
MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwotICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIo
KSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVy
T2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4ZWUwNzA1OWEzMTNiMi4uZTQ2M2FjOTk0
YmI5ZjhhYWM0NGZlODI5MzhiZTEzNjE2YmIwNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQzNzQsNyArNDM3NCw3IEBAIFJlZlB0cjxW
aWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hv
dD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyAg
ICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7
CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCmluZGV4IDc1MDlkZGVkYjRjMDhlNmJlODU0YmI3Y2VmNzI1YTk3OWQ4MGRj
ZWUuLjg2ZGMwOWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFmMTcyNzFmNjhjNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBEb3dubG9hZFByb3h5TWFwOjp+RG93bmxvYWRQcm94eU1h
cCgpCiAKIERvd25sb2FkUHJveHkqIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBSZWZQdHI8RG93bmxvYWRQcm94eT4gZG93
bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJl
c291cmNlUmVxdWVzdCk7Ci0gICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25s
b2FkSUQoKSwgZG93bmxvYWRQcm94eSk7CisgICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxv
YWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAg
ICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFBy
b3h5LmNvcHlSZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5
LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgbV9wcm9j
ZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwg
ZG93bmxvYWRQcm94eS5nZXQoKSk7CiAKLSAgICByZXR1cm4gZG93bmxvYWRQcm94eS5nZXQoKTsK
KyAgICByZXR1cm4gZG93bmxvYWRQcm94eS5wdHIoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5
TWFwOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzk2NTg2OGJlMDQzMzll
Nzg0OWY0ZGQzNDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJkMjA1NzIw
YmI4OTAxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApA
QCAtOTYsMTEgKzk2LDExIEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQpCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5l
cmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
KyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBi
b2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmlj
YXRpb25JRCk7CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbm90aWZpY2F0aW9u
SURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRp
b25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZp
Y2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZp
Y2F0aW9uKSk7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgKm5vdGlmaWNhdGlvbik7
CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9w
YWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CisgICAg
bV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAogdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyNWM5YzZjZjU2Y2YyNTQzNDg3NmZkYmQxNjZmMTRjMDhm
ODE1MzQuLjQ3MDg4MTAwZWUzMWQwN2E2NmQ3ZTkxNThlNDk5NThiOGRmODU5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY0OSwxMCArMzY0OSwxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkK
IAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlEKSk7
CiAgICAgCi0gICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKKyAgICBhdXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8g
dGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJ
RCwgKnN1YkZyYW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCBzdWJG
cmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVXaW5kb3codWlu
dDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHdpbmRvd0lkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZmE0M2Ez
ZDFlNzgzMDkyYmI3YzAyMTgxNDdmZDE2NGY4MjdiMDNjMC4uOWUzZjQwNGJkNmU2YWJiM2FiMjQz
OWFiYTcyN2M2YjVjMzliZWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0
U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4g
cmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOworICAgIGF1dG8gcmVxdWVzdCA9IFN0
YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwogCiAgICAgaWYgKHN0YXRpc3RpY3NNYXNrICYgU3RhdGlz
dGljc1JlcXVlc3RUeXBlV2ViQ29udGVudCkKICAgICAgICAgcmVxdWVzdFdlYkNvbnRlbnRTdGF0
aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwyMCArMTcyMiwyMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlv
bjx2b2lkIChBUEk6OgogICAgICAgICByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MocmVxdWVz
dC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3Rh
dGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkK
IHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAw
MDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMg
d29yay4KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0
aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQg
dG8gZ2V0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3MgYnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBp
cyB1bmF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3Qg
cmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgbV9zdGF0
aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgdWludDY0X3QgcmVx
dWVzdElEID0gcmVxdWVzdC5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKKyAgICBtX3N0YXRpc3Rp
Y3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCAmcmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlz
dGljcyhyZXF1ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKaW5kZXggMDYzNDMyNDliYWE3MjVhZmI2Y2I0NDRjNTUyMzI1M2QxN2UwODBiYy4u
ZTZiNDQ0ZTkxNDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2NkZDdiNTRlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00ODcsOCArNDg3LDggQEAgY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQcm9jZXNzUG8KICAgICBXZWJQcm9jZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9j
ZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKLSAgICB2b2lkIHJl
cXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwotICAgIHZvaWQg
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CisgICAgdm9p
ZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKKyAgICB2
b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOwogCiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IDVlM2ZiNjVj
MjMwZGJkODRkYWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQuLmUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFm
ZTEyYTFmOWVjMzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQdHI8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24pOwotICAg
IGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAgYXV0byByZXF1ZXN0ID0gSW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRh
aWxzLCBkZXNjcmlwdGlvbik7CisgICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5kZW55KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAppbmRleCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVhMDA0MWRiZTEwMTQ0MjdmODYzLi45MmVh
ZDA0NWU4YjhmYzJlNGI5OTM0NDI2YmQxMGE0YThlNTlmOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKQEAgLTUzLDE4ICs1MywxOCBAQCBXZWJQYWdlUHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3dlYlZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIp
OworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygp
LCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAg
ICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRl
YnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5z
ZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRMb2dz
UGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVlKTsKICNlbmRpZgotICAgIFJl
ZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VH
cm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJG
b3JQYWdlKG51bGxwdHIpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3RvckxldmVsRm9yUGFnZShudWxs
cHRyKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNl
cy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNl
cy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAu
cHRyKCkpOwogICAgIG1fd2ViVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVh
dGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKG1fd2ViVmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95
ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1fd2Vi
VmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV93ZWJWaWV3KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRl
eCBiNjRlMzM1OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2YTcxOWZkMzRjLi5jYTE4N2E2NDIzNDEx
MmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAgICAgQVNTRVJUKCFtX2luc3Bl
Y3RvclZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdl
YlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwor
ICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAi
V2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAg
Ly8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVn
IGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
I2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoewogICAg
IH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6
Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2Uo
KSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9y
UGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CiAKICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9v
bChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQo
d2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAg
Z19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9pbnNwZWN0b3JWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmll
d0Rlc3Ryb3llZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYzFjZjU4NzU4ZWNiYTk4NTdh
MGE2MWFkNDhkNmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5ZjY5M2NkMmIzYjU1Y2VjMjBlMTczYzJm
YjRiMTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgLSAodm9pZClnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBV
UkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAg
ICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgp
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICAgICAgYXV0
byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
dWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJW
aWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CiAgICAgICAgICAgICBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVlc3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRl
Y2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBj
aGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4
IDExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3ZjhlZDJjY2JhMzEuLjlmZWZmZGRmNDEwNDEy
ZTc2ZDJjMGMzZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNv
bnN0IFNoYXJlYWJsZUJpdAogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKQogewot
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0
byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZN
b3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9pbXBsLT5zZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJs
ZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG1faW1wbC0+
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRyKCksIGZpbGVuYW1lLCBleHRlbnNpb24s
IHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRO
YW1lKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJv
eHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5
V2luLmNwcAppbmRleCBjYmZlMzBlOWUwYmU4MzIxNTE4MTk2MzU1Zjc3OTgwOGI4MjRmMmY2Li4z
Nzk4YmZiYjVhOWM0MTRmNjBmZGMzY2JlYTljN2MwZGIzZTAyMzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTE5
Miw3ICsxOTIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUZyb250ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAg
ICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJL
aXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9w
ZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQg
Y2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0Vu
YWJsZWQodHJ1ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAgICBwcmVm
ZXJlbmNlcy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgIHByZWZl
cmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsgfSk7Ci0gICAgUmVmUHRyPFdlYlBh
Z2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdy
b3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3Jv
dXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9y
UGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwog
CiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQgPSB7CiAgICAg
ICAgIHsgMCwgdGhpcyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggODI1MDkwMTc5
MDBmNDc4OTQ0OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4uOTMxMzQzZWIxYmI4NzMyZWE1ZDNiNTQy
NGM1MzA2Yzg0NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC01MCw4ICs1
MCw4IEBAIC0gKGlkKV9pbml0V2l0aEltcGw6KFdlYkNvcmU6OlJhbmdlKilpbXBsCiAKIC0gKGlk
KWluaXRXaXRoRG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQgKilkb2N1bWVudAogewotICAgIFJlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6
OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7Ci0gICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0
aEltcGw6cmFuZ2UuZ2V0KCldOworICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7CisgICAgc2VsZiA9IFtz
ZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UucHRyKCldOwogICAgIGlmICghc2VsZikKICAgICAgICAg
cmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAKaW5kZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFkYWNmZGIzZmFmNDUwZTdjYWU2Zi4uOGMy
OTViYWViZmJhMmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlmZWQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBwYWlu
dFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOwog
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJh
Y2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9y
ZVNpemUsIHsgfSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDIxYTMxMjMzZTZmYzllMjgxOGEyZmNmYTMwMTkxYTVmYTE1Nzg4YjUuLjk1MTIzMDJi
MjgyZTQxZWQxYjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgUmEKICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVt
ZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNp
emUoKSk7Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwg
aXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggZWMwOTg2N2JmMDM4ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2
NjNiOGQ4ZS4uNmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3YTQyYjhmODk4Y2E5YjAwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC03OCwxMCArNzgsMTAg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsK
IAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQubW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkp
LCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSks
IHRvQVBJKGhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFU
b1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJl
Zih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IGM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAuLjg4YzBhMmQ5YzYz
MTJkMmMwZWEwNmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTc1MSw3ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IG1fcGx1Z2luU2l6
ZTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IoKSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsK
ICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBhcHBseURldmljZVNjYWxlRmFjdG9y
IGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAgY2FsbGluZyBpbnRvIFdLU0kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGMyY2JhMDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUzNTVjZDZmYzMyNjQuLjAxOTliODRmOGY0
ZTI4Zjc2OWE3NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZv
aWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VSTFJl
c3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5n
KilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291cmNl
UmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRp
b24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKKyAgICBh
dXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmco
KSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdpblZpZXcoKS0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3Rv
cmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2Fs
ZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0
b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0xODUzLDExICsxODUzLDcgQEAgdm9pZCBQ
REZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1l
LCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5U
ZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwg
cGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLQotICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1l
bWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDMxNDc5YWZjMjlh
ZGY0YWM4NTJiYjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1OGVjZDlkMjM3ODkwNGIzNDdkMGQzYTZm
NDY3ZTk0NGQyZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApA
QCAtODQsOCArODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgIGlmICghSVBDOjpD
b25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9y
dHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7Ci0gICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhdXRvIHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJlZigpKTsKIAogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKQEAgLTk0LDcg
Kzk0LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgbV90b2tlbnNBbmRDb25u
ZWN0aW9ucy5zZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uZ2V0KCk7CisgICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLnB0cigpOwogfQog
CiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCmluZGV4IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAzYmI5NGYzYWJiNmJjOTFkMTYuLjk3MGVh
MWZlN2NhOTY0NWRkOWM3NzdjY2Q1ZTM2MmE2NmRlYWQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTI0Nyw4ICsyNDcsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94eTo6c25hcHNob3QoKQogICAgIGlm
IChzbmFwc2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90
QnVmZmVyOworICAgIHJldHVybiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3Jl
SGFuZGxlKTsKIH0KIAogYm9vbCBQbHVnaW5Qcm94eTo6aXNUcmFuc3BhcmVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVj
OTkxMTIyZDA4NDNkYWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4
NTI3MDA2Y2VlYmM5YzM3MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZp
ZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAg
Ly8gVGhpcyByZXF1ZXN0IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAg
ICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlz
LCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJl
YW0oc3RyZWFtLmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6
Y3JlYXRlKHRoaXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwor
ICAgIGFkZFN0cmVhbShzdHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3
ZmFmNzg2MjU1Li43OGU2NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlCiAgICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEp
OwogICAgIGF1dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRh
KTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNl
SWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2Uu
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwg
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgp
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCku
ZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0
YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2Uo
KSk7CiAKICAgICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsK
LSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBp
ZiAobV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05l
ZWRlZCkpCisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0
ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZt
X3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBkMDVmYzk5NmMxZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0
YTA1OWY5ZWY3ODFlMTQ2MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTc2NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAK
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAg
ICBhdXRvIGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1f
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhl
IGJ1bmRsZSBjbGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCB1c2VyRGF0YSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rp
b25Vc2UpIHsKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNm
MGJmYWYzNGY2NGRhOGIzMTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYy
OTk0MjNiN2NiOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5
KHBhdGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VS
VChwYXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBl
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uc0hhbmRsZUFycmF5W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlb
aV0pKSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlh
YzIzZDhkMTNlYmRmOTNjNjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1
ZWZmZjI0NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNl
VG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoaW1hZ2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFw
aGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQppbmRleCBmZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5m
ODdkOTM0NDNmN2M1OGE4MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxl
bWUKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAg
IH0KIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShlbGVtZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1h
Z2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEz
OGNkMmJmNjM3OTRjOGU5ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3
NTJlZjgxMWExMjQ1ZWI1NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBA
QCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5n
ZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9u
ID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2Zh
ZGUpCiAgICAgICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2Uo
cmFuZ2UsIGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1
dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwg
aW5kaWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0
SW5kaWNhdG9yKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJ
bmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApp
bmRleCA3ODI0ZTVjZjcxYjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4
NmY0MmEwMWNmNDhlNWRmNjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcs
NyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
KQogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShiaXRtYXBTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMw
OTI5ZDFmMy4uNjNjYzI4MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQog
CiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3Rl
ZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAg
ICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5k
aWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRB
bmltYXRlID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGlj
YXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYx
NzZkNjIwYjQ1ODlkYzM2NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJl
ZWE1NWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVy
ID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFn
ZS5wYWdlSUQoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0
b3JlRmx1c2hlciwgcGFnZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwg
W2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdl
SURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIy
NGI2NDQ2ZDA1MjdkZjg2NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFi
NzE5Yjc5ODJjMDJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExv
YWRlckRldGFjaGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkK
IFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRl
ckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+
IGJvb2wgeworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29y
ZUZyYW1lKCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZy
YW1lKSAtPiBib29sIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGJlNmJlZmI4MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3
Y2M4NDVlNTUzMmMzYjIwNmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQg
V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIEludFBvaW50IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAv
LyBGSVhNRTogU2V0IG1vZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHBy
b2JhYmx5IHNldCBJc1NpbXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3Vz
ZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29t
cG9zZWQ6OlllcywKKyAgICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNU
aW1lOjpub3coKSwgbnVsbHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBv
aW50LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIp
OwogCi0gICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVu
dC0+Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVy
OjpNYXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1l
RG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRy
KCksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRS
ZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0
IFdlYgogCiAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJh
eVtpXSkpKQogICAgICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVw
bG9hZC5hcHBlbmQoZXh0ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5k
ZXggMGM4NGY2NGM4YzYzZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5
ZmFkMDE3MWMxODgzZjAwY2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQs
NyArOTQsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1l
JiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0Zp
bmRJbmRpY2F0b3IgPSBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4g
dGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1l
KHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJn
aW4sIHRvdGFsVmVydGljYWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5k
VGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9u
OjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFy
Z2luKSk7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggOWRmNjE4YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uMTAzZmVh
MzNmZjFiMTEyYzUzMGY1OWU2ZTU2Y2Q1OGViMzRmMWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsMTQgKzE4
MjAsMTQgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYg
b2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0
aW9uLnByZXZpb3VzKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBwb3Np
dGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3Rh
cnQoKSk7CiAKLSAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdl
dCgpKSAhPSBvbGRUZXh0KQorICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
cmFuZ2UucHRyKCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2VsZWN0aW9uIGhhcyBjaGFu
Z2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRleHQuCiAgICAgZnJhbWUu
ZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UucHRyKCksIFVQU1RSRUFNLCBXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9y
KCkuaW5zZXJ0VGV4dChuZXdUZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVT
ZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKIH0KQEAgLTIxMzYsMTcgKzIxMzYsMTUgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlu
a0VsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmtSYW5nZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBmbG9hdCBtYXJnaW5JblBvaW50cyA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBS
ZWY8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlua0VsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxv
YXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVX
aXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50
IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0
aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RB
bmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hl
c1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZs
b2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50
cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRl
eHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UobGlua1JhbmdlLmdl
dCgpLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5kaWNhdG9y
T3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91
bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVu
dEZvckNvbXBsZXhSYW5nZXMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRp
Y2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2lu
dHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3Rv
cikpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlua0luZGljYXRvciA9IHRleHRJ
bmRpY2F0b3ItPmRhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8ubGlua0luZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpAQCAtMjE1Niw3ICsy
MTU0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm8uZGF0YURldGVjdG9ySWRlbnRpZmllciA9IERhdGFEZXRlY3Rpb246OmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIoKmVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRh
RGV0ZWN0b3JSZXN1bHRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0
aW9uUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFEZXRlY3Rpb246
OnJlcXVpcmVzRXh0ZW5kZWRDb250ZXh0KCplbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoKmVsZW1lbnQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdv
cmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZGF0YURldGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
dGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRp
b24oKSwgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2Fy
ZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CkBAIC0yMTgxLDcg
KzIxNzksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1h
Z2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRp
b247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBDb25maWd1cmF0
aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShtX3BhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlv
bikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHNoYXJl
ZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFw
U2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJp
dG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZDI1NTVjMTk5MDhhYmE2
NmEyNGMxYzFiZGQxNTZmMmQzZDI5MDQ4My4uNDdmYzNjMjkwZjY1MGUzNjdkYjk4ZDRjMzcxMzVm
OTNmNjRlNDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpA
QCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3Jt
LnNjYWxlKHNjYWxlKTsKIAogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJW
aWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRy
YW5zZm9ybSIpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5p
bWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1h
dGlvbkNBLmdldCgpKTsKKyAgICBhdXRvIHJlbmRlclZpZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOwogICAg
IHJlbmRlclZpZXdBbmltYXRpb24tPnNldFRvVmFsdWUodHJhbnNmb3JtKTsKIAogICAgIFJldGFp
blB0cjxDQUxheWVyPiBzaGFkb3dDQUxheWVyOwpAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBGbG9hdFBvaW50CiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+YXBwbHlUcmFuc2llbnRa
b29tVG9QYWdlKHNjYWxlLCBvcmlnaW4pOwogICAgIH1dOwogCi0gICAgem9vbUxheWVyLT5hZGRB
bmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiLCAqcmVuZGVyVmlld0FuaW1hdGlv
bik7CisgICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21t
aXQiLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVy
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0Zv
ckZyYW1lKGZyYW1lVmlldywgc2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDgw
NWZlOWU0Y2JiNWQ3MjZmZjIyNmZlZDU4ZDIwYTFkN2U5ZGJiMjEuLjg4MzAxNzI2NWJiYTk1NmRj
OWQyMmY2YjYwNDQ0YjE4MDYwZWZmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTQw
LDI0ICs0MCwyNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxw
dHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90
YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
RXBoZW1lcmFsTG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpF
cGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUlu
Qnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwg
cXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxP
cmlnaW4sIHF1b3RhSW5CeXRlcykpOwogfQogCiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYg
bWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpz
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBpZiAobV9zdG9yYWdlVHlw
ZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCiAgICAgICAgIHJldHVybiBlcGhlbWVy
YWxMb2NhbFN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTE4NSwxNiArMTg1LDE2IEBA
IGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYSBmaW5hbCA6
IHB1YmxpYyBTdG9yYWdlQXJlYSB7CiAgICAgUmVmUHRyPFN0b3JhZ2VNYXA+IG1fc3RvcmFnZU1h
cDsKIH07CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVt
ZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExv
Y2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikK
IHsKICAgICBhdXRvJiBzbG90ID0gbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcy5hZGQoc2Vj
dXJpdHlPcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNsb3QpCiAg
ICAgICAgIHNsb3QgPSBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWE6
OmNyZWF0ZShzZWN1cml0eU9yaWdpbiwgbV9xdW90YUluQnl0ZXMpOwotCi0gICAgcmV0dXJuIHNs
b3QuZ2V0KCk7CisgICAgQVNTRVJUKHNsb3QpOworICAgIHJldHVybiAqc2xvdDsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5l
d1BhZ2UpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
UGFnZSogbmV3UGFnZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCkBA
IC0yMDIsNyArMjAyLDcgQEAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiAgICAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgp
LCBtX3F1b3RhSW5CeXRlcyk7CiAKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWwpOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
bmV3TmFtZXNwYWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFn
ZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1
b3RhSW5CeXRlcykpOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNwYWNl
ID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0
b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMp
KTsKIAogICAgIGZvciAoYXV0byYgaXRlciA6IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMp
CiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcy5zZXQo
aXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBm
MTNhMjJkY2JkMjFiNjc0MGU0NTIzN2Y0ZGZhZDgzMTI1NjcyOWUzLi45N2RiMGI4MTNiYWY1Y2I1
YTQ3ZDcyZWU1YTA2NTVlNjc1MDBlZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDEw
ICszOSwxMCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRp
YyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CisgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOwogCiAgICAgdmlydHVhbCB+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAtNTYsMTAgKzU2LDEwIEBAIGNsYXNzIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdl
VHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
IG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNv
cmU6OlBhZ2UqKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4g
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2FsU3RvcmFn
ZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAgIGNvbnN0IHVpbnQ2NF90IG1f
c3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
aW5kZXggNDYyZGU4NmM0OTAwNGYxYWY2OTFlZDBiNjcxNjE4ZjAzYTdmZmUyYy4uODI1NTdiNzI3
MTRhZDg3MjY1N2VhZjg0OTY4NTIxYTcxMzYwMzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgc3RhdGljIEhhc2hNYXA8dWludDY0
X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSh1aW50NjRf
dCBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
c2xvdCkKLSAgICAgICAgcmV0dXJuIHNsb3Q7CisgICAgICAgIHJldHVybiAqc2xvdDsKIAotICAg
IFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciA9IGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoaWRlbnRpZmll
cikpOwotICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuZ2V0KCk7CisgICAgYXV0
byBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7CisgICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5wdHIoKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiB9
CkBAIC02NSwyMiArNjUsMjIgQEAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKICAgICBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCku
cmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdl
Ojpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVv
dGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwg
dW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZw
YWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmln
aW4sIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2
ZWxPcmlnaW4sIHF1b3RhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5k
ZXggOGVhMjVlNmU3NTA5ZWIyYzE3YmQxZjk0ODRjMzczMWY2YzFlYTc5NS4uM2NlNmRiOWYwNjhl
ODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgKQEAgLTMxLDE2ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwor
ICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1
aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYs
IHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCmluZGV4IGNmMzA4NWI4NDBmMDdmZDdkMDU5MjEzNTI1ZGQ0N2RiZTFiZWI0NzEuLmZjNjU5
ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBA
IC0yMDIsOSArMjAyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjppbnZhbGlkYXRl
KCkKIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2Rl
bCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwotICAgIG1v
ZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CisgICAgYXV0byBtb2RlbCA9IFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsK
KyAgICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCA3ZjYzMzA5ZjMyYTBhODNhMzhkMGMyODgyNWU4MTczYjAyMjFmMTZl
Li41ZDYxMTBiNzkwOWYzNGNjZTNlNzYyYmZkMzhkMmIyZjcyMWQ1MjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpp
bnZhbGlkYXRlKCkKIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBs
ZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0g
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQp
OworICAgIGF1dG8gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CiAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLT5hZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNl
dExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJu
YWxIb3N0aW5nUHJvY2VzcygpKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOwor
ICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAppbmRleCAwMTgxNWMxM2FjMmExMDI5NjQwMzI3MzE3MjI2N2UzMjU2ZThjMmVjLi40NTE4ZTJk
YWYzZDI2NjkzYzdkZGVmOTA3MTYwYTViNjZjZTUzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTkzLDMxICs5
MywzMCBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAg
ICAgICAgY2xvc2UoKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVt
ZXJhbExvY2FsKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNw
YWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1f
cGF0aCwgbV9xdW90YSkpOworICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKICAg
ICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQogICAgICAgICBuZXdOYW1lc3Bh
Y2UtPm1fc3RvcmFnZUFyZWFNYXAuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwog
CiAgICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKIAotICAgIFJlZlB0cjxTdG9y
YWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwotICAgIGlmICgoc3RvcmFnZUFyZWEgPSBtX3N0b3Jh
Z2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAg
IGlmIChSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFN
YXAuZ2V0KG9yaWdpbikpCisgICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlTm9uTnVs
bCgpOwogCi0gICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3Jh
Z2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIuZ2V0KCksIG1fcXVvdGEpOwotICAgIG1fc3Rv
cmFnZUFyZWFNYXAuc2V0KG9yaWdpbiwgc3RvcmFnZUFyZWEuZ2V0KCkpOwotICAgIHJldHVybiBz
dG9yYWdlQXJlYTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVh
dGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2VyLmdldCgpLCBtX3F1b3RhKTsK
KyAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3JhZ2VBcmVhLnB0cigpKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggMjdiOGY5YmFiM2FkMzM5NjY4NTQwZjQ4MGJmZDY1YTk2
NjYxNjEzNy4uYzg4ZjA2MWVmNWU1MGM5YjE2MzVlYzNmOGQ2YmEwZWQ3NzA1Y2FhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
QEAgLTU3LDggKzU3LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgogICAgIFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIHVuc2lnbmVkIHF1
b3RhKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7Cisg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
Y29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+
PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1hcCBtX3N0b3JhZ2VBcmVhTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCBlZDdlYTNhYTM5M2RhNTU5MzdhMWFkNDVhNDZkNjc3
Yzg4NGFiZDllLi44MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3NzgwMDQ5MWM5ZGExMWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMzksOSArMzksOSBAQCBzdGF0aWMgSGFzaFNldDxXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpCiAg
ICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogfQogCiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCkKQEAgLTk2LDIyICs5NiwyMiBAQCB2b2lkIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAgICAgfQogfQogCi1SZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQog
ewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQogewog
ICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1b3RhKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFydGVyIGltcGxlbWVudGF0aW9uIHdv
dWxkIGNyZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUgaW5zdGVhZCBvZiBqdXN0IHBpZ2d5
LWJhY2tpbmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgaGVyZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAppbmRleCAwZDIwN2QzNDMxOTJjNGZlN2I5N2QwMzhkNTgxYjJjNGVjMDc3YWJi
Li5lNTg5ZmVlN2E1YzZjOTFjZjk0YjdkMjNiNDg2MTQ4MTc5YjhjZmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICB2aXJ0dWFs
IH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNsb3Nl
TG9jYWxTdG9yYWdlKCk7CkBAIC00OSwxMCArNDksMTAgQEAgY2xhc3MgV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWQKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJD
b3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdl
JiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViVmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0dyb3VwLmNwcAppbmRleCBjNmI0MDg3MTA1MDA2MTk5MDFiNTQwNjA1ZTA2NjdkMWE2
MjEzYjlkLi42M2NhZTJkMGFkNTJjZDUxM2Q4NTMzMjAwYzNkZWVmY2MxN2M0YjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3Bw
CkBAIC00MiwxOCArNDIsMjIgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViVmll
d0dyb3VwPj4mIHdlYlZpZXdHcm91cHMoKQogICAgIHJldHVybiB3ZWJWaWV3R3JvdXBzOwogfQog
Ci1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8
V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCiB7CiAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdHcm91cChT
dHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KSk7CiAKICAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3R3JvdXBzKCkuYWRkKG5hbWUs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXdlYlZpZXdHcm91cCkKLSAgICAg
ICAgd2ViVmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICghd2ViVmlld0dyb3VwLT5tX3N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkK
KyAgICBpZiAoIXdlYlZpZXdHcm91cCkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVm
KCpuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAg
ICAgICB3ZWJWaWV3R3JvdXAgPSByZXN1bHQuY29weVJlZigpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGlmICghd2ViVmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1w
dHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgd2Vi
Vmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9IGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aDsKIAotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7CisgICAgcmV0dXJuICp3ZWJWaWV3
R3JvdXA7CiB9CiAKIFdlYlZpZXdHcm91cCogV2ViVmlld0dyb3VwOjpnZXQoY29uc3QgU3RyaW5n
JiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0dyb3VwLmgKaW5kZXggZmUwNWNkNTQ4NjkwNWNkMjlmYjY4ODRlN2E4N2ZiZGM5MzI3MmI1Zi4u
NGQ0MTM3Y2UyYWFhYzNhMTQwZDU5YzYyYzM5NjMzNTJmMjU1YjE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCkBAIC0zOCw3ICsz
OCw3IEBAIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogY2xhc3MgV2ViVmlld0dyb3VwIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViVmlld0dyb3VwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxX
ZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBSZWY8V2ViVmlld0dyb3Vw
PiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKTsKICAgICB+V2ViVmlld0dyb3VwKCk7CiAKICAgICBzdGF0aWMgV2Vi
Vmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1Mu
Y3BwCmluZGV4IGQwODQ5M2IwZjQyY2NkMzYyYWY0NDJjMDNlNDk0NDhkODFkN2Y1ZDAuLjgwNDli
MWNjYzI3MmMzNDcyNTk5ZTQ5NDJlNTAwNmNiODY4MTUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmNwcApAQCAtMjYsMTMgKzI2LDEzIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
U2VhcmNoUG9wdXBNZW51SU9TOjpTZWFyY2hQb3B1cE1lbnVJT1MoUG9wdXBNZW51Q2xpZW50KiBj
bGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSkp
CisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQogewog
fQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUlPUzo6cG9wdXBNZW51KCkKIHsKLSAgICBy
ZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4gbV9wb3B1cC5wdHIoKTsKIH0KIAogdm9p
ZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFyY2hJdGVtcyovKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaAppbmRleCA3MTZlZDU5YzQxNDcyMzk1MmQ3MGRlYzUyZGJmOGVmNTk4Nzlh
ZjRmLi4wZWY0NGI0MmE2NjBhZTM1MmM4YmVlNjk1NTBhYjJkZjBmOTUzNGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVJT1Mg
OiBwdWJsaWMgV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51IHsKICAgICBib29sIGVuYWJsZWQoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51SU9TPiBtX3BvcHVwOwor
ICAgIFJlZjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CiB9OwogCiAjZW5kaWYgLy8gU2VhcmNoUG9w
dXBNZW51SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRleCA0MjNjMDQ5MDBmNGYwZTZi
OWE1ZTY4OWZjMTljODczNzQ0MmI1YjI5Li44NTkxMTc3YTljZjJhZTkyNjBjN2EwY2ZhZjJmMzJh
MTM2MWY2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBAIC00MzMsOCArNDMzLDggQEAg
LSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2
ZXM6KE5TQXJyYXkgKiopYWx0ZXJuYXQKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgbWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKTsgaisrKQogICAgICAgICAgICAgICAgIFsoTlNN
dXRhYmxlQXJyYXkgKikqYWx0ZXJuYXRpdmVzIGFkZE9iamVjdDooTlNTdHJpbmcgKikobWFya2Vy
QWx0ZXJuYXRpdmVzW2pdKV07CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFy
dE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVy
biBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5l
bmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLnB0cigpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICAgICAgCkBAIC00NjIsOCArNDYyLDggQEAgLSAoRE9NUmFuZ2UgKill
bmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IERvY3VtZW50TWFy
a2VyKiBtYXJrZXIgPSBtYXJrZXJzW2ldOwogICAgICAgICBpZiAobWFya2VyLT5zdGFydE9mZnNl
dCgpIDw9IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgpID49IG9mZnNldCkgewotICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5v
ZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5w
dHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCmluZGV4IDk2YTY0
OTZjMmM0NDYwOTkyYzVjMTJjMGRjZmU2N2YzNDBhNmMxYzguLmE1OTE5OGMzMzRlZTE0OThkOWYz
NGI5YzA5NjI5M2RjMzZjYTVlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBAIC00NjUsMTMgKzQ2NSwx
MyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgKilVUkwKICAgICBp
ZiAoIVVSTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IE1v
dXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMs
CisgICAgYXV0byBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2
ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLCBudWxs
cHRyLCAxLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIs
IE1vdXNlRXZlbnQ6OklzU2ltdWxhdGVkOjpZZXMpOwogCiAgICAgLy8gQ2FsbCB0byB0aGUgZnJh
bWUgbG9hZGVyIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBvdXIgc2VjdXJpdHkgY2hlY2tzIGFyZSBt
YWRlLgogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW19kYXRhU291cmNlIHdlYkZyYW1lXSk7CiAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyBVUkwgfSwgeyB9LCBMb2Nr
SGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpB
bGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csICBJbml0
aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwotICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJh
bWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LmdldCgpLCBudWxscHRy
KTsKKyAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9h
ZFJlcXVlc3QpLCBldmVudC5wdHIoKSwgbnVsbHB0cik7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tCmluZGV4IGY4N2U2MTUzMzcxMmY4ZWVkNzBjZWViOWUzODYzNWUzYWE4
ZjRhZDQuLjFiNmM4MjI4NTRhMDdmM2QwYzdhMDYwMTc2ZTRiODEwZTc4OTFmY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIC0gKHZvaWQpZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5TQXJyYXkg
KiopcmVjdHMKICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKG5vZGUpOwog
CiAgICAgY29uc3QgZmxvYXQgbWFyZ2luID0gNCAvIG5vZGUuZG9jdW1lbnQoKS5wYWdlKCktPnBh
Z2VTY2FsZUZhY3RvcigpOwotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9y
ID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0
aW9uVGlnaHRseUZpdENvbnRlbnQgfAorICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlG
aXRDb250ZW50IHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3Ig
fAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8CiAgICAgICAg
IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JD
b21wbGV4UmFuZ2VzIHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4
IDFmMzJkYzk0OThiYTQyMjFkMTI5MzkxYjg0NzlhYmEzMGE5Nzk4OTQuLmEwNGJjNTU3YmZkZGM5
NzZmZDE4MDVhZmViNzg2NWI0ZDEyN2FlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0
TWFuYWdlci5tbQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luCiAg
ICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFBy
b3BlcnR5TGlzdDpwcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1Byb3BlcnR5TGlzdEJpbmFyeUZv
cm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAgICBBU1NFUlQoZGF0YSk7CiAg
ICAgCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gaW5zdGFuY2UgPSBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcs
IGZ1bGxGcmFtZSk7CisgICAgYXV0byBpbnN0YW5jZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVsbEZyYW1lKTsKICAgICB1aW50
MzJfdCByZXF1ZXN0SUQgPSBpbnN0YW5jZS0+bmV4dFJlcXVlc3RJRCgpOwogICAgIGtlcm5fcmV0
dXJuX3Qga3IgPSBfV0tQSEluc3RhbnRpYXRlUGx1Z2luKGhvc3RQcm94eS0+cG9ydCgpLCByZXF1
ZXN0SUQsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0PHZvaWQqPihbZGF0YSBieXRl
c10pKSwgW2RhdGEgbGVuZ3RoXSwgaW5zdGFuY2UtPnBsdWdpbklEKCkpOwogICAgIGlmIChrciA9
PSBNQUNIX1NFTkRfSU5WQUxJRF9ERVNUKSB7CkBAIC0yOTksNyArMjk5LDcgQEAgUmVmUHRyPE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5z
dGFudGlhdGVQbHVnaW4KICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyQ29udGV4dElEKHJlcGx5LT5t
X3JlbmRlckNvbnRleHRJRCk7CiAgICAgaW5zdGFuY2UtPnNldFJlbmRlcmVyVHlwZShyZXBseS0+
bV9yZW5kZXJlclR5cGUpOwogCi0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHJldHVybiBXVEZN
b3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpjcmVh
dGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBw
bHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA4ODNiOTIwNzIwN2UyNDhk
ZDQ3YTMwYmMwYzc2MjFlNzA2OGI3YzMyLi5hYmNhNmJiZTMzMDUzNWE5ODJlNjQyZDRjMmExODhh
N2I4YThiN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBA
IC03MTksOCArNzE5LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1
YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1ZXMKICAgICAgICAgLy8gRG9u
J3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBp
cyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAg
ICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0
aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgp
KTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbSk7Cisg
ICAgICAgIGF1dG8gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0
aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdCgp
KTsKKyAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVhbUlEKCksIHN0cmVhbS5jb3B5
UmVmKCkpOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTc5OSwxMCArNzk5
LDEwIEBAIE5QRXJyb3IgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2FkUmVxdWVzdChO
U1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IGNoCiAgICAgICAgIG1fcGx1Z2luUmVxdWVzdHMu
YXBwZW5kKFdURk1vdmUocGx1Z2luUmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3RUaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBI
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVz
dCk7CiAKICAgICAgICAgQVNTRVJUKCFtX3N0cmVhbXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0g
ICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0pOworICAgICAgICBtX3N0cmVh
bXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3Rh
cnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDlhNzQ1ZDkzODNmNzQ0N2Y1
NDJkZjUwNDVlMjQ0NWIzODUzZTA4ODAuLjFkMWU4YWVmNjc1MjM2MWYzZWNjMDQ2NTA1ZDQ2NTdj
MjU0NmI0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCAtICh2b2lk
KWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBsdWdpblJlcXVlc3QgKilKU1Bs
dWdpblJlcXVlc3QKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhl
ciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhp
cyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAg
ICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBs
dWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVz
dCBub3RpZnlEYXRhXSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwg
W0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pTUGx1Z2luUmVxdWVzdCBub3Rp
ZnlEYXRhXSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVz
cG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtMTY3OCw5ICsx
Njc4LDkgQEAgLSAoTlBFcnJvcilsb2FkUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJl
cXVlc3QgaW5UYXJnZXQ6KGNvbnN0IGNoYXIgKiljVGEKICAgICAgICAgW3NlbGYgcGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdpdGhPYmplY3Q6cGx1Z2luUmVx
dWVzdCBhZnRlckRlbGF5OjBdOwogICAgICAgICBbcGx1Z2luUmVxdWVzdCByZWxlYXNlXTsKICAg
ICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVh
bSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5k
Tm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5vdGlmaWNhdGlv
biwgbm90aWZ5RGF0YSk7CiAKLSAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmdldCgpKTsKKyAg
ICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+c3Rh
cnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk2ZWY5
MjFmZDYwNmVjZjA4MGVlZDEzMWQ0YjhkOTEyZDUxZjNmZmIuLjIzNDc4MWIwYmU4NmE0YmRhNTBj
MGNlNTY0ODQyMjM4OGI0MmJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0y
MDcsOCArMjA3LDggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50Ojpp
bWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWVWaWV3LT5mcmFt
ZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9u
SXNBZnRlckFuY2hvcikpOwotICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RT
ZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQo
KSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3Np
dGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7CisgICAgZnJhbWVW
aWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJh
bmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVo
YXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvcjo6
U2VsZWN0aW9uT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGVjOGU1OGNm
MjA3YmJjYjA0ODIyZWQyYjE1ZGVhZDA2NzYyYTU2N2QuLjg0NjBiMDNmNTBjN2MyYjEzYTE3ZWZl
NGM4MzhmYjdiOTIxOTBlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNDY1
LDcgKzE0NjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGb3JOZXdQYWdlKCkKICAgICBpZiAoaXNNYWluRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3
KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsK
ICAgICBjb3JlRnJhbWUtPnNldFZpZXcobnVsbHB0cik7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4g
Y29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKKyAgICBhdXRvIGNvcmVW
aWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CiAgICAgY29yZUZyYW1lLT5zZXRW
aWV3KGNvcmVWaWV3LmNvcHlSZWYoKSk7CiAKICAgICBbbV93ZWJGcmFtZS5nZXQoKSBfdXBkYXRl
QmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3YjliYjg5OTA4YWU1YzFhNjUyZTM2Y2M4
ODliZTA0ZTU2NTRjOTQ2Li5hOTNkZWY2MTM5OWE1Y2M1NGVmNjFjYWU5YzAzNzk5MDU4OTBjZDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE3
NDYsOCArMTc0Niw4IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOihOU0FycmF5
ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiopCiAgICAgICAgICAgICBpZiAo
IW1ldGFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0g
ICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
RE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLnB0cigpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRhdGEpIHsKICAgICAgICAgICAg
ICAgICBbbWV0YWRhdGFzIGFkZE9iamVjdDptZXRhZGF0YV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5YzNjMmJiOTljYzBjNmNkMzA1
Mzc5OGRkYjY2NDRjOWU3ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQwYzViZWJmYjM5MGNlODQ2M2Zl
YjI0Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KQEAgLTEzNDgsNyArMTM0OCw3IEBAIC0gKHZvaWQpX3dyaXRlU2VsZWN0aW9uV2l0aFBh
c3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVib2FyZDooTlNQYXN0CiB7CiAg
ICAgLy8gUHV0IEhUTUwgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBlcyBjb250YWlu
c09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKLSAgICAgICAgaWYgKFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21T
ZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gY29yZUFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYg
X2ZyYW1lXSkpKSB7CiAgICAgICAgICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9
IGNvcmVBcmNoaXZlID8gY29yZUFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpIDogMCkK
ICAgICAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilk
YXRhLmdldCgpIGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNWViOTU3NTI4MmMx
YjY1M2RjYmM5YWE2YTQ3ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2MzkzOTc0MTI2OTc2OGQ2MzAzNmNi
MGQzYjBkMzBjOTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtNDcyOSw4ICs0NzI5LDYgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6
KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3Jl
YXRlKGdyb3VwTmFtZSwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CkBAIC00NzU0LDggKzQ3
NTIsNiBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3Jv
dXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJp
bmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
d29ybGQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNl
OTA0YTVlYzkwNDliNDYzZi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5ZDU3Yzc1YWUzOTlhYThmMDRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNo
KCkKICAgICAgICAgICAgIHJlbW92ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3Jl
YXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CisgICAgICAgIGF1dG8gcGFja2FnZSA9IFBs
dWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwogICAgICAgICBp
ZiAocGFja2FnZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAgICAg
IHBsdWdpblNldENoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGY4NTVkZDI2M2Y3OWNkZmQ0MWI2NDY1
OTUwMjJhOGM0NGNjYTJmNDUuLmVmMGEyZTIwYjQxMzc2NjBmMjdiZTViYTRmYWNjYmZiMGY2MjRh
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWVkaWFDYW5TdGFydChEb2N1
bWVudCYpCiB7CiAgICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7CiAgICAgaWYgKCFzdGFydCgpKQot
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhcmVudEZyYW1lKCkt
PmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKHRoaXMpOwor
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KHBhcmVudEZyYW1lKCkt
PmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKCp0aGlzKTsK
IH0KIAogUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQpAQCAtNDEwLDggKzQxMCw4IEBAIHZvaWQg
UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAg
ICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVhdGUgYSBzdHJlYW0g
Zm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFzcyBpdCBvZmYgdG8gdGhlIGxv
YWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhp
cywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291
cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlm
eURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5x
dWlya3MoKSk7Ci0gICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7CisgICAgICAgICAg
ICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUu
Z2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVx
dWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigp
LT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAgICAg
ICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgICAgIHN0cmVh
bS0+c3RhcnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoZSB0YXJn
ZXQgZnJhbWUgaXMgb3VyIGZyYW1lLCB3ZSBjb3VsZCBkZXN0cm95IHRoZQpAQCAtNDU0LDggKzQ1
NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVx
dWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3RyaW5nLnV0ZjgoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0cmVh
bTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJl
cXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCBy
ZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgp
LCBtX3BsdWdpbi0+cXVpcmtzKCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbSk7Cisg
ICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRG
cmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1
Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7Cisg
ICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIHN0cmVhbS0+
c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwgY3N0cik7CiAgICAgfQogfQpAQCAtNjkw
LDExICs2OTAsMTEgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBQbHVnaW5WaWV3
OjpiaW5kaW5nSW5zdGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8gcm9vdCA9IG1fcGFyZW50RnJh
bWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0gICAgUmVmUHRyPEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3Jl
YXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CisgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CiAKICAgICBf
TlBOX1JlbGVhc2VPYmplY3Qob2JqZWN0KTsKIAotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShpbnN0YW5jZSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlmNGUuLmI1YjYwYTgwOTkxZDYw
NzEwYjg3MDYzMDI0MDIxZDY1MDkwNjMyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zMTcsNyArMzE3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIFZlY3Rvcjxib29sLCA0PiBtX3BvcHVwU3RhdGVTdGFjazsKIAotICAg
ICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+ID4gbV9zdHJlYW1zOworICAgICAgICBI
YXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+PiBtX3N0cmVhbXM7CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8UGx1Z2luUmVxdWVzdD4+IG1fcmVxdWVzdHM7CiAKICAgICAgICAgYm9v
bCBtX2lzV2luZG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTkzZTAy
YjA1MDE4ZWY1OGZlNDE2ZmNiZmI2NzVlZGUzZmM1ODk2Yy4uNTBhY2Y3NzlkZDZiNTQ0ODQ4NDhl
Y2MyNWMxODY0OGI5OTZhYjdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTA2MSw3ICsxMDYxLDcgQEAgT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIHJldHVybiBXZWJD
b3JlOjpPYmplY3RDb250ZW50VHlwZTo6Tm9uZTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3KSBjb25zdAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
VG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW5WaWV3KSBjb25zdAogewogICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAKQEAgLTEwNzIsMjMg
KzEwNzIsMjMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9T
dGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZy
YW1lKTsKLSAgICBBU1NFUlQoZnJhbWUgPT0gcGx1Z2luVmlldy0+cGFyZW50RnJhbWUoKSk7Cisg
ICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXcucGFyZW50RnJhbWUoKSk7CiAKLSAgICBpZiAo
IXBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMIHBsdWdp
blBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKKyAgICBpZiAo
IXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgeworICAgICAgICBVUkwgcGx1Z2lu
UGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlm
IChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAg
c3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9D
RlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVS
TC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgeworICAgIGlmICghcGx1
Z2luVmlldy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0
RXJyb3JNSU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZv
LmdldCgpLCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBs
dWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKLSAg
ICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKLSAgICAgICAgU3RyaW5nIHBsdWdpbk5hbWUg
PSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOworICAgIGlmIChwbHVnaW5WaWV3LnBsdWdp
bigpKSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy5wbHVnaW4oKS0+
bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsKICAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBs
dWdpbgogIAogICAgIGludCBlcnJvckNvZGUgPSAwOwogICAgIFN0cmluZyBkZXNjcmlwdGlvbjsK
LSAgICBzd2l0Y2ggKHBsdWdpblZpZXctPnN0YXR1cygpKSB7CisgICAgc3dpdGNoIChwbHVnaW5W
aWV3LnN0YXR1cygpKSB7CiAgICAgICAgIGNhc2UgUGx1Z2luU3RhdHVzQ2FuTm90RmluZFBsdWdp
bjoKICAgICAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbjsK
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gV0VCX1VJX1NUUklORygiVGhlIHBsdWctaW4gY2Fu
XHhFMlx4ODBceDk5dCBiZSBmb3VuZCIsICJXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnaW4gZGVz
Y3JpcHRpb24iKTsKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2lu
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBSZXNvdXJj
ZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2Rl
LCBwbHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3Vy
Y2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdpblZpZXcu
dXJsKCksIFN0cmluZygpKTsKICAgICBDT01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgp
KSk7CiAgICAgIAogICAgIHJlc291cmNlTG9hZERlbGVnYXRlLT5wbHVnSW5GYWlsZWRXaXRoRXJy
b3Iod2ViVmlldywgZXJyb3IuZ2V0KCksIGdldFdlYkRhdGFTb3VyY2UoZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpKTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIFJlZlB0cjxXaWRnZXQ+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgSFRNCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5W
aWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJs
LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CisgICAg
YXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5TaXplLCAm
ZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxvYWRNYW51
YWxseSk7CiAKICAgICBpZiAocGx1Z2luVmlldy0+c3RhdHVzKCkgPT0gUGx1Z2luU3RhdHVzTG9h
ZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm4gcGx1Z2luVmlldzsKQEAgLTExODAsNyAr
MTE4MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCYgcGx1Z2luV2lkZ2V0KQogUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRN
TEFwcGxldEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgUmVmUHRyPFBsdWdp
blZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwg
cGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFw
cGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0g
UGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50
LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBw
bGV0IiwgZmFsc2UpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIHBsdWdpbiBjYW4gYmUgbG9hZGVk
IHN1Y2Nlc3NmdWxseQogICAgIGlmIChwbHVnaW5WaWV3LT5wbHVnaW4oKSAmJiBwbHVnaW5WaWV3
LT5wbHVnaW4oKS0+bG9hZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjhkNzQ4
ODVmMDZjNTRhNDMzODc2OTMzMzhjMGUwNjMyNGQ5OGFjYi4uMmZiYWI3OWM3MGQwMjE0ZTg0ZjA3
ZThkYmU4YWQ0NzE4YzFjNzkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00OSw3
ICs0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6CiAgICAgdm9pZCBzZXRXZWJGcmFtZShX
ZWJGcmFtZSogd2ViRnJhbWUpIHsgbV93ZWJGcmFtZSA9IHdlYkZyYW1lOyB9CiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV93ZWJGcmFtZTsgfQogCi0gICAgdm9pZCBk
aXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNvcmU6OlBsdWdpblZpZXcqKSBj
b25zdDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0
MmM3ZDZiNjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0
NGU0ZGZiZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
QEAgLTU2NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0
XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIg
YmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyht
aW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAg
LTYxMCw3ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3Ry
ZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZy
YW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1
cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVD
aGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCks
IHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBw
bGFpblRleHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0
ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hh
cmVkQnVmZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0
cik7CkBAIC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0
cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1l
Ojpsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkws
IF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7
CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbiho
dG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2
KTsKICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2Rpbmcs
IGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
CmluZGV4IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlk
ZjZiOTBkMGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5
OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8g
QlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERh
dGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9p
ZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAg
ICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHBy
aW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5h
bFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdT
aXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFj
Y2NjMDY2ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6
fkNBVmlldygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZp
ZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxD
QVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6
c2V0Q29udGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRl
YzAxNTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5
YTZkYTU3MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3
IEBAIGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZE
aXNwbGF5TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVm
UHRyPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxD
QVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAg
IHR5cGVkZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcq
LCB2b2lkKiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4
IGIxNTQ4MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVk
N2U2NWFkODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3Bs
YXlMaW5rLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGlu
aygpCiAgICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlz
cGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGll
bnQpCitSZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxp
bmtDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxp
bmsoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGll
bnQpKTsKIH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxp
bmsuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q1ZEaXNwbGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0
NDIyODMuLmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlz
cGxheUxpbmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRp
c3BsYXlMaW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlz
cGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxD
VkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3Bs
YXlMaW5rKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdl
Q29udmVyc2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIy
NjAwYy4uY2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFn
ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0
aWMgSFJFU1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1
cmZhY2UsIFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwg
ZGVzYy5IZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUo
c3VyZmFjZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXpl
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcy
NzIyYWVlYjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxU
IFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3
R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAg
aWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3Js
ZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNV
TFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUs
IF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZp
ZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAg
ICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdv
cmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357564</attachid>
            <date>2018-12-18 06:28:58 -0800</date>
            <delta_ts>2018-12-18 07:46:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181218232857.patch</filename>
            <type>text/plain</type>
            <size>407788</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi43ZDQzNTcwMTZiYmNhMzZkMjgyOTNmMmQ4MTU2ODU5YzE0Nzk2ZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCiBSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZy
YW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRo
ZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUg
dG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1l
PiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7
CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUs
IG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFt
ZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2
ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2
YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGlj
IGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFu
Y2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUp
OwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2
OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBi
NDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJi
NzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25z
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5
T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2
NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQg
RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVu
dCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7
CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50
LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50Ojpj
cmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBA
IC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3Vy
cmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCkt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWlu
VGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZz
ZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5U
ZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRh
dGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUo
KSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9u
c0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhl
IGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwg
b3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnBy
ZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwg
YWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFm
dGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5n
VGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290
Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0
KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwor
ICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtl
clJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2
YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYs
OCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAg
ICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJ
biIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0
KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91
dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAq
cGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEz
ZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVv
ZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1
ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4
OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAg
Ly8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5k
ZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZy
YW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1
cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBs
ZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5u
ZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVz
cG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMx
OGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0
NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxl
cjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAg
UmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJl
ck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBt
YWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1v
cnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3
NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUp
OwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwg
YXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgy
NWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIz
MDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0
cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/
IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdl
J2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJl
ck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1
ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZj
YjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRl
eCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQw
ZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZv
cm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZh
dGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBk
ZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4
Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmFmMGE3Y2M3N2JmMjkyY2Rm
ZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsx
ODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGlu
aXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBr
ZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25l
ZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
NCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERh
dGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
MCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAg
YXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5p
dERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAg
IGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsOCArMTkwOCw4IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKLSAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKKyAgICBhdXRvIHJlc291
cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2
UmVxdWVzdCk7CisgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjExYTkuLjFhNGIxODFhYWNiODk2
MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJh
Y2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDA1
Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4uMzEwNzgwYzNhY2FiZDgxNTU1
YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgogCiAgICAgICAgIEFTU0VSVChz
dGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICAgICAgQVNTRVJU
KGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKLSAgICAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlcXVlc3RlZEtleURhdGEt
PmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxlbmd0aCgpXSk7CiAgICAgICAg
IFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKICAgICB9CkBAIC0x
ODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKLSAgICBt
X3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVz
b3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5
UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFh
Li4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgxZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUwODRjOTBkNWZkNzdlNjZl
YmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2NWYxMWY3YTUwN2UwODg5MmVk
OTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
Ci1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50
LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1JlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBtZWRp
YVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhw
YXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1lZGlhU291
cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZigqbmV3
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQpKTsKKyAgICBjbGllbnQt
PnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5jb3B5UmVmKCkpOwogICAgIHJl
dHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIG5ld1NvdXJj
ZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAjZW5kaWYKLSAg
ICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91dFByaXZhdGUgPSBuZXdTb3Vy
Y2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShu
ZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDgzMDBkYzNiNmUz
OWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIzNGI5YjVhMGFkZThjMjc1NDdh
NDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOwogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGE5OWZlYjdm
NjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2MzY2MGQ5YWVkY2M4OWU2YjUy
MzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyArNDMwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgc3RhdGlj
IFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsg
fQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9CkBAIC00
ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QKICAgICAgICAgc291cmNlQnVm
ZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIAogICAgICAg
ICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAg
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMp
OwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7Ci0gICAgICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAg
ICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5m
bzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2s7Ci0g
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2su
Y29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tz
LmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZjQ1
NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4uNWRkN2U2MjMwZmU4ZTA1YjRm
ZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICBib29sIHNl
bGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODBjZmM0ZmFjMzQ1Yzky
ZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIxMjNhZWIzNDZlYTM5MmFlMDQz
ODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIGludCBUaWxlQ29u
dHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX21hcmdpblNp
emUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQoKS5zY2FsZSgpOwogfQogCi1S
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkKK1JlZjxQbGF0Zm9ybUNBTGF5
ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVy
ID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0
aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVh
dGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CiAKICAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIGxheWVyLT5zZXRQb3Np
dGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGFlMTliOGM1MTcxZmQ1NzQx
YTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5MDA1MTY1MjBkNWEwNjc1MjBh
YzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFRpbGVDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxh
eWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKIAogICAgIGNvbnN0
IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVHcmlkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3OGQxZDczNWNlNDkxYjNhZGE5
YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1NWExZDliNmVlMDgxNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgQ0FDRkxh
eWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
aG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgYXZh
aWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDQwNmUwODVmZmYx
ZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRiZTE0Mjk1MzgxYjQzMzI1YzBj
YzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTU1LDExICs1NSwx
MSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZv
aWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIp
OwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAgICBBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOworICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7CiAgICAgLy8gRklYTUU6IERl
ZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0
ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKQogICAgICAgICBu
ZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5NDc2OGRjMWE5MmEy
ZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdmYTExZjdhNThkZWZmNGE5ODI0
MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBW
aWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7
Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBhdXRvIHRy
YWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0lu
ZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklO
RygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZC51dGY4
KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwg
cGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFt
SWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwg
dHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdl
SW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsKQEAgLTk2OCw3ICs5NjgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFk
KTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAgICAgbV9wbGF5ZXItPmFkZEF1
ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7
Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgbV9w
bGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7CisgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFRl
eHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAgICAgICAgaWYgKGdzdF9pc19t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICBpZiAoZ3N0X2lu
c3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbWlzc2luZ1BsdWdp
bkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3Vs
dCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3Np
bmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1dG8gbWlzc2luZ1BsdWdpbkNh
bGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6
OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3VsdCwg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1pc3NpbmcgcGx1Z2luZyBpbnN0
YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3aXRoIHJlc3VsdCAldSIsIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEzLDEwICsxMzEz
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5D
YWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNz
YWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9k
ZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgp
LnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgKm1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6
OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1BsdWdpbkNhbGxiYWNrLmdldCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlv
biogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qPihnX3B0cl9hcnJheV9pbmRl
eChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChzdHJlYW0tPnN0cmVhbV90eXBl
ID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0cmVhbS0+cGlkKTsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRhdGEsIHBpZCk7
CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQg
dHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVy
bCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKG5ld1Vy
bCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRkOWJkZGYyYjc3ODM4NmNiOWI2
MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2ZkYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODc4
LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAgYXV0byBnc3RJbWFnZSA9IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4MGFkODMxMDguLmQwOTI5MjBj
MjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBw
c2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IG1lZGlhU2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSks
IG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1f
cHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0
cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICBtZWRpYVNhbXBsZS0+YXBw
bHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB9CiAKLSAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlhU2FtcGxlKTsKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUuZ2V0KCkpOwog
fQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRhYmRiNTQ1ZDA3ZS4uNmU0YjY0
ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0
ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXplKDE2KTsKQEAgLTYzLDggKzYw
LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRL
ZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1cnJlbnRLZXlJRC5yZXNpemUo
MTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZEtleUlEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNldCArPSAxNjsKICAgICAgICAg
ICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRLZXlJRC0+ZGF0YSgpLCAxNik7
CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAg
ICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBkYXRhU2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWREYXRhKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAKICAgICBtX2RhdGEucmVzaXpl
KGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKaW5kZXggNTdhNTY5NGQ1ZWFl
MTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNjYzFiNzYxNzVkOTIzODg2MjZm
MTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKQEAgLTY0LDkgKzY0
LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGtleUlE
QnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBpZiAoIWtl
eUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7CiAK
ICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFhMjdlYzg0MDZiZTA3NDFmLi4w
MWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIEZpbHRlck9w
ZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpdHlPcCA9IFBhc3N0aHJv
dWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+
IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8g
ZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2MTFiYjI2ZGM0NDJlMjdjOGYu
LjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIHRleHR1cmUgPSBC
aXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwogICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJhZGRkYjJkYTE5MjVhMzUzZjcz
YmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFmNGU2ZDJlYzdiMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTg3LDExICs4NywxMSBAQCBU
cmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGlk
ZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3Bl
cmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50
aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBpZGVu
dGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0
aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMwMTUzYy4uMDZjMGExOWYzMGQz
OWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBDb3B5IG91dCBQTkcgZGF0YSB0
byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5HIGRlY29kZXIuCiAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0byB0
YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
LSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKHBu
Z0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2
ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2YjhkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
QEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CiAKICAg
ICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAgICAgICBpZiAoTW9ja0JveDo6
cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAgICAg
ICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9j
a0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLnB0
cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0aCgpOwogICAgICAgICBtX3Ry
YWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUwMDIyMjc3YTgzMzg3ZWMzN2Fm
ZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJjZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBSZWY8TWVk
aWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYURlc2NyaXB0aW9u
PiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tN
ZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQpAQCAtMTE4LDkgKzExOCw5
IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAKLVJlZlB0cjxNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUo
cGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCkBAIC0xNDIsMTcgKzE0Miwx
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgp
LCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2Nr
Qm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVl
a1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0luaXRpYWxpemF0
aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0
Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBN
b2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChp
bml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUo
KSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1v
Y2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUo
c2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRlY2U2YWIzM2I1ZTg3YTUyNzI1
MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5ODI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGZpbmFsIDogcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7Cisg
ICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2YjgzMGZiZTBiNjAzZmQyZGJhZDBj
Li5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIyMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tU
ZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQogICAg
IHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwg
fk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBkZTUwNzgzYmZiNDc3MjRiZjU5
OTE5YWI2NmY5MWQuLmM0OWY0MjE3ODEyMGE0YzNkMmI0ZDMwMjY4NGIyZDgzYWYxZjQ2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzE5LDcgKzMxOSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gV1RGTW92ZShkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4
ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3
ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2llU3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2ll
U3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRl
KE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgQ29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRU
UENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkxODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRi
NDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTczODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3Rv
cmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBAIC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVT
dG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVh
dGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
IH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRl
eCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJjY2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2
Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1Nv
dXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxl
TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
ICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNT
aW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMu
c2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVz
c2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwg
Ynl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZp
bGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5
ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0
aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
ewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAg
IHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFy
eT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAg
ICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlwaGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZlNmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1
YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1l
bnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdp
bjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4g
bV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmlu
ZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdiMTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1
YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBt
X3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNh
YzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uZWUxZTIyNjgzMWNmNjQ5N2MwNGRmM2I1MDc3YWQ3
NTc5ODg1ZTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9y
ZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9p
ZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRl
clN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsMTIgKzkxNywxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogCiAgICAg
Y29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGlj
YWxPZmZzZXQ7Ci0gICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgYXV0byBzdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDB4OGQs
IDB4OGQsIDB4OGQpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENv
bG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQuc2V0
U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50KSk7CiAKICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKQEAgLTkzNywxMCAr
OTM3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRD
b3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVz
c0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIApAQCAtOTQ5LDIwICs5
NDksMjAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgLy8gMikgRHJhdyB0aGUg
cHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclBy
b2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZG91YmxlIGJhcldpZHRoID0g
cG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAg
IGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwog
ICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIx
MCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAx
MTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
NTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRp
ZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0
MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
MzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VHcmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFy
UGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQgb25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRv
Y3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAg
IC8vIGFuZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExl
bmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDExICsxNzQzLDggQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
W2luZm8uaWNvbiBDR0ltYWdlXSk7Ci0gICAgaWYgKCFpY29uSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwor
ICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uMTY3YTU0N2FjNmQyYzQ0YTY5OTdhNzAxNTE2MmQ3YTc1NDM3OThkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
QmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNhN2JiNGY1
OGZkYWI4MjViZjYxYzk3Yjc5Li4zNmU2Njk4YjJjNGI3NWQyY2FiNmE5ZDIzODRmZDBjODU4NzYz
ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKQEAgLTE0Myw5ICsxNDMsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFs
dWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZp
bHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBl
bmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVj
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMw
MDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjAyMzc5OTUyYmRjYjYxNmE4ZjA4M2ZiNDEz
NTdhMzE1NjBhYzg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksOSArODksOSBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsK
KyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5
N2IxZGNmODdlMmMyNWY5YTcuLmE3YTc2ODI5NmQzNGU0MjdlNTAwOWRhZTJhNzhjNDk5YzZmMGIy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBA
IC0xNDMsMTIgKzE0MywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5w
dXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJh
dG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0
Mik7ICAgIAotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0
Li5kOWRiMGFjZWI3ZjNlMDQ0Mjg1MjY3M2Y3YjgyYWRjMTkwMDM0NDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5
LDkgKzE4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5z
dHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
c3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExl
bmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92
ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRi
NWZmYWZkNDRmNTMuLjJiNDJmMzQ0MDgyODllZjliMDkwM2E4YTZiYTVhYzMyNGVjMzU1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0
ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZm
ZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlu
cHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJu
IGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNj
ZjFlZDZhNjQ0M2Y5NTFlY2Y0YmI4ZWY4YzU5Yi4uNjk4YTQ4NTRjMWIxNTRlMjkzNThhOWIyYjQ5
YjNmNmVlMjY4ZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcApAQCAtMTM0LDkgKzEzNCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0
ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjk1NDcyZGI3MTg2Mzk3NTAxNzA3N2E2OTMxOTY1
MzQ1YzQxMmYxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkK
ICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2Rl
KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkx
YjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5lZmE3N2RlMmMxYmJkNTg2MjVlNTZmODRhYzNlNTNiZjRk
MGY5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3Jl
YXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVu
T2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CkBAIC01OSw3ICs1OSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVy
biBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5
OWQ4YjBiNmZjLi43YTRjZDA4MmQ1NDE1OWFhZjUyNTAwMmRhOTQ2MGViYTFkOWVmMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUs
OSArMTQ1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAg
fHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVy
YXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5
ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uODg1MjcxMWE1YTZhNmQ0NDMzM2M0
ZTcxZTZlM2IyMTNhMGE1N2RjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZz
ZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDNhMmY0
ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjgxZWY0NTc2ODY5NzE3YTY5ZTlk
ZWI2ZTY0OTVkYTUxMTc0Y2MyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw5ICsxOTgsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUo
KS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMy
NjNiN2ZlMDA2MjU0ODkyNDQuLmUzY2Y1YWRjZjRmNjQ5N2Q3MzZiY2RiN2I2YzJlYmVhZjFmMGU4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDkgKzgx
LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRp
bGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmls
dGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFj
MTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0
NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBj
b25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4u
OTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVy
LT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6
IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29k
aW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2Rl
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUw
YTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAg
Ym9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cisg
ICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0g
cGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwg
ZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2gg
dGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhl
IGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVu
dFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5
ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyAr
NDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlv
biogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZi
ZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVh
MmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBm
YTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFl
ZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRN
ZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJv
ZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkg
PSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxm
Ll9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3Jl
YXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0
aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3
Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzEx
MzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0
cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNu
YXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0
KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1Ip
CiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21w
cmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZp
ZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSks
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsKKyAgICAg
ICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxw
dHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3Zl
KHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBz
aG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1
cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUo
Y29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsKQEAgLTU5MDIsNyArNTkwMiw3IEBAIC0g
KHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1h
Z2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAgICBpZiAoIWJpdG1hcCkgewogICAgICAg
ICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBjYjlhODBhMzdhYWNjOTViMjVmOTNjNDIu
Ljk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVjZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRp
CiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07
CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9u
LmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OwotICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsKKyAgICBhdXRvIHBvc2l0aW9u
ID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7
CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9z
aXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlm
eUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2FnZSAqLykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
N2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3
MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX1RM
U19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7
CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBX
ZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlm
aWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwotICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpKTsKKyAg
ICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRp
ZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCks
IFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJhNjhkMWRmZGNhMDA1NmNjNmNkZGYyN2Nm
NmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0
b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCA2N2YxMjIyYTc0NmM2
NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIyNDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0
OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRh
SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZj
ZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUgPT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEw
ZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFmOTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRi
NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGEKIAogc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihX
S1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIE5TRXJyb3Ig
Km9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQSTo6RnJhbWVIYW5kbGU+IGZyYW1lSGFu
ZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsK
KyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1l
UHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5T
KFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoKmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6
b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFt
ZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZy
YW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0KCkpIHVybFN0cmluZzpvcmlnaW5hbEVy
cm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7CiAKICAg
ICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IDlk
Nzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4MzhlYWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2Rj
MGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0xNzEs
NyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbEMKIAogY2xhc3MgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBk
MTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpA
QCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0
dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKIH0K
IAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCBhOTI5OWYx
Yjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjkyLi4yOTdmOTY4YjM1MjllMGMzNTVjZDRk
YjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTE5LDcgKzEx
OSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbAogCiBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOworICAgIHN0YXRp
YyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jiwg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcyODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2
Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIAogI3ByYWdtYSBtYXJrIC0gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKIH0K
IAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTcxMGRmMTljNDI2
NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3
MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwotICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIo
KSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVy
T2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4ZWUwNzA1OWEzMTNiMi4uZTQ2M2FjOTk0
YmI5ZjhhYWM0NGZlODI5MzhiZTEzNjE2YmIwNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQzNzQsNyArNDM3NCw3IEBAIFJlZlB0cjxW
aWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hv
dD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKKyAg
ICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7
CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCmluZGV4IDc1MDlkZGVkYjRjMDhlNmJlODU0YmI3Y2VmNzI1YTk3OWQ4MGRj
ZWUuLjg2ZGMwOWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFmMTcyNzFmNjhjNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBEb3dubG9hZFByb3h5TWFwOjp+RG93bmxvYWRQcm94eU1h
cCgpCiAKIERvd25sb2FkUHJveHkqIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBSZWZQdHI8RG93bmxvYWRQcm94eT4gZG93
bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJl
c291cmNlUmVxdWVzdCk7Ci0gICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25s
b2FkSUQoKSwgZG93bmxvYWRQcm94eSk7CisgICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxv
YWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAg
ICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFBy
b3h5LmNvcHlSZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5
LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgbV9wcm9j
ZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwg
ZG93bmxvYWRQcm94eS5nZXQoKSk7CiAKLSAgICByZXR1cm4gZG93bmxvYWRQcm94eS5nZXQoKTsK
KyAgICByZXR1cm4gZG93bmxvYWRQcm94eS5wdHIoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5
TWFwOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzk2NTg2OGJlMDQzMzll
Nzg0OWY0ZGQzNDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJkMjA1NzIw
YmI4OTAxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApA
QCAtOTYsMTEgKzk2LDExIEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQpCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5l
cmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
KyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBi
b2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmlj
YXRpb25JRCk7CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbm90aWZpY2F0aW9u
SURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRp
b25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZp
Y2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZp
Y2F0aW9uKSk7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgKm5vdGlmaWNhdGlvbik7
CisgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9w
YWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CisgICAg
bV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAogdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyNWM5YzZjZjU2Y2YyNTQzNDg3NmZkYmQxNjZmMTRjMDhm
ODE1MzQuLjQ3MDg4MTAwZWUzMWQwN2E2NmQ3ZTkxNThlNDk5NThiOGRmODU5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY0OSwxMCArMzY0OSwxMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkK
IAogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlEKSk7
CiAgICAgCi0gICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKKyAgICBhdXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8g
dGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJ
RCwgKnN1YkZyYW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCBzdWJG
cmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVXaW5kb3codWlu
dDY0X3QgZnJhbWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHdpbmRvd0lkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZmE0M2Ez
ZDFlNzgzMDkyYmI3YzAyMTgxNDdmZDE2NGY4MjdiMDNjMC4uOWUzZjQwNGJkNmU2YWJiM2FiMjQz
OWFiYTcyN2M2YjVjMzliZWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0
U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4g
cmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpj
cmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOworICAgIGF1dG8gcmVxdWVzdCA9IFN0
YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSkpOwogCiAgICAgaWYgKHN0YXRpc3RpY3NNYXNrICYgU3RhdGlz
dGljc1JlcXVlc3RUeXBlV2ViQ29udGVudCkKICAgICAgICAgcmVxdWVzdFdlYkNvbnRlbnRTdGF0
aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwyMCArMTcyMiwyMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlv
bjx2b2lkIChBUEk6OgogICAgICAgICByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MocmVxdWVz
dC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3Rh
dGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkK
IHsKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAw
MDU5PjogTWFrZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMg
d29yay4KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0
aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQg
dG8gZ2V0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3MgYnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBp
cyB1bmF2YWlsYWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3Qg
cmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgbV9zdGF0
aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgdWludDY0X3QgcmVx
dWVzdElEID0gcmVxdWVzdC5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKKyAgICBtX3N0YXRpc3Rp
Y3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCAmcmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlz
dGljcyhyZXF1ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKaW5kZXggMDYzNDMyNDliYWE3MjVhZmI2Y2I0NDRjNTUyMzI1M2QxN2UwODBiYy4u
ZTZiNDQ0ZTkxNDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2NkZDdiNTRlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00ODcsOCArNDg3LDggQEAgY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQcm9jZXNzUG8KICAgICBXZWJQcm9jZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9j
ZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKLSAgICB2b2lkIHJl
cXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwotICAgIHZvaWQg
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CisgICAgdm9p
ZCByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKKyAgICB2
b2lkIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOwogCiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IDVlM2ZiNjVj
MjMwZGJkODRkYWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQuLmUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFm
ZTEyYTFmOWVjMzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikKIHsKLSAgICBSZWZQdHI8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQ
ZXJtaXNzaW9uUmVxdWVzdD4gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVy
bWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24pOwotICAg
IGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdp
bnNQZXJtaXNzaW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAgYXV0byByZXF1ZXN0ID0gSW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRh
aWxzLCBkZXNjcmlwdGlvbik7CisgICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5kZW55KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3Rr
LmNwcAppbmRleCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVhMDA0MWRiZTEwMTQ0MjdmODYzLi45MmVh
ZDA0NWU4YjhmYzJlNGI5OTM0NDI2YmQxMGE0YThlNTlmOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKQEAgLTUzLDE4ICs1MywxOCBAQCBXZWJQYWdlUHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3dlYlZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIp
OworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygp
LCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAg
ICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRl
YnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5z
ZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRMb2dz
UGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVlKTsKICNlbmRpZgotICAgIFJl
ZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VH
cm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJG
b3JQYWdlKG51bGxwdHIpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3RvckxldmVsRm9yUGFnZShudWxs
cHRyKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNl
cy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNl
cy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAu
cHRyKCkpOwogICAgIG1fd2ViVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVh
dGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKG1fd2ViVmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95
ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1fd2Vi
VmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV93ZWJWaWV3KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRl
eCBiNjRlMzM1OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2YTcxOWZkMzRjLi5jYTE4N2E2NDIzNDEx
MmU4NTc5YmQ4NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAgICAgQVNTRVJUKCFtX2luc3Bl
Y3RvclZpZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdl
YlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwor
ICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAi
V2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAg
Ly8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVn
IGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
I2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoewogICAg
IH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6
Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2Uo
KSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9y
UGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CiAKICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9v
bChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VH
cm91cChwYWdlR3JvdXAucHRyKCkpOwogICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQo
d2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAg
Z19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9pbnNwZWN0b3JWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmll
d0Rlc3Ryb3llZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYzFjZjU4NzU4ZWNiYTk4NTdh
MGE2MWFkNDhkNmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5ZjY5M2NkMmIzYjU1Y2VjMjBlMTczYzJm
YjRiMTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgLSAodm9pZClnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBV
UkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAg
ICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgp
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICAgICAgYXV0
byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
dWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJW
aWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CiAgICAgICAgICAgICBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVlc3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRl
Y2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBj
aGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4
IDExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3ZjhlZDJjY2JhMzEuLjlmZWZmZGRmNDEwNDEy
ZTc2ZDJjMGMzZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNv
bnN0IFNoYXJlYWJsZUJpdAogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKQogewot
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0
byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZN
b3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9pbXBsLT5zZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShpbWFnZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJs
ZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG1faW1wbC0+
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRyKCksIGZpbGVuYW1lLCBleHRlbnNpb24s
IHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRO
YW1lKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJv
eHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5
V2luLmNwcAppbmRleCBjYmZlMzBlOWUwYmU4MzIxNTE4MTk2MzU1Zjc3OTgwOGI4MjRmMmY2Li4z
Nzk4YmZiYjVhOWM0MTRmNjBmZGMzY2JlYTljN2MwZGIzZTAyMzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTE5
Miw3ICsxOTIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUZyb250ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAg
ICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJL
aXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9w
ZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQg
Y2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0Vu
YWJsZWQodHJ1ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAgICBwcmVm
ZXJlbmNlcy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgIHByZWZl
cmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsgfSk7Ci0gICAgUmVmUHRyPFdlYlBh
Z2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdy
b3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3Jv
dXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9y
UGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwog
CiAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQgPSB7CiAgICAg
ICAgIHsgMCwgdGhpcyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggODI1MDkwMTc5
MDBmNDc4OTQ0OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4uOTMxMzQzZWIxYmI4NzMyZWE1ZDNiNTQy
NGM1MzA2Yzg0NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC01MCw4ICs1
MCw4IEBAIC0gKGlkKV9pbml0V2l0aEltcGw6KFdlYkNvcmU6OlJhbmdlKilpbXBsCiAKIC0gKGlk
KWluaXRXaXRoRG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQgKilkb2N1bWVudAogewotICAgIFJlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6
OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7Ci0gICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0
aEltcGw6cmFuZ2UuZ2V0KCldOworICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7CisgICAgc2VsZiA9IFtz
ZWxmIF9pbml0V2l0aEltcGw6cmFuZ2UucHRyKCldOwogICAgIGlmICghc2VsZikKICAgICAgICAg
cmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAKaW5kZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFkYWNmZGIzZmFmNDUwZTdjYWU2Zi4uOGMy
OTViYWViZmJhMmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlmZWQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBwYWlu
dFJlY3Quc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOwog
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJh
Y2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9y
ZVNpemUsIHsgfSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IDIxYTMxMjMzZTZmYzllMjgxOGEyZmNmYTMwMTkxYTVmYTE1Nzg4YjUuLjk1MTIzMDJi
MjgyZTQxZWQxYjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgUmEKICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlw
ZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVt
ZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNp
emUoKSk7Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwg
aXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggZWMwOTg2N2JmMDM4ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2
NjNiOGQ4ZS4uNmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3YTQyYjhmODk4Y2E5YjAwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC03OCwxMCArNzgsMTAg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoV2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsK
IAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQubW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkp
LCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSks
IHRvQVBJKGhpdFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFU
b1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJl
Zih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IGM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAuLjg4YzBhMmQ5YzYz
MTJkMmMwZWEwNmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTc1MSw3ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IG1fcGx1Z2luU2l6
ZTsKICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IoKSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsK
ICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBhcHBseURldmljZVNjYWxlRmFjdG9y
IGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAgY2FsbGluZyBpbnRvIFdLU0kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGMyY2JhMDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUzNTVjZDZmYzMyNjQuLjAxOTliODRmOGY0
ZTI4Zjc2OWE3NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZv
aWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VSTFJl
c3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5n
KilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291cmNl
UmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRp
b24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKKyAgICBh
dXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmco
KSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdpblZpZXcoKS0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3Rv
cmVTaXplID0gc2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2Fs
ZUZhY3Rvcik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1
dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwogCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0
b3IsIC1jb250ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0xODUzLDExICsxODUzLDcgQEAgdm9pZCBQ
REZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1l
LCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5U
ZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwg
cGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLQotICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1l
bWNweShzaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDMxNDc5YWZjMjlh
ZGY0YWM4NTJiYjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1OGVjZDlkMjM3ODkwNGIzNDdkMGQzYTZm
NDY3ZTk0NGQyZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApA
QCAtODQsOCArODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgIGlmICghSVBDOjpD
b25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9y
dHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7Ci0gICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhdXRvIHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJlZigpKTsKIAogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKQEAgLTk0LDcg
Kzk0LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgbV90b2tlbnNBbmRDb25u
ZWN0aW9ucy5zZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uZ2V0KCk7CisgICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLnB0cigpOwogfQog
CiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCmluZGV4IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAzYmI5NGYzYWJiNmJjOTFkMTYuLjk3MGVh
MWZlN2NhOTY0NWRkOWM3NzdjY2Q1ZTM2MmE2NmRlYWQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTI0Nyw4ICsyNDcsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94eTo6c25hcHNob3QoKQogICAgIGlm
IChzbmFwc2hvdFN0b3JlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90
QnVmZmVyOworICAgIHJldHVybiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3Jl
SGFuZGxlKTsKIH0KIAogYm9vbCBQbHVnaW5Qcm94eTo6aXNUcmFuc3BhcmVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVj
OTkxMTIyZDA4NDNkYWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4
NTI3MDA2Y2VlYmM5YzM3MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZp
ZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAg
Ly8gVGhpcyByZXF1ZXN0IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAg
ICBSZWZQdHI8U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlz
LCByZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJl
YW0oc3RyZWFtLmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6
Y3JlYXRlKHRoaXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwor
ICAgIGFkZFN0cmVhbShzdHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3
ZmFmNzg2MjU1Li43OGU2NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlCiAgICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEp
OwogICAgIGF1dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRh
KTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNl
SWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2Uu
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwg
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgp
LCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCku
ZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0
YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9y
aWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2Uo
KSk7CiAKICAgICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsK
LSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBp
ZiAobV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05l
ZWRlZCkpCisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0
ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZt
X3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBkMDVmYzk5NmMxZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0
YTA1OWY5ZWY3ODFlMTQ2MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTc2NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAK
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAg
ICBhdXRvIGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1f
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhl
IGJ1bmRsZSBjbGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCB1c2VyRGF0YSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rp
b25Vc2UpIHsKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNm
MGJmYWYzNGY2NGRhOGIzMTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYy
OTk0MjNiN2NiOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5
KHBhdGhuYW1lcywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VS
VChwYXRobmFtZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJy
YXkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBl
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uc0hhbmRsZUFycmF5W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlb
aV0pKSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlh
YzIzZDhkMTNlYmRmOTNjNjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1
ZWZmZjI0NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNl
VG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoaW1hZ2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFw
aGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQppbmRleCBmZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5m
ODdkOTM0NDNmN2M1OGE4MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxl
bWUKICAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAg
IH0KIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShlbGVtZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1h
Z2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEz
OGNkMmJmNjM3OTRjOGU5ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3
NTJlZjgxMWExMjQ1ZWI1NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBA
QCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5n
ZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9u
ID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2Zh
ZGUpCiAgICAgICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2Uo
cmFuZ2UsIGluZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1
dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwg
aW5kaWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0
SW5kaWNhdG9yKSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJ
bmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApp
bmRleCA3ODI0ZTVjZjcxYjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4
NmY0MmEwMWNmNDhlNWRmNjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcs
NyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
KQogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBiaXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShiaXRtYXBTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMw
OTI5ZDFmMy4uNjNjYzI4MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQog
CiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3Rl
ZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAg
ICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5k
aWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5k
aWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRB
bmltYXRlID8gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGlj
YXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYx
NzZkNjIwYjQ1ODlkYzM2NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJl
ZWE1NWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVy
ID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFn
ZS5wYWdlSUQoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0
b3JlRmx1c2hlciwgcGFnZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwg
W2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdl
SURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBN
b25vdG9uaWNUaW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIy
NGI2NDQ2ZDA1MjdkZjg2NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFi
NzE5Yjc5ODJjMDJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExv
YWRlckRldGFjaGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkK
IFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRl
ckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+
IGJvb2wgeworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29y
ZUZyYW1lKCktPmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZy
YW1lKSAtPiBib29sIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGJlNmJlZmI4MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3
Y2M4NDVlNTUzMmMzYjIwNmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQg
V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIEludFBvaW50IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAv
LyBGSVhNRTogU2V0IG1vZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHBy
b2JhYmx5IHNldCBJc1NpbXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3Vz
ZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29t
cG9zZWQ6OlllcywKKyAgICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNU
aW1lOjpub3coKSwgbnVsbHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBv
aW50LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIp
OwogCi0gICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVu
dC0+Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9j
a0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVy
OjpNYXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1l
RG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRy
KCksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRS
ZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0
IFdlYgogCiAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0
ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bnNIYW5kbGVBcnJheVtpXSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJh
eVtpXSkpKQogICAgICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVw
bG9hZC5hcHBlbmQoZXh0ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5k
ZXggMGM4NGY2NGM4YzYzZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5
ZmFkMDE3MWMxODgzZjAwY2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQs
NyArOTQsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1l
JiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0Zp
bmRJbmRpY2F0b3IgPSBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4g
dGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1l
KHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJn
aW4sIHRvdGFsVmVydGljYWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5k
VGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9u
OjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFy
Z2luKSk7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggOWRmNjE4YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uMTAzZmVh
MzNmZjFiMTEyYzUzMGY1OWU2ZTU2Y2Q1OGViMzRmMWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsMTQgKzE4
MjAsMTQgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYg
b2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0
aW9uLnByZXZpb3VzKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBwb3Np
dGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnN0YXJ0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3Rh
cnQoKSk7CiAKLSAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdl
dCgpKSAhPSBvbGRUZXh0KQorICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
cmFuZ2UucHRyKCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2VsZWN0aW9uIGhhcyBjaGFu
Z2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRleHQuCiAgICAgZnJhbWUu
ZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UucHRyKCksIFVQU1RSRUFNLCBXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9y
KCkuaW5zZXJ0VGV4dChuZXdUZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVT
ZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKIH0KQEAgLTIxMzYsMTcgKzIxMzYsMTUgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlu
a0VsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmtSYW5nZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBmbG9hdCBtYXJnaW5JblBvaW50cyA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBS
ZWY8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlua0VsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxv
YXQgbWFyZ2luSW5Qb2ludHMgPSA0OwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVX
aXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50
IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0
aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RB
bmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hl
c1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZs
b2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50
cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRl
eHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UobGlua1JhbmdlLmdl
dCgpLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5kaWNhdG9y
T3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91
bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVu
dEZvckNvbXBsZXhSYW5nZXMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRp
Y2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2lu
dHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3Rv
cikpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlua0luZGljYXRvciA9IHRleHRJ
bmRpY2F0b3ItPmRhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8ubGlua0luZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpAQCAtMjE1Niw3ICsy
MTU0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm8uZGF0YURldGVjdG9ySWRlbnRpZmllciA9IERhdGFEZXRlY3Rpb246OmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIoKmVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRh
RGV0ZWN0b3JSZXN1bHRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0
aW9uUmVzdWx0cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFEZXRlY3Rpb246
OnJlcXVpcmVzRXh0ZW5kZWRDb250ZXh0KCplbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoKmVsZW1lbnQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdv
cmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZGF0YURldGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
dGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRp
b24oKSwgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2Fy
ZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CkBAIC0yMTgxLDcg
KzIxNzksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1h
Z2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRp
b247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBDb25maWd1cmF0
aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShtX3BhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlv
bikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHNoYXJl
ZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFw
U2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJp
dG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZDI1NTVjMTk5MDhhYmE2
NmEyNGMxYzFiZGQxNTZmMmQzZDI5MDQ4My4uNDdmYzNjMjkwZjY1MGUzNjdkYjk4ZDRjMzcxMzVm
OTNmNjRlNDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpA
QCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3Jt
LnNjYWxlKHNjYWxlKTsKIAogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJW
aWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRy
YW5zZm9ybSIpOwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5p
bWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1h
dGlvbkNBLmdldCgpKTsKKyAgICBhdXRvIHJlbmRlclZpZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOwogICAg
IHJlbmRlclZpZXdBbmltYXRpb24tPnNldFRvVmFsdWUodHJhbnNmb3JtKTsKIAogICAgIFJldGFp
blB0cjxDQUxheWVyPiBzaGFkb3dDQUxheWVyOwpAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBGbG9hdFBvaW50CiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+YXBwbHlUcmFuc2llbnRa
b29tVG9QYWdlKHNjYWxlLCBvcmlnaW4pOwogICAgIH1dOwogCi0gICAgem9vbUxheWVyLT5hZGRB
bmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiLCAqcmVuZGVyVmlld0FuaW1hdGlv
bik7CisgICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21t
aXQiLCByZW5kZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVy
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0Zv
ckZyYW1lKGZyYW1lVmlldywgc2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDgw
NWZlOWU0Y2JiNWQ3MjZmZjIyNmZlZDU4ZDIwYTFkN2U5ZGJiMjEuLjg4MzAxNzI2NWJiYTk1NmRj
OWQyMmY2YjYwNDQ0YjE4MDYwZWZmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTQw
LDI0ICs0MCwyNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxw
dHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90
YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
RXBoZW1lcmFsTG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpF
cGhlbWVyYWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUlu
Qnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwg
cXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxP
cmlnaW4sIHF1b3RhSW5CeXRlcykpOwogfQogCiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYg
bWFwKQogICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpz
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBpZiAobV9zdG9yYWdlVHlw
ZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCiAgICAgICAgIHJldHVybiBlcGhlbWVy
YWxMb2NhbFN0b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTE4NSwxNiArMTg1LDE2IEBA
IGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYSBmaW5hbCA6
IHB1YmxpYyBTdG9yYWdlQXJlYSB7CiAgICAgUmVmUHRyPFN0b3JhZ2VNYXA+IG1fc3RvcmFnZU1h
cDsKIH07CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVt
ZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExv
Y2FsU3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikK
IHsKICAgICBhdXRvJiBzbG90ID0gbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcy5hZGQoc2Vj
dXJpdHlPcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNsb3QpCiAg
ICAgICAgIHNsb3QgPSBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWE6
OmNyZWF0ZShzZWN1cml0eU9yaWdpbiwgbV9xdW90YUluQnl0ZXMpOwotCi0gICAgcmV0dXJuIHNs
b3QuZ2V0KCk7CisgICAgQVNTRVJUKHNsb3QpOworICAgIHJldHVybiAqc2xvdDsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5l
d1BhZ2UpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
UGFnZSogbmV3UGFnZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCkBA
IC0yMDIsNyArMjAyLDcgQEAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiAgICAgICAgIHJldHVybiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnBhZ2VJRCgp
LCBtX3F1b3RhSW5CeXRlcyk7CiAKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdl
VHlwZTo6RXBoZW1lcmFsTG9jYWwpOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
bmV3TmFtZXNwYWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFn
ZVR5cGUsIG1fc3RvcmFnZU5hbWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1
b3RhSW5CeXRlcykpOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNwYWNl
ID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0
b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMp
KTsKIAogICAgIGZvciAoYXV0byYgaXRlciA6IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMp
CiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcy5zZXQo
aXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBm
MTNhMjJkY2JkMjFiNjc0MGU0NTIzN2Y0ZGZhZDgzMTI1NjcyOWUzLi45N2RiMGI4MTNiYWY1Y2I1
YTQ3ZDcyZWU1YTA2NTVlNjc1MDBlZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDEw
ICszOSwxMCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRp
YyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CisgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOwogCiAgICAgdmlydHVhbCB+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAtNTYsMTAgKzU2LDEwIEBAIGNsYXNzIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdl
VHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
IG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNv
cmU6OlBhZ2UqKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4g
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2FsU3RvcmFn
ZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwogICAgIGNvbnN0IHVpbnQ2NF90IG1f
c3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAK
aW5kZXggNDYyZGU4NmM0OTAwNGYxYWY2OTFlZDBiNjcxNjE4ZjAzYTdmZmUyYy4uODI1NTdiNzI3
MTRhZDg3MjY1N2VhZjg0OTY4NTIxYTcxMzYwMzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgc3RhdGljIEhhc2hNYXA8dWludDY0
X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSh1aW50NjRf
dCBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
c2xvdCkKLSAgICAgICAgcmV0dXJuIHNsb3Q7CisgICAgICAgIHJldHVybiAqc2xvdDsKIAotICAg
IFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciA9IGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoaWRlbnRpZmll
cikpOwotICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuZ2V0KCk7CisgICAgYXV0
byBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7CisgICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5wdHIoKTsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiB9
CkBAIC02NSwyMiArNjUsMjIgQEAgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKICAgICBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCku
cmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdl
Ojpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVv
dGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwg
dW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZw
YWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmln
aW4sIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2
ZWxPcmlnaW4sIHF1b3RhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5k
ZXggOGVhMjVlNmU3NTA5ZWIyYzE3YmQxZjk0ODRjMzczMWY2YzFlYTc5NS4uM2NlNmRiOWYwNjhl
ODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgKQEAgLTMxLDE2ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwor
ICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1
aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYs
IHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAg
UmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCmluZGV4IGNmMzA4NWI4NDBmMDdmZDdkMDU5MjEzNTI1ZGQ0N2RiZTFiZWI0NzEuLmZjNjU5
ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBA
IC0yMDIsOSArMjAyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjppbnZhbGlkYXRl
KCkKIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2Rl
bCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwotICAgIG1v
ZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CisgICAgYXV0byBtb2RlbCA9IFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsK
KyAgICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCA3ZjYzMzA5ZjMyYTBhODNhMzhkMGMyODgyNWU4MTczYjAyMjFmMTZl
Li41ZDYxMTBiNzkwOWYzNGNjZTNlNzYyYmZkMzhkMmIyZjcyMWQ1MjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpp
bnZhbGlkYXRlKCkKIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBs
ZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0g
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQp
OworICAgIGF1dG8gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3Jl
YXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CiAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLT5hZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNl
dExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJu
YWxIb3N0aW5nUHJvY2VzcygpKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOwor
ICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAppbmRleCAwMTgxNWMxM2FjMmExMDI5NjQwMzI3MzE3MjI2N2UzMjU2ZThjMmVjLi40YTk0YTFk
ODVjZWNhMWUzYzYzYmM3MmE4NmFiMDZhZjBlMTg2ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTkzLDMxICs5
MywzMCBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAg
ICAgICAgY2xvc2UoKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVt
ZXJhbExvY2FsKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNw
YWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1f
cGF0aCwgbV9xdW90YSkpOworICAgIGF1dG8gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKICAg
ICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3N0b3JhZ2VBcmVhTWFwKQogICAgICAgICBuZXdOYW1lc3Bh
Y2UtPm1fc3RvcmFnZUFyZWFNYXAuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwog
Ci0gICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKKyAgICByZXR1cm4gV1RGTW92ZShuZXdOYW1lc3Bh
Y2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9y
YWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKK1JlZjxTdG9yYWdlQXJl
YT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFtX2lzU2h1dGRvd24pOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFy
ZWE7Ci0gICAgaWYgKChzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikp
KQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7CisgICAgaWYgKFJlZlB0cjxTdG9yYWdlQXJl
YUltcGw+IHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkKKyAgICAg
ICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VOb25OdWxsKCk7CiAKLSAgICBzdG9yYWdlQXJl
YSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5j
TWFuYWdlci5nZXQoKSwgbV9xdW90YSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2lu
LCBzdG9yYWdlQXJlYS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0b3JhZ2VBcmVhOworICAgIGF1dG8g
c3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmln
aW4sIG1fc3luY01hbmFnZXIuZ2V0KCksIG1fcXVvdGEpOworICAgIG1fc3RvcmFnZUFyZWFNYXAu
c2V0KG9yaWdpbiwgc3RvcmFnZUFyZWEucHRyKCkpOworICAgIHJldHVybiBXVEZNb3ZlKHN0b3Jh
Z2VBcmVhKTsKIH0KIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRl
eCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgwYmZkNjVhOTY2NjE2MTM3Li5jODhmMDYxZWY1ZTUw
YzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtNTcsOCArNTcsOCBAQCBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
IHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5
cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWduZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShX
ZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFn
ZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92
ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5l
d1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAg
IFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmlu
ZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0NWE0NmQ2NzdjODg0YWJkOWUuLjgzNjIwNTdmZmQ3
NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTExZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBA
IC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNoU2V0PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkKICAgICByZXR1cm4gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4g
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQpA
QCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5j
TG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBh
Z2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEp
OwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIC8v
IEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50YXRpb24gd291bGQgY3JlYXRlIGEgc3BlY2lhbCBu
YW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgcGlnZ3ktYmFja2luZyBvZmYKICAgICAvLyBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDBkMjA3
ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0ZWMwNzdhYmIuLmU1ODlmZWU3YTVjNmM5MWNmOTRi
N2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBS
ZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcigpOwogCiAgICAgc3RhdGljIHZvaWQgY2xvc2VMb2NhbFN0b3JhZ2UoKTsKQEAgLTQ5
LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWdu
ZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90
YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92
ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAg
ICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCmluZGV4
IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVlMDY2N2QxYTYyMTNiOWQuLjYzY2FlMmQwYWQ1MmNk
NTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAKQEAgLTQyLDE4ICs0MiwyMiBAQCBz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3Vw
cygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91cHM7CiB9CiAKLVJlZlB0cjxXZWJWaWV3R3JvdXA+
IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdH
cm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3Vw
KFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIAogICAgIGF1dG8mIHdlYlZp
ZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5hZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwotICAgIGlmICghd2ViVmlld0dyb3VwKQotICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9w
dFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwot
ICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYm
IHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQorICAgIGlmICghd2ViVmlld0dyb3Vw
KSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAobmFt
ZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgICAgIHdlYlZpZXdHcm91cCA9IHJl
c3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYg
KCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91
cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAgICAgICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogCi0gICAgcmV0dXJu
IHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4gKndlYlZpZXdHcm91cDsKIH0KIAogV2ViVmlld0dy
b3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAppbmRleCBmZTA1Y2Q1
NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkzMjcyYjVmLi40ZDQxMzdjZTJhYWFjM2ExNDBkNTlj
NjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAgLTM4LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBXZWJW
aWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3Jv
dXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAg
IH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0YXRpYyBXZWJWaWV3R3JvdXAqIGdldChjb25zdCBT
dHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKaW5kZXggZDA4NDkzYjBmNDJj
Y2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVkMC4uODA0OWIxY2NjMjcyYzM0NzI1OTllNDk0MmU1
MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCkBAIC0yNiwxMyArMjYs
MTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTZWFyY2hQb3B1cE1lbnVJT1M6OlNl
YXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAo
YWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRS
ZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNo
UG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOwor
ICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiB2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNl
bnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDcx
NmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4ZWY1OTg3OWFmNGYuLjBlZjQ0YjQyYTY2MGFlMzUy
YzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zOCw3
ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTZWFy
Y2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudUlPUz4g
bV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBTZWFyY2hQb3B1cE1lbnVJT1NfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJs
ZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkwMGY0ZjBlNmI5YTVlNjg5ZmMxOWM4NzM3NDQyYjVi
MjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBjZmFmMmYzMmExMzYxZjY2ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
YmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0MzMsOCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2lu
Z1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVybmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5h
dAogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtYXJrZXJBbHRlcm5hdGl2ZXMu
c2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAgWyhOU011dGFibGVBcnJheSAqKSphbHRlcm5h
dGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKShtYXJrZXJBbHRlcm5hdGl2ZXNbal0pXTsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtl
ci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7Cisg
ICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICB9CiAgICAgfQogICAgICAgICAK
QEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aENvcnJl
Y3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgp
OyBpKyspIHsKICAgICAgICAgY29uc3QgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNb
aV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtl
ci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
LCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBraXQocmFu
Z2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQo
KSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLnB0cigpKTsKICAgICAgICAgfQogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2Vi
UERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5kZXggOTZhNjQ5NmMyYzQ0NjA5OTJjNWMxMmMwZGNm
ZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVlMTQ5OGQ5ZjM0YjljMDk2MjkzZGMzNmNhNWVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxh
Y2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwxMyArNDY1LDEzIEBAIC0gKHZvaWQpc2ltdWxhdGVD
bGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVSTAogICAgIGlmICghVVJMKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNl
bGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKKyAgICBhdXRvIGV2ZW50ID0gTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywK
ICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIDEsIHsgfSwgeyB9LCB7IH0s
IHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgTW91c2VFdmVudDo6SXNTaW11bGF0
ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlz
IGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJhbWVdKTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7IH0sIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tG
b3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFs
aWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywgIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFt
ZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCksIG51bGxwdHIpOworICAgIGZyYW1lLT5sb2FkZXIo
KS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LnB0cigp
LCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXgg
Zjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4NjM1ZTNhYThmNGFkNC4uMWI2YzgyMjg1NGEwN2Yz
ZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9pZClnZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJ
bWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNBcnJheSAqKilyZWN0cwogICAgIFJlZjxSYW5n
ZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMobm9kZSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXJn
aW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAg
UmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8
CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfAogICAgICAgICBU
ZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8CiAgICAgICAgIFRleHRJbmRpY2F0
b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblVz
ZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVudEZvckNvbXBsZXhSYW5nZXMgfApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KaW5kZXggMWYzMmRjOTQ5OGJhNDIyMWQxMjkz
OTFiODQ3OWFiYTMwYTk3OTg5NC4uYTA0YmM1NTdiZmRkYzk3NmZkMTgwNWFmZWI3ODY1YjRkMTI3
YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCkBAIC0yNzEsNyAr
MjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4KICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQ
cm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OnByb3BlcnRpZXMu
Z2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVy
cm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChkYXRhKTsKICAgICAKLSAgICBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0YW5jZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVsbEZyYW1lKTsKKyAgICBhdXRv
IGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5
LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IGluc3Rh
bmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAga2Vybl9yZXR1cm5fdCBrciA9IF9XS1BISW5zdGFu
dGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0KCksIHJlcXVlc3RJRCwgc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRhIGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCBp
bnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAgaWYgKGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RF
U1QpIHsKQEAgLTI5OSw3ICsyOTksNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgogICAgIGlu
c3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVwbHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAg
ICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJlcGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAg
ICByZXR1cm4gaW5zdGFuY2U7CisgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogfQogCiB2
b2lkIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OmNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdpbkFyY2hpdGVjdHVyZSwgY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCmluZGV4IDg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4Yjdj
MzIuLmFiY2E2YmJlMzMwNTM1YTk4MmU2NDJkNGMyYTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJl
cXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0g
YW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxp
dmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9
IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAg
ICAKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBI
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMu
YWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBI
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMu
YWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAg
ICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1F
VHlwZTpAInRleHQvcGxhaW4iIApAQCAtNzk5LDEwICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwg
Y29uc3QgY2gKICAgICAgICAgbV9wbHVnaW5SZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5S
ZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQs
IHJlcXVlc3QpOworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQo
IW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChy
ZXF1ZXN0SUQsIHN0cmVhbSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJl
YW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KaW5kZXggOWE3NDVkOTM4M2Y3NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4
MC4uMWQxZThhZWY2NzUyMzYxZjNlY2MwNDY1MDVkNDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1
Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAqKUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAv
LyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRo
ZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2Vz
LgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0
IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAg
ICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmRO
b3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAg
ICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1J
TUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC0xNjc4LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxv
YWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdCBpblRhcmdldDooY29uc3Qg
Y2hhciAqKWNUYQogICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQ
bHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVnaW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAg
ICAgICAgIFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2VdOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJl
ZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURh
dGEpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAg
ICAgICBzdHJlYW1zLmFkZChzdHJlYW0uZ2V0KCkpOworICAgICAgICBzdHJlYW1zLmFkZChzdHJl
YW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRi
OGQ5MTJkNTFmM2ZmYi4uMjM0NzgxYjBiZTg2YTRiZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5Q
dHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVj
dGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9j
dW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3Ip
LCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAg
ZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVj
dGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xk
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZWM4ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFk
MDY3NjJhNTY3ZC4uODQ2MGIwM2Y1MGM3YzJiMTNhMTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IGlmIChpc01haW5GcmFtZSAmJiBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1l
LT52aWV3KCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOwogICAgIGNvcmVGcmFtZS0+c2V0Vmll
dyhudWxscHRyKTsKLSAgICBSZWZQdHI8RnJhbWVWaWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6
Y3JlYXRlKCpjb3JlRnJhbWUpOworICAgIGF1dG8gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0
ZSgqY29yZUZyYW1lKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcoY29yZVZpZXcuY29weVJlZigp
KTsKIAogICAgIFttX3dlYkZyYW1lLmdldCgpIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1do
aWxlT2Zmc2NyZWVuXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDdiOWJiODk5MDhhZTVjMWE2NTJlMzZjYzg4OWJlMDRlNTY1NGM5NDYuLmE5M2Rl
ZjYxMzk5YTVjYzU0ZWY2MWNhZTljMDM3OTkwNTg5MGNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTc0Niw4ICsxNzQ2LDggQEAgLSAodm9p
ZClnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFk
YXRhczooTlNBcnJheSAqKikKICAgICAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNl
dCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIERPTVJhbmdlICpk
b21SYW5nZSA9IGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwg
bWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBr
aXQocmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0YWRhdGEg
IT0gcHJldmlvdXNNZXRhZGF0YSkgewogICAgICAgICAgICAgICAgIFttZXRhZGF0YXMgYWRkT2Jq
ZWN0Om1ldGFkYXRhXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IDljM2MyYmI5OWNjMGM2Y2QzMDUzNzk4ZGRiNjY0NGM5ZTdkYjgxNDIu
LjRhODZjNzk0NTVmYjM2ZDBjNWJlYmZiMzkwY2U4NDYzZmViMjQyNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTM0OCw3ICsxMzQ4
LDcgQEAgLSAodm9pZClfd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5
ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3QKIHsKICAgICAvLyBQdXQgSFRNTCBvbiB0aGUg
cGFzdGVib2FyZC4KICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9h
cmRUeXBlXSkgewotICAgICAgICBpZiAoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9m
cmFtZV0pKSkgeworICAgICAgICBpZiAoYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAg
ICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gY29yZUFyY2hpdmUgPyBjb3JlQXJj
aGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkgOiAwKQogICAgICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkgZm9yVHlwZTpXZWJB
cmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZWI5NTc1MjgyYzFiNjUzZGNiYzlhYTZhNDdlZDcwYzA1
ZTdkNWVmLi40ZjkwZjYzOTM5NzQxMjY5NzY4ZDYzMDM2Y2IwZDNiMGQzMGM5MWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC00NzI5LDggKzQ3Mjks
NiBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUg
d29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmco
KSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybjsKIAogICAgIGlmICghd29y
bGQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3NTQsOCArNDc1Miw2IEBAICsgKHZvaWQpX2FkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlw
dFdvcmxkICopCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmll
d0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdH
cm91cCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcAppbmRleCA1YzA3NzEyMTFlYWVkNjQ5MDczZTEwM2U5MDRhNWVjOTA0OWI0NjNmLi5iYzc5
ZDg5YmQ0NDZjNTZlYTFiYTlkNTdjNzVhZTM5OWFhOGYwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0
MSw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgICAgICAgICAgcmVtb3Zl
KG9sZFBhY2thZ2UuZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblBh
Y2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgYXV0byBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFj
a2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CiAgICAgICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNr
YWdlLnJlbGVhc2VOb25OdWxsKCkpKQogICAgICAgICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggZjg1NWRkMjYzZjc5Y2RmZDQxYjY0NjU5NTAyMmE4YzQ0Y2NhMmY0NS4uZWYw
YTJlMjBiNDEzNzY2MGYyN2JlNWJhNGZhY2NiZmIwZjYyNGFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KERvY3VtZW50JikKIHsKICAgICBBU1NFUlQo
IW1faXNTdGFydGVkKTsKICAgICBpZiAoIXN0YXJ0KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PFdl
YkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkpLmRp
c3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4odGhpcyk7CisgICAgICAgIHN0YXRpY19jYXN0PFdl
YkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkpLmRp
c3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oKnRoaXMpOwogfQogCiBQbHVnaW5WaWV3Ojp+UGx1
Z2luVmlldygpCkBAIC00MTAsOCArNDEwLDggQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVx
dWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBh
IHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwKICAg
ICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0aGUgbG9hZGVyCiAgICAgICAgIGlmICh0YXJn
ZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFt
PiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgp
LCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3Qt
PnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1
Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKLSAgICAgICAgICAg
IG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKKyAgICAgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2lu
U3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9u
KCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3Rh
bmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7CisgICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgc3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBmcmFtZSBpcyBvdXIgZnJhbWUs
IHdlIGNvdWxkIGRlc3Ryb3kgdGhlCkBAIC00NTQsOCArNDU0LDggQEAgdm9pZCBQbHVnaW5WaWV3
OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICAgICAgICAg
IGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRy
PFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJl
bnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwg
cGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7
Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBQ
bHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5m
cmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmlj
YXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwg
aW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAgICAgbV9zdHJlYW1zLmFkZChz
dHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFtLT5zZW5kSmF2YVNjcmlwdFN0cmVhbShy
ZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9CiB9CkBAIC02OTAsMTEgKzY5MCwxMSBAQCBSZWZQdHI8
SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFBsdWdpblZpZXc6OmJpbmRpbmdJbnN0YW5jZSgpCiAg
ICAgfQogCiAgICAgYXV0byByb290ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkuY3JlYXRlUm9v
dE9iamVjdCh0aGlzKTsKLSAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGluc3Rh
bmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCBXVEZNb3ZlKHJv
b3QpKTsKKyAgICBhdXRvIGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVh
dGUob2JqZWN0LCBXVEZNb3ZlKHJvb3QpKTsKIAogICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmpl
Y3QpOwogCi0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNl
KTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggN2NmYzdhOWE4MmU3MmM5MTJmNWRi
OTk5Y2ZiMzdiZjljZjFhOWY0ZS4uYjViNjBhODA5OTFkNjA3MTBiODcwNjMwMjQwMjFkNjUwOTA2
MzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTMxNyw3ICszMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgVmVjdG9y
PGJvb2wsIDQ+IG1fcG9wdXBTdGF0ZVN0YWNrOwogCi0gICAgICAgIEhhc2hTZXQ8UmVmUHRyPFBs
dWdpblN0cmVhbT4gPiBtX3N0cmVhbXM7CisgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0
cmVhbT4+IG1fc3RyZWFtczsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5S
ZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKIAogICAgICAgICBib29sIG1faXNXaW5kb3dlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxOTNlMDJiMDUwMThlZjU4ZmU0MTZmY2JmYjY3
NWVkZTNmYzU4OTZjLi41MGFjZjc3OWRkNmI1NDQ4NDg0OGVjYzI1YzE4NjQ4Yjk5NmFiN2Q2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBPYmpl
Y3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBl
OjpOb25lOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxU
b1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpblZpZXcpIGNvbnN0Cit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBs
dWdpblZpZXcmIHBsdWdpblZpZXcpIGNvbnN0CiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAtMTA3MiwyMyArMTA3MiwyMyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdp
blZpZXcqIHBsdWdpbgogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2Vy
SW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwotICAgIEFTU0VSVChmcmFt
ZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKKyAgICBBU1NFUlQoZnJhbWUgPT0gcGx1
Z2luVmlldy5wYXJlbnRGcmFtZSgpKTsKIAotICAgIGlmICghcGx1Z2luVmlldy0+cGx1Z2luc1Bh
Z2UoKS5pc051bGwoKSkgewotICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1
Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOworICAgIGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFn
ZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVn
aW5WaWV3LnBsdWdpbnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9y
UGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFwbHVnaW5WaWV3LT5t
aW1lVHlwZSgpLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuaXNO
dWxsKCkpIHsKICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvck1JTUVUeXBlS2V5KTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luVmll
dy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmIChwbHVnaW5WaWV3LT5wbHVn
aW4oKSkgewotICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXctPnBsdWdpbigp
LT5uYW1lKCk7CisgICAgaWYgKHBsdWdpblZpZXcucGx1Z2luKCkpIHsKKyAgICAgICAgU3RyaW5n
IHBsdWdpbk5hbWUgPSBwbHVnaW5WaWV3LnBsdWdpbigpLT5uYW1lKCk7CiAgICAgICAgIGlmICgh
cGx1Z2luTmFtZS5pc051bGwoKSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtl
eSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJv
clBsdWdJbk5hbWVLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTEx
MDAsNyArMTEwMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgCiAgICAgaW50IGVycm9y
Q29kZSA9IDA7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uOwotICAgIHN3aXRjaCAocGx1Z2luVmll
dy0+c3RhdHVzKCkpIHsKKyAgICBzd2l0Y2ggKHBsdWdpblZpZXcuc3RhdHVzKCkpIHsKICAgICAg
ICAgY2FzZSBQbHVnaW5TdGF0dXNDYW5Ob3RGaW5kUGx1Z2luOgogICAgICAgICAgICAgZXJyb3JD
b2RlID0gV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luOwogICAgICAgICAgICAgZGVzY3JpcHRp
b24gPSBXRUJfVUlfU1RSSU5HKCJUaGUgcGx1Zy1pbiBjYW5ceEUyXHg4MFx4OTl0IGJlIGZvdW5k
IiwgIldlYktpdEVycm9yQ2Fubm90RmluZFBsdWdpbiBkZXNjcmlwdGlvbiIpOwpAQCAtMTExMyw3
ICsxMTEzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9T
dGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihT
dHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdpblZpZXctPnVybCgpLCBT
dHJpbmcoKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRF
cnJvckRvbWFpbiksIGVycm9yQ29kZSwgcGx1Z2luVmlldy51cmwoKSwgU3RyaW5nKCkpOwogICAg
IENPTVB0cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFu
Y2UocmVzb3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQo
KSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpA
QCAtMTE1OCw3ICsxMTU4LDcgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFt
ZSk7Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVh
dGUoZnJhbWUsIHBsdWdpblNpemUsICZlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKKyAgICBhdXRvIHBsdWdpblZpZXcgPSBQbHVn
aW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNpemUsICZlbGVtZW50LCB1cmwsIHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIAogICAgIGlmIChwbHVn
aW5WaWV3LT5zdGF0dXMoKSA9PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCiAgICAg
ICAgIHJldHVybiBwbHVnaW5WaWV3OwpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0JiBwbHVnaW5XaWRnZXQp
CiBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgVVJMJiAvKmJhc2VVUkwqLywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1Z2luVmlldyA9IFBs
dWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxlbWVudCwg
VVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxl
dCIsIGZhbHNlKTsKKyAgICBhdXRvIHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29y
ZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CiAKICAgICAv
LyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5CiAgICAgaWYg
KHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdpblZpZXctPnBsdWdpbigpLT5sb2FkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBmOGQ3NDg4NWYwNmM1NGE0MzM4NzY5MzMzOGMw
ZTA2MzI0ZDk4YWNiLi4yZmJhYjc5YzcwZDAyMTRlODRmMDdlOGRiZThhZDQ3MThjMWM3OTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgV2ViRnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1Ymxp
YyBXZWJDb3JlOjoKICAgICB2b2lkIHNldFdlYkZyYW1lKFdlYkZyYW1lKiB3ZWJGcmFtZSkgeyBt
X3dlYkZyYW1lID0gd2ViRnJhbWU7IH0KICAgICBXZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX3dlYkZyYW1lOyB9CiAKLSAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQ
bHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyopIGNvbnN0OworICAgIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5WaWV3JikgY29uc3Q7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYzAzMjQyYzdkNmI2MmQ4ZmM2MzVkOWEwZDdi
ZDZlNWQ3YzI1OWZlZC4uNDVlNGE1N2I1YThiYWMyZGE3YjQ0ZTRkZmJmODIxY2FlZjBhYjhiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIEhS
RVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1
ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4
dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZy
YW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWlt
ZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdV
UkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4o
bWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNjEwLDcgKzYxMCw3IEBAIEhSRVNV
TFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBt
aW1lVHlwZSwgX0luXyBCU1RSCiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJp
bmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBs
YWluVGV4dCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0
cmluZ0xlbihwbGFpblRleHQpKTsKICAgICBCU3RyaW5nIHBsYWluVGV4dE1pbWVUeXBlKFRFWFQo
InRleHQvcGxhaW4iKSwgMTApOwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYt
MTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBwbGFpblRleHRN
aW1lVHlwZSwgdXRmMTZFbmNvZGluZywgdXJsLCBudWxscHRyKTsKQEAgLTYxOSw3ICs2MTksNyBA
QCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRl
eHQsIF9Jbl8gQlNUUiB1cmwpCiAKIHZvaWQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8g
QlNUUiBodG1sU3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxl
VVJMKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2Yo
VUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJpbmcpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJp
bmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJpbmcpKTsKICAgICBCU3Ry
aW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1v
dmUoc2hhcmVkQnVmZmVyKSwgMCwgdXRmMTZFbmNvZGluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVV
UkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggMWJhZGQwMWMzYTc2NDBj
Y2YxMTMwNGE0MzVhN2IxZTI0NTExNWZkZS4uNTAyY2E4OWRmNmI5MGQwYTI3N2Q3OWIxYmI1OTg3
MWI1ZDExNDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC0xOTksNyArMTk5
LDcgQEAgY2xhc3MgREVDTFNQRUNfVVVJRCgie0EzNjc2Mzk4LTQ0ODUtNGE5ZC04N0RDLUNCNUE0
MEU2MzUxRH0iKSBXZWJGcmFtZSBmaW5hbCA6IHAKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbG9h
ZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNU
UiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIg
YmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
QlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQ
cmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGlt
dW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBo
ZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3
LmNwcAppbmRleCA5NDA3NzkxMmE5OTE2NDExN2QwYzY4MWNjY2MwNjY4NmUwNGM0ZGUwLi5mOWFi
ODNiNTFjYTMyM2ViZTcxZjU1MDI2NzkyZGJmNjM1MzQzMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZp
ZXcuY3BwCkBAIC0xODcsOSArMTg3LDkgQEAgQ0FWaWV3Ojp+Q0FWaWV3KCkKICAgICBtZXNzYWdl
V2luZG93ID0gbnVsbHB0cjsKIH0KIAotUmVmUHRyPENBVmlldz4gQ0FWaWV3OjpjcmVhdGUoRHJh
d2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQorUmVmPENBVmlldz4gQ0FWaWV3OjpjcmVhdGUo
RHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ0FWaWV3KGRlc3RpbmF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0FWaWV3
KGRlc3RpbmF0aW9uKSk7CiB9CiAKIHZvaWQgQ0FWaWV3OjpzZXRDb250ZXh0RGlkQ2hhbmdlQ2Fs
bGJhY2soQ29udGV4dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAppbmRleCA0NWI2NGVjMDE1MmU1MWQ0MjRmNDJlMzM5YzVl
MDZmYjU0NDgwNDZjLi43Mjk2M2JlM2RiYmM0MzI4ZjU1NzlhNmRhNTcwYzYyYzVmNDg5MDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FWaWV3LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ0FWaWV3IDogcHVi
bGljIFJlZkNvdW50ZWQ8Q0FWaWV3PiwgcHJpdmF0ZSBDVkRpc3BsYXlMaW5rQ2xpZW50IHsKIAog
ICAgIGNsYXNzIEhhbmRsZTsKIAotICAgIHN0YXRpYyBSZWZQdHI8Q0FWaWV3PiBjcmVhdGUoRHJh
d2luZ0Rlc3RpbmF0aW9uKTsKKyAgICBzdGF0aWMgUmVmPENBVmlldz4gY3JlYXRlKERyYXdpbmdE
ZXN0aW5hdGlvbik7CiAgICAgfkNBVmlldygpOwogCiAgICAgdHlwZWRlZiB2b2lkICgqQ29udGV4
dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24pKENBVmlldyosIHZvaWQqIGluZm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9D
VkRpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKaW5kZXggYjE1NDgyNGNlNDQ4M2M3ZGQ5ZTYz
MWJhZDFiMTM5ODQ1N2Y0OWZjNS4uYWFiZDE5OGIxMTE1ZWQ3ZTY1YWQ4MzA4NTQxNjE5Y2Q0MTU4
NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCkBAIC00NCw5ICs0
NCw5IEBAIENWRGlzcGxheUxpbms6On5DVkRpc3BsYXlMaW5rKCkKICAgICA6OkNsb3NlSGFuZGxl
KG1fd2FrZXVwRXZlbnQpOwogfQogCi1SZWZQdHI8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGlu
azo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkKK1JlZjxDVkRpc3BsYXlMaW5r
PiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCogY2xpZW50KQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDVkRpc3BsYXlMaW5rKGNsaWVudCkpOwogfQogCiB2b2lkIENWRGlz
cGxheUxpbms6OnN0YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKaW5kZXgg
MGFlMDJmMTY5ZWM4Mjg5MTI2NjFlZmE3MzhjODRmYjdjNDQ0MjI4My4uY2EwMjZhZmVhYzQxNWQ3
MTg3NDc4ZTg3Mzc1YTI3MTA5OWY0MGNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ1ZEaXNwbGF5TGlua0NsaWVudDsKIC8vIEZJ
WE1FIDg3NjkxODE6IFJlcGxhY2UgdGhpcyB3aXRoIENWRGlzcGxheUxpbmtSZWYKIGNsYXNzIENW
RGlzcGxheUxpbmsgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q1ZEaXNwbGF5TGluaz4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlz
cGxheUxpbmtDbGllbnQqKTsKKyAgICBzdGF0aWMgUmVmPENWRGlzcGxheUxpbms+IGNyZWF0ZShD
VkRpc3BsYXlMaW5rQ2xpZW50Kik7CiAgICAgfkNWRGlzcGxheUxpbmsoKTsKIAogICAgIHZvaWQg
c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcAppbmRleCBk
YzY2NzBkNDMzZmYwOWUwZDExNjY1ZGMwNTUzYjIxNmRmYjI2MDBjLi5jZjkyMTg1YTEwZGI5NDZk
MDZiYjRiZDQ4MGM2OWZkZWMzNDYwNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNv
bnZlcnNpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBIUkVTVUxUIGdldEltYWdlQ29w
eShJRGlyZWN0M0RTdXJmYWNlOSogc3lzdGVtTWVtb3J5U3VyZmFjZSwgUmVmUHRyPEltYWdlCiAK
ICAgICBDU2l6ZSBzdXJmYWNlU2l6ZShkZXNjLldpZHRoLCBkZXNjLkhlaWdodCk7CiAKLSAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2U6OmNyZWF0ZShzdXJmYWNlU2l6ZSk7CisgICAgYXV0
byBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOwogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5k
ZXggZThiZGRlYmYyNjI2ZjVjY2FkOGQ0YWNlZDU3MzNlNzI3MjJhZWViNy4uZmJjMDRkZTY1OTc4
OThiMDVkMjJhNGU1NzNhMjRlZDU2MTk3OTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKQEAgLTY5MTIsOCArNjkxMiw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlw
dFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6
Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwpAQCAtNjk0MSw4ICs2OTM5LDYgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5
bGVTaGVldFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3Vw
OjpnZXRPckNyZWF0ZShncm91cCwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYgKCFpV29ybGQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357569</attachid>
            <date>2018-12-18 07:46:38 -0800</date>
            <delta_ts>2018-12-18 11:06:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181219004637.patch</filename>
            <type>text/plain</type>
            <size>407885</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi43ZDQzNTcwMTZiYmNhMzZkMjgyOTNmMmQ4MTU2ODU5YzE0Nzk2ZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCiBSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZy
YW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRo
ZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUg
dG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1l
PiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7
CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUs
IG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFt
ZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2
ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2
YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGlj
IGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFu
Y2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUp
OwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2
OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBi
NDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJi
NzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25z
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5
T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2
NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQg
RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVu
dCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7
CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50
LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50Ojpj
cmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBA
IC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3Vy
cmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCkt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWlu
VGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZz
ZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5U
ZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRh
dGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUo
KSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9u
c0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhl
IGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwg
b3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnBy
ZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwg
YWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFm
dGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5n
VGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290
Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0
KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwor
ICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtl
clJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2
YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYs
OCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAg
ICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJ
biIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0
KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91
dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAq
cGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEz
ZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVv
ZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1
ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4
OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAg
Ly8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5k
ZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZy
YW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1
cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBs
ZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5u
ZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVz
cG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMx
OGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0
NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxl
cjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAg
UmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJl
ck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBt
YWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1v
cnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3
NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUp
OwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwg
YXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgy
NWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIz
MDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0
cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/
IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdl
J2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJl
ck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1
ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZj
YjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRl
eCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQw
ZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZv
cm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZh
dGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBk
ZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4
Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmFmMGE3Y2M3N2JmMjkyY2Rm
ZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsx
ODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGlu
aXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBr
ZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25l
ZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
NCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERh
dGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
MCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAg
YXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5p
dERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAg
IGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsOCArMTkwOCw4IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKLSAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKKyAgICBhdXRvIHJlc291
cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2
UmVxdWVzdCk7CisgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjExYTkuLjFhNGIxODFhYWNiODk2
MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJh
Y2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDA1
Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4uMzEwNzgwYzNhY2FiZDgxNTU1
YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgogCiAgICAgICAgIEFTU0VSVChz
dGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICAgICAgQVNTRVJU
KGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKLSAgICAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlcXVlc3RlZEtleURhdGEt
PmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxlbmd0aCgpXSk7CiAgICAgICAg
IFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKICAgICB9CkBAIC0x
ODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKLSAgICBt
X3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVz
b3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5
UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFh
Li4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgxZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUwODRjOTBkNWZkNzdlNjZl
YmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2NWYxMWY3YTUwN2UwODg5MmVk
OTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
Ci1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50
LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1JlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBtZWRp
YVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhw
YXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1lZGlhU291
cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZigqbmV3
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQpKTsKKyAgICBjbGllbnQt
PnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5jb3B5UmVmKCkpOwogICAgIHJl
dHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIG5ld1NvdXJj
ZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAjZW5kaWYKLSAg
ICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91dFByaXZhdGUgPSBuZXdTb3Vy
Y2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShu
ZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDgzMDBkYzNiNmUz
OWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIzNGI5YjVhMGFkZThjMjc1NDdh
NDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOwogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGE5OWZlYjdm
NjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2MzY2MGQ5YWVkY2M4OWU2YjUy
MzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyArNDMwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgc3RhdGlj
IFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsg
fQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9CkBAIC00
ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QKICAgICAgICAgc291cmNlQnVm
ZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIAogICAgICAg
ICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAg
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMp
OwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7Ci0gICAgICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAg
ICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5m
bzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2s7Ci0g
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2su
Y29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tz
LmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZjQ1
NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4uNWRkN2U2MjMwZmU4ZTA1YjRm
ZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICBib29sIHNl
bGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODBjZmM0ZmFjMzQ1Yzky
ZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIxMjNhZWIzNDZlYTM5MmFlMDQz
ODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIGludCBUaWxlQ29u
dHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX21hcmdpblNp
emUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQoKS5zY2FsZSgpOwogfQogCi1S
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkKK1JlZjxQbGF0Zm9ybUNBTGF5
ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVy
ID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0
aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVh
dGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CiAKICAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIGxheWVyLT5zZXRQb3Np
dGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGFlMTliOGM1MTcxZmQ1NzQx
YTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5MDA1MTY1MjBkNWEwNjc1MjBh
YzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFRpbGVDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxh
eWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKIAogICAgIGNvbnN0
IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVHcmlkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3OGQxZDczNWNlNDkxYjNhZGE5
YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1NWExZDliNmVlMDgxNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgQ0FDRkxh
eWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
aG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgYXZh
aWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDQwNmUwODVmZmYx
ZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRiZTE0Mjk1MzgxYjQzMzI1YzBj
YzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTU1LDExICs1NSwx
MSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZv
aWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIp
OwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAgICBBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOworICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7CiAgICAgLy8gRklYTUU6IERl
ZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0
ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKQogICAgICAgICBu
ZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5NDc2OGRjMWE5MmEy
ZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdmYTExZjdhNThkZWZmNGE5ODI0
MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBW
aWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7
Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBhdXRvIHRy
YWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0lu
ZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklO
RygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZC51dGY4
KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwg
cGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFt
SWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwg
dHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdl
SW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsKQEAgLTk2OCw3ICs5NjgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFk
KTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAgICAgbV9wbGF5ZXItPmFkZEF1
ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7
Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgbV9w
bGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7CisgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFRl
eHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAgICAgICAgaWYgKGdzdF9pc19t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICBpZiAoZ3N0X2lu
c3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbWlzc2luZ1BsdWdp
bkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3Vs
dCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3Np
bmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1dG8gbWlzc2luZ1BsdWdpbkNh
bGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6
OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3VsdCwg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1pc3NpbmcgcGx1Z2luZyBpbnN0
YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3aXRoIHJlc3VsdCAldSIsIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEzLDEwICsxMzEz
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5D
YWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNz
YWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9k
ZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgp
LnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgKm1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6
OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1BsdWdpbkNhbGxiYWNrLmdldCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlv
biogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qPihnX3B0cl9hcnJheV9pbmRl
eChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChzdHJlYW0tPnN0cmVhbV90eXBl
ID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0cmVhbS0+cGlkKTsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRhdGEsIHBpZCk7
CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQg
dHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVy
bCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKG5ld1Vy
bCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRkOWJkZGYyYjc3ODM4NmNiOWI2
MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2ZkYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODc4
LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAgYXV0byBnc3RJbWFnZSA9IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4MGFkODMxMDguLmQwOTI5MjBj
MjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBw
c2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IG1lZGlhU2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSks
IG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1f
cHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0
cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICBtZWRpYVNhbXBsZS0+YXBw
bHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB9CiAKLSAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlhU2FtcGxlKTsKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUuZ2V0KCkpOwog
fQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRhYmRiNTQ1ZDA3ZS4uNmU0YjY0
ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0
ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXplKDE2KTsKQEAgLTYzLDggKzYw
LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRL
ZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1cnJlbnRLZXlJRC5yZXNpemUo
MTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZEtleUlEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNldCArPSAxNjsKICAgICAgICAg
ICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRLZXlJRC0+ZGF0YSgpLCAxNik7
CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAg
ICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBkYXRhU2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWREYXRhKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAKICAgICBtX2RhdGEucmVzaXpl
KGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKaW5kZXggNTdhNTY5NGQ1ZWFl
MTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNjYzFiNzYxNzVkOTIzODg2MjZm
MTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKQEAgLTY0LDkgKzY0
LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGtleUlE
QnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBpZiAoIWtl
eUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7CiAK
ICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFhMjdlYzg0MDZiZTA3NDFmLi4w
MWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIEZpbHRlck9w
ZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpdHlPcCA9IFBhc3N0aHJv
dWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+
IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8g
ZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2MTFiYjI2ZGM0NDJlMjdjOGYu
LjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIHRleHR1cmUgPSBC
aXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwogICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJhZGRkYjJkYTE5MjVhMzUzZjcz
YmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFmNGU2ZDJlYzdiMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTg3LDExICs4NywxMSBAQCBU
cmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGlk
ZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3Bl
cmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50
aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBpZGVu
dGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0
aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMwMTUzYy4uMDZjMGExOWYzMGQz
OWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBDb3B5IG91dCBQTkcgZGF0YSB0
byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5HIGRlY29kZXIuCiAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0byB0
YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
LSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKHBu
Z0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2
ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2YjhkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
QEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CiAKICAg
ICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAgICAgICBpZiAoTW9ja0JveDo6
cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAgICAg
ICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9j
a0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLnB0
cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0aCgpOwogICAgICAgICBtX3Ry
YWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUwMDIyMjc3YTgzMzg3ZWMzN2Fm
ZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJjZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBSZWY8TWVk
aWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYURlc2NyaXB0aW9u
PiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tN
ZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQpAQCAtMTE4LDkgKzExOCw5
IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAKLVJlZlB0cjxNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUo
cGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCkBAIC0xNDIsMTcgKzE0Miwx
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgp
LCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2Nr
Qm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVl
a1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0luaXRpYWxpemF0
aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0
Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBN
b2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChp
bml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUo
KSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1v
Y2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUo
c2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRlY2U2YWIzM2I1ZTg3YTUyNzI1
MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5ODI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGZpbmFsIDogcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7Cisg
ICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2YjgzMGZiZTBiNjAzZmQyZGJhZDBj
Li5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIyMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tU
ZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQogICAg
IHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwg
fk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBkZTUwNzgzYmZiNDc3MjRiZjU5
OTE5YWI2NmY5MWQuLmM0OWY0MjE3ODEyMGE0YzNkMmI0ZDMwMjY4NGIyZDgzYWYxZjQ2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzE5LDcgKzMxOSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gV1RGTW92ZShkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4
ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3
ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2llU3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2ll
U3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRl
KE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgQ29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRU
UENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkxODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRi
NDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTczODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3Rv
cmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBAIC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVT
dG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVh
dGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
IH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRl
eCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJjY2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2
Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1Nv
dXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxl
TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
ICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNT
aW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMu
c2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVz
c2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwg
Ynl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZp
bGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5
ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0
aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
ewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAg
IHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFy
eT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAg
ICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlwaGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZlNmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1
YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1l
bnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdp
bjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4g
bV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmlu
ZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdiMTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1
YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBt
X3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNh
YzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uZWUxZTIyNjgzMWNmNjQ5N2MwNGRmM2I1MDc3YWQ3
NTc5ODg1ZTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9y
ZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9p
ZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRl
clN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsMTIgKzkxNywxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogCiAgICAg
Y29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGlj
YWxPZmZzZXQ7Ci0gICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgYXV0byBzdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDB4OGQs
IDB4OGQsIDB4OGQpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENv
bG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQuc2V0
U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50KSk7CiAKICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKQEAgLTkzNywxMCAr
OTM3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRD
b3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVz
c0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIApAQCAtOTQ5LDIwICs5
NDksMjAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgLy8gMikgRHJhdyB0aGUg
cHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclBy
b2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZG91YmxlIGJhcldpZHRoID0g
cG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAg
IGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwog
ICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIx
MCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAx
MTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
NTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRp
ZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0
MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
MzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VHcmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFy
UGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQgb25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRv
Y3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAg
IC8vIGFuZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExl
bmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDExICsxNzQzLDggQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
W2luZm8uaWNvbiBDR0ltYWdlXSk7Ci0gICAgaWYgKCFpY29uSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwor
ICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uMTY3YTU0N2FjNmQyYzQ0YTY5OTdhNzAxNTE2MmQ3YTc1NDM3OThkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
QmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNhN2JiNGY1
OGZkYWI4MjViZjYxYzk3Yjc5Li4zNmU2Njk4YjJjNGI3NWQyY2FiNmE5ZDIzODRmZDBjODU4NzYz
ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKQEAgLTE0Myw5ICsxNDMsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFs
dWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZp
bHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBl
bmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVj
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMw
MDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjAyMzc5OTUyYmRjYjYxNmE4ZjA4M2ZiNDEz
NTdhMzE1NjBhYzg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksOSArODksOSBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsK
KyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5
N2IxZGNmODdlMmMyNWY5YTcuLmE3YTc2ODI5NmQzNGU0MjdlNTAwOWRhZTJhNzhjNDk5YzZmMGIy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBA
IC0xNDMsMTIgKzE0MywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5w
dXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJh
dG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0
Mik7ICAgIAotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0
Li5kOWRiMGFjZWI3ZjNlMDQ0Mjg1MjY3M2Y3YjgyYWRjMTkwMDM0NDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5
LDkgKzE4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5z
dHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
c3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExl
bmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92
ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRi
NWZmYWZkNDRmNTMuLjJiNDJmMzQ0MDgyODllZjliMDkwM2E4YTZiYTVhYzMyNGVjMzU1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0
ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZm
ZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlu
cHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJu
IGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNj
ZjFlZDZhNjQ0M2Y5NTFlY2Y0YmI4ZWY4YzU5Yi4uNjk4YTQ4NTRjMWIxNTRlMjkzNThhOWIyYjQ5
YjNmNmVlMjY4ZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcApAQCAtMTM0LDkgKzEzNCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0
ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjk1NDcyZGI3MTg2Mzk3NTAxNzA3N2E2OTMxOTY1
MzQ1YzQxMmYxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkK
ICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2Rl
KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkx
YjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5lZmE3N2RlMmMxYmJkNTg2MjVlNTZmODRhYzNlNTNiZjRk
MGY5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3Jl
YXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVu
T2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CkBAIC01OSw3ICs1OSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVy
biBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5
OWQ4YjBiNmZjLi43YTRjZDA4MmQ1NDE1OWFhZjUyNTAwMmRhOTQ2MGViYTFkOWVmMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUs
OSArMTQ1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAg
fHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVy
YXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5
ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uODg1MjcxMWE1YTZhNmQ0NDMzM2M0
ZTcxZTZlM2IyMTNhMGE1N2RjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZz
ZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDNhMmY0
ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjgxZWY0NTc2ODY5NzE3YTY5ZTlk
ZWI2ZTY0OTVkYTUxMTc0Y2MyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw5ICsxOTgsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUo
KS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMy
NjNiN2ZlMDA2MjU0ODkyNDQuLmUzY2Y1YWRjZjRmNjQ5N2Q3MzZiY2RiN2I2YzJlYmVhZjFmMGU4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDkgKzgx
LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRp
bGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmls
dGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFj
MTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0
NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBj
b25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4u
OTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVy
LT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6
IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29k
aW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2Rl
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUw
YTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAg
Ym9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cisg
ICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0g
cGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwg
ZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2gg
dGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhl
IGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVu
dFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5
ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyAr
NDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlv
biogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZi
ZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVh
MmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBm
YTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFl
ZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRN
ZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJv
ZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkg
PSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxm
Ll9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3Jl
YXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0
aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3
Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzEx
MzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0
cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNu
YXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0
KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1Ip
CiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21w
cmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZp
ZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSks
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsKKyAgICAg
ICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxw
dHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3Zl
KHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBz
aG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1
cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUo
Y29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsKQEAgLTU5MDIsNyArNTkwMiw3IEBAIC0g
KHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1h
Z2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAgICBpZiAoIWJpdG1hcCkgewogICAgICAg
ICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBjYjlhODBhMzdhYWNjOTViMjVmOTNjNDIu
Ljk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVjZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRp
CiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07
CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9u
LmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OwotICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsKKyAgICBhdXRvIHBvc2l0aW9u
ID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7
CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9z
aXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlm
eUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2FnZSAqLykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
N2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3
MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX1RM
U19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7
CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBX
ZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlm
aWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwotICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpKTsKKyAg
ICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRp
ZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCks
IFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJhNjhkMWRmZGNhMDA1NmNjNmNkZGYyN2Nm
NmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0
b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCA2N2YxMjIyYTc0NmM2
NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIyNDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0
OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRh
SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZj
ZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUgPT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEw
ZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFmOTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRi
NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGEKIAogc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihX
S1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIE5TRXJyb3Ig
Km9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQSTo6RnJhbWVIYW5kbGU+IGZyYW1lSGFu
ZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsK
KyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1l
UHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5T
KFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoKmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6
b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFt
ZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZy
YW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0KCkpIHVybFN0cmluZzpvcmlnaW5hbEVy
cm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7CiAKICAg
ICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IDlk
Nzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4MzhlYWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2Rj
MGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0xNzEs
NyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbEMKIAogY2xhc3MgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBk
MTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpA
QCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0
dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKIH0K
IAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCBhOTI5OWYx
Yjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjkyLi4yOTdmOTY4YjM1MjllMGMzNTVjZDRk
YjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTE5LDcgKzEx
OSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbAogCiBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOworICAgIHN0YXRp
YyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jiwg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcyODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2
Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIAogI3ByYWdtYSBtYXJrIC0gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKIH0K
IAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTcxMGRmMTljNDI2
NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3
MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwotICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIo
KSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVy
T2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4ZWUwNzA1OWEzMTNiMi4uYzRiNDc0NDI3
MmUxYjAzOGQ3MmZmM2RjZDhjYTNjYzgzZGRhYWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQzNzQsMTAgKzQzNzQsMTAgQEAgUmVmUHRy
PFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBz
aG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwor
ICAgIGF1dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2Up
KTsKICAgICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKLSAgICByZXR1cm4gc25hcHNo
b3Q7CisgICAgcmV0dXJuIFdURk1vdmUoc25hcHNob3QpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBs
OjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRl
eCA3NTA5ZGRlZGI0YzA4ZTZiZTg1NGJiN2NlZjcyNWE5NzlkODBkY2VlLi44NmRjMDljMzQxZGE3
ZjZlYzQxYzZhODJhMzcxZjE3MjcxZjY4YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCkBAIC00NiwxMiArNDYs
MTIgQEAgRG93bmxvYWRQcm94eU1hcDo6fkRvd25sb2FkUHJveHlNYXAoKQogCiBEb3dubG9hZFBy
b3h5KiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7Ci0gICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2FkUHJveHkgPSBEb3du
bG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwot
ICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2Fk
UHJveHkpOworICAgIGF1dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgq
dGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgbV9kb3dubG9hZHMuc2V0
KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5jb3B5UmVmKCkpOwog
Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuZ2V0
KCkpOwogCi0gICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7CisgICAgcmV0dXJuIGRvd25s
b2FkUHJveHkucHRyKCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eU1hcDo6ZG93bmxvYWRGaW5p
c2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDc5NjU4NjhiZTA0MzM5ZTc4NDlmNGRkMzQ0MmM2NGRj
OTU2ZTY2OGMuLmZhZTFmM2ZjYTg4ODcxOWJlN2Y2MjcyZDIwNTcyMGJiODkwMTc3ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTk2LDExICs5NiwxMSBA
QCBIYXNoTWFwPFN0cmluZywgYm9vbD4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29u
c3QgU3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyLCBjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQogewog
ICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCgpOwotICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IFdl
Yk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRp
ciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgYXV0byBub3RpZmlj
YXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFn
LCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIHN0
ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFr
ZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbikpOwotICAgIG1f
cHJvdmlkZXItPnNob3coKndlYlBhZ2UsICpub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0
aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmlj
YXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOworICAgIG1fcHJvdmlkZXItPnNob3co
KndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCAwMjVjOWM2Y2Y1NmNmMjU0MzQ4NzZmZGJkMTY2ZjE0YzA4ZjgxNTM0Li40NzA4ODEwMGVl
MzFkMDdhNjZkN2U5MTU4ZTQ5OTU4YjhkZjg1OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2NDksMTAgKzM2NDksMTAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAKICAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2Vzcy0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOwogICAgIAotICAgIFJlZlB0
cjxXZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhpcywg
ZnJhbWVJRCk7CisgICAgYXV0byBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhp
cywgZnJhbWVJRCk7CiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRvIHRoZSBwcm9jZXNzIHdpZGUg
bWFwLgotICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsICpzdWJGcmFtZSk7Cisg
ICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgc3ViRnJhbWUuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90IGZyYW1lSUQsIEds
b2JhbFdpbmRvd0lkZW50aWZpZXImJiB3aW5kb3dJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGZhNDNhM2QxZTc4MzA5MmJiN2MwMjE4
MTQ3ZmQxNjRmODI3YjAzYzAuLjllM2Y0MDRiZDZlNmFiYjNhYjI0MzlhYmE3MjdjNmI1YzM5YmVm
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE3
MTMsNyArMTcxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMy
X3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+IHJlcXVlc3QgPSBTdGF0aXN0
aWNzUmVxdWVzdDo6Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBTdGF0aXN0aWNzUmVxdWVzdDo6
Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpKTsKIAogICAgIGlmIChzdGF0aXN0aWNzTWFzayAmIFN0YXRpc3RpY3NSZXF1ZXN0VHlwZVdl
YkNvbnRlbnQpCiAgICAgICAgIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhyZXF1ZXN0Lmdl
dCgpKTsKQEAgLTE3MjIsMjAgKzE3MjIsMjAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3Rh
dGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAg
ICAgICAgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGlj
c1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVu
dFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGlu
ZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVx
dWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3Rh
dGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3b3JrUHJv
Y2VzcyBzdGF0aXN0aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFibGUiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVl
c3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNl
dChyZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3Qu
YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CisgICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJl
cXVlc3RJRCwgJnJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MocmVxdWVzdElEKSwg
MCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA2
MzQzMjQ5YmFhNzI1YWZiNmNiNDQ0YzU1MjMyNTNkMTdlMDgwYmMuLmU2YjQ0NGU5MTQyN2I5NmNh
YTg4NDNhZWIzZmEyMjdjZGQ3YjU0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtNDg3LDggKzQ4Nyw4IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFs
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAg
ICAgV2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUm
LCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdh
cm1lZDo6Tm8pOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0
YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKLSAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5n
U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOworICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRl
bnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBh
Z2VQcm94eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCA1ZTNmYjY1YzIzMGRiZDg0ZGFlMzcwMmRk
NmRkZjdkMjUzMjQwODlkLi5lM2FlNTE0YjAzN2NlOGY4ODA0OThhZmUxMmExZjllYzMxYmE2NmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVBy
b3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7
Ci0gICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+
IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Ojpj
cmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKLSAgICBpZiAocGFnZUNsaWVudCgp
LmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QoKnJlcXVlc3QpKQorICAgIGF1dG8gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24p
OworICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgcmVxdWVzdC0+ZGVueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggODUxNjQz
NzBmN2I1MWJmYjA5MTBlYTAwNDFkYmUxMDE0NDI3Zjg2My4uOTJlYWQwNDVlOGI4ZmMyZTRiOTkz
NDQyNmJkMTBhNGE4ZTU5ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC01MywxOCArNTMs
MTggQEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewogICAgIEFTU0VSVCghbV93ZWJWaWV3KTsKIAot
ICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVs
b3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91
dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lz
dGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3Vw
PiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVu
dGlmaWVyRm9yUGFnZShudWxscHRyKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3Jv
dXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShudWxscHRyKSk7
CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0
b3JQcm9jZXNzUG9vbChpbnNwZWN0b3JMZXZlbEZvclBhZ2UobnVsbHB0cikpKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKICAgICBtX3dl
YlZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCpwYWdlQ29uZmlndXJh
dGlvbi5wdHIoKSkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlZpZXcsICJk
ZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CiAgICAg
Z19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX3dlYlZpZXcpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggYjY0ZTMzNTkyOTJiM2Zl
ZWNmN2U3MmVhYjMwZTBhNmE3MTlmZDM0Yy4uY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4
M2ZiNDI5YzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogICAgIEFTU0VS
VChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKIAotICAg
IFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3Bl
cnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBj
aGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZl
cmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsKICAgICB9KTsKLSAgICBSZWZQdHI8
V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQ
YWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZp
ZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVs
KCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMu
Z2V0KCkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdl
dCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMu
cHRyKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0
cigpKTsKICAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCpwYWdlQ29uZmlndXJhdGlvbi5wdHIoKSkpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFr
X3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9y
VmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCmluZGV4IGMxY2Y1ODc1OGVjYmE5ODU3YTBhNjFhZDQ4ZDZiZmEzZTFj
MGQ3ZjMuLjlhNDdlMjY0OWY2OTNjZDJiM2I1NWNlYzIwZTE3M2MyZmI0YjEzYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0
aW9uR3JhbnRlZAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZy
YW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVS
TChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPFdL
RnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJl
cXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOwotICAgICAgICAgICAg
UmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdl
YktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBz
ZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZy
YW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1
ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6
cmVxdWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAxMTIzNWExMjdlMjc3YTAx
ODc2MDM4Yzk3NDZmN2Y4ZWQyY2NiYTMxLi45ZmVmZmRkZjQxMDQxMmU3NmQyYzBjM2RmZDY3YmYx
ZTFiZDJiMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCkBAIC0zODQsOSArMzg0LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQK
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlcikKIHsKLSAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciks
IHRydWUpOwotICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UuZ2V0KCks
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZm
ZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGltYWdlLnB0cigpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNp
YmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggY2Jm
ZTMwZTllMGJlODMyMTUxODE5NjM1NWY3Nzk4MDhiODI0ZjJmNi4uMzc5OGJmYmI1YTljNDE0ZjYw
ZmRjM2NiZWE5YzdjMGRiM2UwMjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2Uo
KQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0gICAgUmVmUHRyPFdlYlByZWZl
cmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAt
MjAwLDExICsyMDAsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNj
cmlwdFJ1bnRpbWVGbGFncyh7IH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91
cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQ
YWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFn
ZSgpKSk7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5z
cGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVsKCkpKTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAogICAgIFdLUGFnZU5hdmln
YXRpb25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50ID0gewogICAgICAgICB7IDAsIHRoaXMgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCmluZGV4IDgyNTA5MDE3OTAwZjQ3ODk0NDllYzVkZWZj
NzEyOGExNzVjNjY5OTcuLjkzMTM0M2ViMWJiODczMmVhNWQzYjU0MjRjNTMwNmM4NDYyZTlhYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpAQCAtNTAsOCArNTAsOCBAQCAtIChpZClfaW5p
dFdpdGhJbXBsOihXZWJDb3JlOjpSYW5nZSopaW1wbAogCiAtIChpZClpbml0V2l0aERvY3VtZW50
OihXS0RPTURvY3VtZW50ICopZG9jdW1lbnQKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dlYkNvcmVEb2N1bWVu
dChkb2N1bWVudCkpOwotICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBsOnJhbmdlLmdldCgp
XTsKKyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dl
YkNvcmVEb2N1bWVudChkb2N1bWVudCkpOworICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBs
OnJhbmdlLnB0cigpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5OWYz
NTcwZDBlMzBiYWRmZTAxZGFjZmRiM2ZhZjQ1MGU3Y2FlNmYuLjhjMjk1YmFlYmZiYTJlMDZiNWI3
NjE4NTViZjJlZDk4Mjk5ZmVkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0
aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNpemUoKTsKICAg
ICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAg
IGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMWEzMTIzM2U2
ZmM5ZTI4MThhMmZjZmEzMDE5MWE1ZmExNTc4OGI1Li45NTEyMzAyYjI4MmU0MWVkMWIyNDcxOWEy
ZDA0NDhkYzc0N2ZmZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIFJh
CiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAog
ICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpE
YXRhPigpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwotICAgICAgICAg
ICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Cisg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3Bw
CmluZGV4IGVjMDk4NjdiZjAzOGVlNThjOWZlMmQzODc0MDY0ODlkNjYzYjhkOGUuLjZlMjgyZDll
MGI5MGIyOTBlYWEwODk4N2E0MmI4Zjg5OGNhOWIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IEhpCiAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4g
aGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVI
aXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CiAKICAgICBXS1R5cGVSZWYg
dXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJz
KSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xp
ZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVz
dWx0LnB0cigpKSwgdG9BUEkobW9kaWZpZXJzKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRh
VG9QYXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBjNmE1MDY5MTc0MGE1
ZGIzZTY1ZjE5NzU3MWI3YmQ0MDA1YmI3MWEwLi44OGMwYTJkOWM2MzEyZDJjMGVhMDZhNTU3ZjVh
MDFlMmMzOWE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NTEsNyArNzUxLDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAg
ICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0
b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgYXV0byBjb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVhbGx5IGNhbGwgYXBwbHlEZXZpY2VTY2FsZUZhY3RvciBpbnN0ZWFkIG9mIHNjYWxl
LCBidXQgdGhhdCBlbmRzIHVwIGNhbGxpbmcgaW50byBXS1NJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBjMmNiYTA5MGZiYmRi
MmQ5YTE5MGIxYWZmOGZlMzU1Y2Q2ZmMzMjY0Li4wMTk5Yjg0ZjhmNGUyOGY3NjlhNzQyMTk1MTg4
OTEzMWRjODc3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIFBERlBsdWdpbjo6YWRk
QXJjaGl2ZVJlc291cmNlKCkKICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fc291cmNl
VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24x
XzEgaGVhZGVyRmllbGRzOmhlYWRlcnNdKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNp
emVkUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygp
LCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSks
IG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50
aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCkt
PmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBs
dWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsK
ICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCi0gICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAg
YXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yLCAtY29udGVudHNTY2Fs
ZUZhY3RvcikpOwpAQCAtMTg1MywxMSArMTg1Myw3IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0
ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMs
CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYWluVGV4dFN0cmluZyA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIHBsYWluVGV4dFN0cmluZy5n
ZXQoKSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7Ci0KLSAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5
LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAzMTQ3OWFmYzI5YWRmNGFjODUyYmIzY2UzZDgz
YzQxMjkyNDdiZmMwLi42NThlY2Q5ZDIzNzg5MDRiMzQ3ZDBkM2E2ZjQ2N2U5NDRkMmYwNzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTg0LDggKzg0LDggQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRp
ZmllcklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBy
b2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24pOwotICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlv
bik7CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNvcHlSZWYoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CkBAIC05NCw3ICs5NCw3IEBAIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0CiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdp
blByb2Nlc3NUb2tlbiwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmdldCgpOworICAgIHJl
dHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5wdHIoKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA4ODVmY2Ez
ZTE0Y2YwNmQwNWM3NGIwM2JiOTRmM2FiYjZiYzkxZDE2Li45NzBlYTFmZTdjYTk2NDVkZDljNzc3
Y2NkNWUzNjJhNjZkZWFkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yNDcsOCArMjQ3LDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKICAgICBpZiAoc25hcHNob3RTdG9yZUhh
bmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNu
YXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJldHVybiBzbmFwc2hvdEJ1ZmZlcjsKKyAgICByZXR1
cm4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7CiB9CiAKIGJv
b2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NDk1Yzk5MTEyMmQwODQzZGFiMGM4
NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4ZWVlODUyNzAwNmNlZWJjOWMzNzFl
ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVx
dWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAogICAgIC8vIFRoaXMgcmVxdWVzdCBp
cyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0uCi0gICAgUmVmUHRyPFN0cmVhbT4g
c3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdC0+cmVxdWVz
dElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRkU3RyZWFtKHN0cmVhbS5nZXQoKSk7
CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICBhZGRTdHJlYW0oc3Ry
ZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUxNjIyN2ZhZjc4NjI1NS4uNzhlNjcz
NTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogICAgIGF1dG8g
Y3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJl
bnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNl
Y3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlD
bGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBj
dXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0
ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmln
aW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgbmV3
UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNl
UXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWls
cy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWls
cy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFu
ZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3MzcsOCBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0gICAgaWYgKG1fcGFnZS5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1f
cGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0ZXNOZWVkZWQpKQorICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQo
KS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgmbV9wYWdlLCBzZWN1cml0eU9y
aWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZDA1ZmM5OTZjMWQ0
ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4Y2ZjNGEwNTlmOWVmNzgxZTE0NjEx
MDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03Njcs
MTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogCiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1f
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CisgICAgYXV0byBhY3Rpb24gPSBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9u
QWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50Lgot
ICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdl
LCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpOwor
ICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdl
LCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpOwog
ICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7CiAgICAgICAg
IGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2VlZjljZjBiZmFmMzRmNjRkYThiMzE2
MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3YzM2Mjk5NDIzYjdjYjhmMzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUo
KSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAgICAgICAgICAg
ICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFkY2Y5YWMyM2Q4ZDEzZWJkZjkzYzY3
ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4ZDA2NWVmZmYyNDRmMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJh
Z0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFw
KGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgaW1h
Z2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
eyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LT5oYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggZmZl
ZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAyZS4uZjg3ZDkzNDQzZjdjNThhODJj
NDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpA
QCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgICAgICAgICB0
aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAgICB9CiAKLSAgICBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShlbGVt
ZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVu
dCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5z
VVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhMzhjZDJiZjYzNzk0YzhlOWYx
ZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYzNmNiNzUyZWY4MTFhMTI0NWViNTVk
ZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgRGljdGlvbmFyeVBvcHVw
SW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBS
YW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9PSBUZXh0SW5kaWNhdG9y
UHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKQogICAgICAgICBpbmRp
Y2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRoU2Vs
ZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBpbmRpY2F0b3JP
cHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGluZGljYXRvck9wdGlvbnMs
IHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICghdGV4dEluZGljYXRvcikgewogICAg
ICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAg
ICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggNzgyNGU1Y2Y3MWI0
N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIwMDJiODZmNDJhMDFjZjQ4ZTVkZjY5
MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBEcmF3aW5n
QXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBJbnRTaXplIGJp
dG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0g
bV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6
ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFwU2l6ZSwgeyB9
KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJp
dG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYzMDkyOWQxZjMuLjYzY2MyODM5
MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKCkKIAogYm9vbCBGaW5kQ29udHJv
bGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1No
b3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7Ci0gICAgUmVmUHRyPFRleHRJbmRp
Y2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZy
YW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5n
ZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0
aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0
aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFpbmRpY2F0b3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMxNWRmMTc2ZDYyMGI0NTg5ZGMzNjU5
OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZmZDgyZWVhNTViZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAg
LTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExh
eWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJhY2tpbmdTdG9yZUZs
dXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIsIHBhZ2VJ
RF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVz
aGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJh
Y2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWExODhiMjRiNjQ0NmQwNTI3ZGY4NjUw
ZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0YjVhYjcxOWI3OTgyYzAyYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04
MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRMb2FkZXJEZXRhY2hlZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFj
aywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCktPmRvY3VtZW50KCksIFt0
aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBib29sIHsKKyAgICBhdXRv
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4gYm9vbCB7CiAg
ICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiZTZiZWZiODE0
Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3ZDdhN2NjODQ1ZTU1MzJjM2IyMDZl
N2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2b2lkIFdlYlBhZ2U6Om5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2ludCBk
bwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAgICAgLy8gRklYTUU6IFNldCBtb2Rp
ZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBzZXQgSXNTaW11
bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVz
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCisgICAg
YXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZl
bnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxw
dHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1lbnRQb2ludCwgeyB9LCB7IH0sIDAs
IDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxscHRyKTsKIAotICAgIG1haW5GcmFt
ZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVy
bCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCksIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICBt
YWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50LT5jb21wbGV0
ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LnB0cigpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2Vu
ZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpA
QCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWIKIAogICAgICAgICBt
X3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0p
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuYXBwZW5kKGV4dGVu
c2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDBjODRmNjRjOGM2M2Vk
MWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2YTRjOWZhZDAxNzFjMTg4M2YwMGNl
YmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwg
Ym9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dpbmdGaW5kSW5kaWNhdG9yID0gZmFs
c2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBU
ZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBm
aW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2Fs
TWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRp
b25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXpl
KHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNhbE1hcmdpbikpOwogICAgIGlmICgh
dGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDlkZjYxOGE0
ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjEwM2ZlYTMzZmYxYjExMmM1MzBmNTll
NmU1NmNkNThlYjM0ZjFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDE0ICsxODIwLDE0IEBAIHZvaWQgV2Vi
UGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0
cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwog
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9j
dW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9z
aXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCi0gICAgaWYg
KHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkK
KyAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLnB0cigpKSAhPSBv
bGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIG5vdGlm
eSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCB1bnRpbCB3ZSBhcmUg
ZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9y
ZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHJhbmdlLnB0cigpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQobmV3
VGV4dCwgMCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhm
YWxzZSk7CiB9CkBAIC0yMTM2LDE3ICsyMTM2LDE1IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRp
b25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVz
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVz
dC5pbmNsdWRlTGlua0luZGljYXRvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChsaW5rUmFuZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxl
RmFjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2lu
SW5Qb2ludHMgPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgUmVmPFJhbmdlPiBsaW5rUmFu
Z2UgPSByYW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRz
ID0gNDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9y
PiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFu
Z2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JP
cHRpb25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3Vu
ZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50
Rm9yQ29tcGxleFJhbmdlcyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJ
bmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Q
b2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZh
Y3RvcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKGxpbmtSYW5nZS5nZXQoKSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0
Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0
b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2Vz
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVG
YWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4dEluZGljYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRp
Y2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTIxNTYsNyArMjE1NCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKCplbGVt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0cyA9
IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpyZXF1aXJlc0V4dGVuZGVk
Q29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtS
YW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
cmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1Jh
bmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgs
IERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0
cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRBZnRlciA9IHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJl
Y3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rp
b25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpLCBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsyMTc5LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVk
IHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNn
Q29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25m
aWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCks
IGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZhMjRjMWMxYmRkMTU2ZjJk
M2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1ZjkzZjY0ZTQxMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg1MCw3ICs4NTAsNyBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0g
dHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKLSAgICBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7Cisg
ICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpj
cmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5pbWF0
aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gc2hh
ZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAog
ICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShzY2FsZSwg
b3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0
cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOworICAgIHpvb21MYXll
ci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmlld0Fu
aW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAgICAgICBGbG9h
dFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShmcmFtZVZpZXcs
IHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVmZTllNGNiYjVkNzI2ZmYy
MjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlkMjJmNmI2MDQ0NGIxODA2
MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwyNCArNDAsMjQgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBp
ZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIGlk
ZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2Fs
LCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5z
aWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0
ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpk
aWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3Jh
Z2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJl
YShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBjbGFzcyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBwdWJsaWMgU3RvcmFnZUFy
ZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CiB9OwogCi1SZWZQdHI8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgYXV0byYgc2xv
dCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAgICAgICBzbG90ID0gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpjcmVhdGUoc2VjdXJpdHlP
cmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90LmdldCgpOworICAgIEFT
U0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7
CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBA
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdl
KiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0ZXMp
OwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFk
b3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0b3JhZ2VO
YW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMpKTsKKyAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQs
IG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3IgKGF1
dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdOYW1l
c3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVyLnZh
bHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEzYTIyZGNiZDIxYjY3NDBl
NDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0N2Q3MmVlNWEwNjU1ZTY3
NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVs
T3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwg
dWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VB
cmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJp
ZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2FsU3Rv
cmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U3RvcmFnZVR5
cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDQ2MmRlODZjNDkw
MDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0YWQ4NzI2NTdlYWY4NDk2
ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApA
QCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyCiAgICAgcmV0dXJuIHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0
X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKIHsK
ICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNsb3QpCi0gICAgICAgIHJl
dHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWZQdHI8V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihu
ZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKLSAgICBzbG90ID0g
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoaWRl
bnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIucHRyKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpAQCAtNjUsMjIgKzY1LDIy
IEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2lkZW50aWZp
ZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdl
LCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
IHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZw
YWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQog
ewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBx
dW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsK
ICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90
YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDhlYTI1ZTZlNzUwOWVi
MmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMy
NWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zMSwx
NiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25z
dCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBjZjMwODVi
ODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2MzI1MmJmZTRmYThjMWUx
MjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjAyLDkgKzIwMiw5IEBA
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50KCpp
bnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmFkZENs
aWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZN
b3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXgg
N2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4uNWQ2MTEwYjc5MDlmMzRj
Y2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTE1MCwxMiAr
MTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBhdXRvIG1vZGVs
ID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8g
aW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlz
LCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50Rm9y
Q29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250
ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
KSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBtb2RlbC0+YWRkQ2xp
ZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1v
dmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDE4MTVjMTNh
YzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uNGE5NGExZDg1Y2VjYTFlM2M2M2JjNzJh
ODZhYjA2YWYwZTE4NmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMsMzAgQEAgU3RvcmFnZU5h
bWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAgICAgIGNsb3NlKCk7CiB9
CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1No
dXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lv
biB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CiAKLSAg
ICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKG5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsK
KyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAgZm9yIChhdXRvJiBpdGVy
IDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0b3JhZ2VBcmVh
TWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAotICAgIHJldHVybiBuZXdO
YW1lc3BhY2U7CisgICAgcmV0dXJuIFdURk1vdmUobmV3TmFtZXNwYWNlKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsK
IAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwotICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhOworICAgIGlmIChSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJl
YSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpCisgICAgICAgIHJldHVybiBzdG9yYWdl
QXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUlt
cGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIuZ2V0KCksIG1f
cXVvdGEpOwotICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9yaWdpbiwgc3RvcmFnZUFyZWEuZ2V0
KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gU3Rv
cmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2Vy
LmdldCgpLCBtX3F1b3RhKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3Jh
Z2VBcmVhLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggMjdiOGY5YmFiM2FkMzM5
NjY4NTQwZjQ4MGJmZDY1YTk2NjYxNjEzNy4uYzg4ZjA2MWVmNWU1MGM5YjE2MzVlYzNmOGQ2YmEw
ZWQ3NzA1Y2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFj
ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgogICAg
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcm
IHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJl
YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBSZWY8
U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0
cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1hcCBt
X3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCBlZDdlYTNhYTM5M2Rh
NTU5MzdhMWFkNDVhNDZkNjc3Yzg4NGFiZDllLi44MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3Nzgw
MDQ5MWM5ZGExMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMzksOSArMzksOSBAQCBz
dGF0aWMgSGFzaFNldDxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVycygpCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9
CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIobG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogfQogCiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKQEAgLTk2LDIyICs5NiwyMiBA
QCB2b2lkIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAg
ICAgfQogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAg
ICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdl
JiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JD
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1
b3RhKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFydGVy
IGltcGxlbWVudGF0aW9uIHdvdWxkIGNyZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUgaW5z
dGVhZCBvZiBqdXN0IHBpZ2d5LWJhY2tpbmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAwZDIwN2QzNDMxOTJjNGZlN2I5N2Qw
MzhkNTgxYjJjNGVjMDc3YWJiLi5lNTg5ZmVlN2E1YzZjOTFjZjk0YjdkMjNiNDg2MTQ4MTc5Yjhj
ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAg
IHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdlKCk7CkBAIC00OSwxMCArNDksMTAgQEAgY2xh
c3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWQKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAppbmRleCBjNmI0MDg3MTA1MDA2MTk5
MDFiNTQwNjA1ZTA2NjdkMWE2MjEzYjlkLi42M2NhZTJkMGFkNTJjZDUxM2Q4NTMzMjAwYzNkZWVm
Y2MxN2M0YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlZpZXdHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJWaWV3R3JvdXAuY3BwCkBAIC00MiwxOCArNDIsMjIgQEAgc3RhdGljIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViVmlld0dyb3VwPj4mIHdlYlZpZXdHcm91cHMoKQogICAgIHJldHVybiB3
ZWJWaWV3R3JvdXBzOwogfQogCi1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpCitSZWY8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKSk7CiAKICAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3
R3JvdXBzKCkuYWRkKG5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXdl
YlZpZXdHcm91cCkKLSAgICAgICAgd2ViVmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZpZXdH
cm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICghd2Vi
Vmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoLmlzRW1wdHkoKSkKKyAgICBpZiAoIXdlYlZpZXdHcm91cCkgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCkpOworICAgICAgICB3ZWJWaWV3R3JvdXAgPSByZXN1bHQuY29weVJlZigpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICghd2ViVmlld0dyb3VwLT5t
X3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIAotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7Cisg
ICAgcmV0dXJuICp3ZWJWaWV3R3JvdXA7CiB9CiAKIFdlYlZpZXdHcm91cCogV2ViVmlld0dyb3Vw
OjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKaW5kZXggZmUwNWNkNTQ4NjkwNWNkMjlmYjY4ODRl
N2E4N2ZiZGM5MzI3MmI1Zi4uNGQ0MTM3Y2UyYWFhYzNhMTQwZDU5YzYyYzM5NjMzNTJmMjU1YjE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3
R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5oCkBAIC0zOCw3ICszOCw3IEBAIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogY2xhc3MgV2Vi
Vmlld0dyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0dyb3VwPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRp
YyBSZWY8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICB+V2ViVmlld0dyb3VwKCk7
CiAKICAgICBzdGF0aWMgV2ViVmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IGQwODQ5M2IwZjQyY2NkMzYyYWY0NDJjMDNlNDk0
NDhkODFkN2Y1ZDAuLjgwNDliMWNjYzI3MmMzNDcyNTk5ZTQ5NDJlNTAwNmNiODY4MTUxN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMjYsMTMgKzI2LDEzIEBACiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogU2VhcmNoUG9wdXBNZW51SU9TOjpTZWFyY2hQb3B1cE1lbnVJT1Mo
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1
cE1lbnVJT1MoY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9wdXBNZW51
SU9TKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUlPUzo6cG9w
dXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4gbV9wb3B1
cC5wdHIoKTsKIH0KIAogdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFy
Y2hJdGVtcyovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA3MTZlZDU5YzQxNDcyMzk1MmQ3
MGRlYzUyZGJmOGVmNTk4NzlhZjRmLi4wZWY0NGI0MmE2NjBhZTM1MmM4YmVlNjk1NTBhYjJkZjBm
OTUzNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBT
ZWFyY2hQb3B1cE1lbnVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51IHsKICAg
ICBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBN
ZW51SU9TPiBtX3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CiB9OwogCiAj
ZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRl
eCA0MjNjMDQ5MDBmNGYwZTZiOWE1ZTY4OWZjMTljODczNzQ0MmI1YjI5Li44NTkxMTc3YTljZjJh
ZTkyNjBjN2EwY2ZhZjJmMzJhMTM2MWY2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBA
IC00MzMsOCArNDMzLDggQEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRp
b25QaHJhc2VBbHRlcm5hdGl2ZXM6KE5TQXJyYXkgKiopYWx0ZXJuYXQKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKTsgaisrKQogICAg
ICAgICAgICAgICAgIFsoTlNNdXRhYmxlQXJyYXkgKikqYWx0ZXJuYXRpdmVzIGFkZE9iamVjdDoo
TlNTdHJpbmcgKikobWFya2VyQWx0ZXJuYXRpdmVzW2pdKV07CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwg
bm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsK
LSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJh
bmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00NjIsOCArNDYyLDgg
QEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtYXJrZXJzW2ldOwogICAgICAgICBpZiAo
bWFya2VyLT5zdGFydE9mZnNldCgpIDw9IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgpID49
IG9mZnNldCkgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5l
bmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tCmluZGV4IDk2YTY0OTZjMmM0NDYwOTkyYzVjMTJjMGRjZmU2N2YzNDBhNmMxYzguLmE1
OTE5OGMzMzRlZTE0OThkOWYzNGI5YzA5NjI5M2RjMzZjYTVlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
CkBAIC00NjUsMTMgKzQ2NSwxMyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDoo
TlNVUkwgKilVUkwKICAgICBpZiAoIVVSTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50
OjpJc0NvbXBvc2VkOjpZZXMsCisgICAgYXV0byBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25p
Y1RpbWU6Om5vdygpLCBudWxscHRyLCAxLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIG51bGxw
dHIsIDAsIDAsIG51bGxwdHIsIE1vdXNlRXZlbnQ6OklzU2ltdWxhdGVkOjpZZXMpOwogCiAgICAg
Ly8gQ2FsbCB0byB0aGUgZnJhbWUgbG9hZGVyIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBvdXIgc2Vj
dXJpdHkgY2hlY2tzIGFyZSBtYWRlLgogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW19kYXRhU291
cmNlIHdlYkZyYW1lXSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsg
KmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
eyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csICBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwotICAgIGZyYW1l
LT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2
ZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVz
dChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5wdHIoKSwgbnVsbHB0cik7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IGY4N2U2MTUzMzcxMmY4ZWVk
NzBjZWViOWUzODYzNWUzYWE4ZjRhZDQuLjFiNmM4MjI4NTRhMDdmM2QwYzdhMDYwMTc2ZTRiODEw
ZTc4OTFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTQ3LDcgKzU0Nyw3
IEBAIC0gKHZvaWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2Ug
YW5kUmVjdHM6KE5TQXJyYXkgKiopcmVjdHMKICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gcmFuZ2VP
ZkNvbnRlbnRzKG5vZGUpOwogCiAgICAgY29uc3QgZmxvYXQgbWFyZ2luID0gNCAvIG5vZGUuZG9j
dW1lbnQoKS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIFJlZlB0cjxUZXh0SW5kaWNh
dG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdl
LCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfAorICAgIGF1dG8gdGV4dElu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGlj
YXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlv
blJlc3BlY3RUZXh0Q29sb3IgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNr
Z3JvdW5kcyB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQ
YWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyLm1tCmluZGV4IDFmMzJkYzk0OThiYTQyMjFkMTI5MzkxYjg0NzlhYmEzMGE5Nzk4
OTQuLmEwNGJjNTU3YmZkZGM5NzZmZDE4MDVhZmViNzg2NWI0ZDEyN2FlNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omlu
c3RhbnRpYXRlUGx1Z2luCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFs
aXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpwcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1By
b3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAg
ICBBU1NFUlQoZGF0YSk7CiAgICAgCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eT4gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0ZShob3N0
UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CisgICAgYXV0byBpbnN0YW5jZSA9IE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBpbnN0YW5jZS0+bmV4dFJlcXVlc3RJ
RCgpOwogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBfV0tQSEluc3RhbnRpYXRlUGx1Z2luKGhvc3RQ
cm94eS0+cG9ydCgpLCByZXF1ZXN0SUQsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0
PHZvaWQqPihbZGF0YSBieXRlc10pKSwgW2RhdGEgbGVuZ3RoXSwgaW5zdGFuY2UtPnBsdWdpbklE
KCkpOwogICAgIGlmIChrciA9PSBNQUNIX1NFTkRfSU5WQUxJRF9ERVNUKSB7CkBAIC0yOTksNyAr
Mjk5LDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4KICAgICBpbnN0YW5jZS0+c2V0UmVuZGVy
Q29udGV4dElEKHJlcGx5LT5tX3JlbmRlckNvbnRleHRJRCk7CiAgICAgaW5zdGFuY2UtPnNldFJl
bmRlcmVyVHlwZShyZXBseS0+bV9yZW5kZXJlclR5cGUpOwogCi0gICAgcmV0dXJuIGluc3RhbmNl
OworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCA4ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFlNzA2OGI3YzMyLi5hYmNhNmJiZTMzMDUz
NWE5ODJlNjQyZDRjMmExODhhN2I4YThiN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC03MTksOCArNzE5LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1
ZXMKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0g
bWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0
IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0
cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2lu
UmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVh
bUlEKCksIHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2lu
UmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVh
bUlEKCksIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWlu
IiAKQEAgLTc5OSwxMCArNzk5LDEwIEBAIE5QRXJyb3IgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IGNoCiAgICAgICAg
IG1fcGx1Z2luUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocGx1Z2luUmVxdWVzdCkpOwogICAgICAg
ICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICAg
ICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMs
IHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAKICAgICAgICAgQVNTRVJUKCFtX3N0cmVhbXMuY29udGFp
bnMocmVxdWVzdElEKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0p
OworICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtLmNvcHlSZWYoKSk7CiAg
ICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IDlhNzQ1ZDkzODNmNzQ0N2Y1NDJkZjUwNDVlMjQ0NWIzODUzZTA4ODAuLjFkMWU4YWVmNjc1MjM2
MWYzZWNjMDQ2NTA1ZDQ2NTdjMjU0NmI0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNTE3LDcg
KzE1MTcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBs
dWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBf
TmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1
bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRh
ICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9u
XSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0g
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pT
UGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8
TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxh
aW4iIApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgLSAoTlBFcnJvcilsb2FkUmVxdWVzdDooTlNNdXRh
YmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5UYXJnZXQ6KGNvbnN0IGNoYXIgKiljVGEKICAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdp
dGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5OjBdOwogICAgICAgICBbcGx1Z2luUmVx
dWVzdCByZWxlYXNlXTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVx
dWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKKyAgICAgICAgYXV0
byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdp
biwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CiAKLSAgICAgICAgc3RyZWFtcy5hZGQo
c3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAg
ICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCmluZGV4IDk2ZWY5MjFmZDYwNmVjZjA4MGVlZDEzMWQ0YjhkOTEyZDUxZjNmZmIuLjIz
NDc4MWIwYmU4NmE0YmRhNTBjMGNlNTY0ODQyMjM4OGI0MmJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCkBAIC0yMDcsOCArMjA3LDggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0K
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9u
ID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9u
KG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwg
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOwotICAgIGZyYW1lVmlldy0+ZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFt
ZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNC
ZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5j
aG9yKSk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9j
dXMpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBm
cmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZp
b3IoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCmluZGV4IGVjOGU1OGNmMjA3YmJjYjA0ODIyZWQyYjE1ZGVhZDA2NzYyYTU2N2QuLjg0NjBi
MDNmNTBjN2MyYjEzYTE3ZWZlNGM4MzhmYjdiOTIxOTBlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBpZiAoaXNNYWluRnJhbWUg
JiYgY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT5zZXRQYXJl
bnRWaXNpYmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcobnVsbHB0cik7Ci0gICAg
UmVmUHRyPEZyYW1lVmlldz4gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1l
KTsKKyAgICBhdXRvIGNvcmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CiAg
ICAgY29yZUZyYW1lLT5zZXRWaWV3KGNvcmVWaWV3LmNvcHlSZWYoKSk7CiAKICAgICBbbV93ZWJG
cmFtZS5nZXQoKSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3YjliYjg5
OTA4YWU1YzFhNjUyZTM2Y2M4ODliZTA0ZTU2NTRjOTQ2Li5hOTNkZWY2MTM5OWE1Y2M1NGVmNjFj
YWU5YzAzNzk5MDU4OTBjZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTE3NDYsOCArMTc0Niw4IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVz
dWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiop
CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFu
Z2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0
KCkpOworICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLnB0cigpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRh
dGEpIHsKICAgICAgICAgICAgICAgICBbbWV0YWRhdGFzIGFkZE9iamVjdDptZXRhZGF0YV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5
YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2NDRjOWU3ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQw
YzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEzNDgsNyArMTM0OCw3IEBAIC0gKHZvaWQpX3dy
aXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVi
b2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0IEhUTUwgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAg
aWYgKFt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CiAgICAgICAgICAgICBpZiAoUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNoaXZlID8gY29yZUFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihf
X2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVd
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2Mzkz
OTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBjOTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDcyOSw4ICs0NzI5LDYgQEAgKyAodm9pZClfYWRk
VXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRX
b3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJW
aWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgU3RyaW5nKCkpOwotICAgIGlmICghdmll
d0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1
cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVh
dGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNWMwNzcx
MjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkwNDliNDYzZi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5
ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFBsdWdp
bkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAgIHJlbW92ZShvbGRQYWNrYWdlLmdldCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0g
UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CisgICAgICAg
IGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9k
aWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlTm9uTnVs
bCgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGY4NTVk
ZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0NGNjYTJmNDUuLmVmMGEyZTIwYjQxMzc2NjBmMjdi
ZTViYTRmYWNjYmZiMGY2MjRhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWVkaWFDYW5TdGFydChEb2N1bWVudCYpCiB7CiAgICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7CiAg
ICAgaWYgKCFzdGFydCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCY+KHBhcmVudEZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKHRoaXMpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCY+KHBhcmVudEZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKCp0aGlzKTsKIH0KIAogUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQpAQCAtNDEw
LDggKzQxMCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVz
dCogcmVxdWVzdCkKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0
LCBjcmVhdGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFz
cyBpdCBvZmYgdG8gdGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2lu
U3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9u
KCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3Rh
bmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7Ci0gICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRo
aXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3Rp
ZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+
cXVpcmtzKCkpOworICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsK
ICAgICAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZSB0YXJnZXQgZnJhbWUgaXMgb3VyIGZyYW1lLCB3ZSBjb3VsZCBkZXN0cm95
IHRoZQpAQCAtNDU0LDggKzQ1NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3Qo
UGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3Ry
aW5nLnV0ZjgoKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0
cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJl
cXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2Vu
ZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5G
dW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwotICAgICAgICBtX3N0cmVh
bXMuYWRkKHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgp
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3Qt
Pm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1
Z2luLT5xdWlya3MoKSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7
CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwgY3N0cik7
CiAgICAgfQogfQpAQCAtNjkwLDExICs2OTAsMTEgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8g
cm9vdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0g
ICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CisgICAgYXV0byBp
bnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92
ZShyb290KSk7CiAKICAgICBfTlBOX1JlbGVhc2VPYmplY3Qob2JqZWN0KTsKIAotICAgIHJldHVy
biBpbnN0YW5jZTsKKyAgICByZXR1cm4gV1RGTW92ZShpbnN0YW5jZSk7CiAjZWxzZQogICAgIHJl
dHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCmluZGV4IDdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlm
NGUuLmI1YjYwYTgwOTkxZDYwNzEwYjg3MDYzMDI0MDIxZDY1MDkwNjMyZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zMTcsNyArMzE3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFZlY3Rvcjxib29sLCA0PiBtX3BvcHVw
U3RhdGVTdGFjazsKIAotICAgICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+ID4gbV9z
dHJlYW1zOworICAgICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+PiBtX3N0cmVhbXM7
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luUmVxdWVzdD4+IG1fcmVxdWVz
dHM7CiAKICAgICAgICAgYm9vbCBtX2lzV2luZG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggMTkzZTAyYjA1MDE4ZWY1OGZlNDE2ZmNiZmI2NzVlZGUzZmM1ODk2Yy4uNTBh
Y2Y3NzlkZDZiNTQ0ODQ4NDhlY2MyNWMxODY0OGI5OTZhYjdkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTA2MSw3ICsxMDYxLDcgQEAgT2JqZWN0Q29udGVudFR5cGUgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dAogICAgIHJldHVybiBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZTo6Tm9uZTsKIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25z
dCBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KSBjb25zdAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW5W
aWV3KSBjb25zdAogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAKQEAgLTEwNzIsMjMgKzEwNzIsMjMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBBU1NFUlQoZnJhbWUgPT0gcGx1Z2luVmlldy0+
cGFyZW50RnJhbWUoKSk7CisgICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXcucGFyZW50RnJh
bWUoKSk7CiAKLSAgICBpZiAoIXBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsK
LSAgICAgICAgVVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQ
YWdlKCkpKTsKKyAgICBpZiAoIXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewor
ICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFn
ZSgpKSk7CiAgICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJp
bmdLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwo
KSkgeworICAgIGlmICghcGx1Z2luVmlldy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKICAgICB9CiAKLSAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKLSAgICAgICAg
U3RyaW5nIHBsdWdpbk5hbWUgPSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOworICAgIGlm
IChwbHVnaW5WaWV3LnBsdWdpbigpKSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1
Z2luVmlldy5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxs
KCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsK
ICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBs
dWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNv
bnN0IFBsdWdpblZpZXcqIHBsdWdpbgogIAogICAgIGludCBlcnJvckNvZGUgPSAwOwogICAgIFN0
cmluZyBkZXNjcmlwdGlvbjsKLSAgICBzd2l0Y2ggKHBsdWdpblZpZXctPnN0YXR1cygpKSB7Cisg
ICAgc3dpdGNoIChwbHVnaW5WaWV3LnN0YXR1cygpKSB7CiAgICAgICAgIGNhc2UgUGx1Z2luU3Rh
dHVzQ2FuTm90RmluZFBsdWdpbjoKICAgICAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdEVycm9y
Q2Fubm90RmluZFBsdWdJbjsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gV0VCX1VJX1NUUklO
RygiVGhlIHBsdWctaW4gY2FuXHhFMlx4ODBceDk5dCBiZSBmb3VuZCIsICJXZWJLaXRFcnJvckNh
bm5vdEZpbmRQbHVnaW4gZGVzY3JpcHRpb24iKTsKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3Qg
UGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9y
RG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOworICAgIFJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJv
ckNvZGUsIHBsdWdpblZpZXcudXJsKCksIFN0cmluZygpKTsKICAgICBDT01QdHI8SVdlYkVycm9y
PiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3Is
IHVzZXJJbmZvQmFnLmdldCgpKSk7CiAgICAgIAogICAgIHJlc291cmNlTG9hZERlbGVnYXRlLT5w
bHVnSW5GYWlsZWRXaXRoRXJyb3Iod2ViVmlldywgZXJyb3IuZ2V0KCksIGdldFdlYkRhdGFTb3Vy
Y2UoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKTsKQEAgLTExNTgsNyArMTE1OCw3
IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwotICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5T
aXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxv
YWRNYW51YWxseSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZy
YW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
bWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiAKICAgICBpZiAocGx1Z2luVmlldy0+c3RhdHVzKCkg
PT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm4gcGx1Z2lu
VmlldzsKQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYgcGx1Z2luV2lkZ2V0KQogUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgLypi
YXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUo
Y29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVz
LCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAg
YXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBs
dWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBs
aWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIHBs
dWdpbiBjYW4gYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseQogICAgIGlmIChwbHVnaW5WaWV3LT5wbHVn
aW4oKSAmJiBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bG9hZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZjhkNzQ4ODVmMDZjNTRhNDMzODc2OTMzMzhjMGUwNjMyNGQ5OGFjYi4uMmZi
YWI3OWM3MGQwMjE0ZTg0ZjA3ZThkYmU4YWQ0NzE4YzFjNzkzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6CiAgICAg
dm9pZCBzZXRXZWJGcmFtZShXZWJGcmFtZSogd2ViRnJhbWUpIHsgbV93ZWJGcmFtZSA9IHdlYkZy
YW1lOyB9CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV93ZWJGcmFt
ZTsgfQogCi0gICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNv
cmU6OlBsdWdpblZpZXcqKSBjb25zdDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQ
bHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCiAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZiNjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1
ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZiZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4g
U19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmlu
ZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAg
aWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2Fk
RGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNU
UgogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFp
blRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxh
aW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHBsYWluVGV4dCksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0
KSk7CiAgICAgQlN0cmluZyBwbGFpblRleHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEw
KTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxv
YWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5j
b2RpbmcsIHVybCwgbnVsbHB0cik7CkBAIC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFt
ZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJs
KQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywg
X0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmlu
Z0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFy
KSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5n
KFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciks
IDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUy
NDUxMTVmZGUuLjUwMmNhODlkZjZiOTBkMGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xT
UEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJh
bWUgZmluYWwgOiBwCiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8g
QlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwp
OwotICAgIHZvaWQgbG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1
dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmlu
dGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdl
YkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVp
Z2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5
MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1
NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkg
KzE4Nyw5IEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7
CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlv
biBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5h
dGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwog
fQogCiB2b2lkIENBVmlldzo6c2V0Q29udGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRD
aGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FW
aWV3LmgKaW5kZXggNDViNjRlYzAxNTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5
NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmll
dy5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENB
Vmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7
CiAKLSAgICBzdGF0aWMgUmVmUHRyPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7
CisgICAgc3RhdGljIFJlZjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAg
IH5DQVZpZXcoKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFj
a0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lkKiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlz
cGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlm
YzUuLmFhYmQxOThiMTExNWVkN2U2NWFkODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlM
aW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAgICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsK
IH0KIAotUmVmUHRyPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3Bs
YXlMaW5rQ2xpZW50KiBjbGllbnQpCitSZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6
Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENWRGlzcGxheUxpbmsoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1ZEaXNwbGF5TGluayhjbGllbnQpKTsKIH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NWRGlzcGxheUxpbmsuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEy
NjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMuLmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEw
OTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIENWRGlzcGxheUxpbmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBs
YWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlMaW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPENWRGlzcGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7
CisgICAgc3RhdGljIFJlZjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVu
dCopOwogICAgIH5DVkRpc3BsYXlMaW5rKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0lt
YWdlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQx
MTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4uY2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVj
MzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFj
ZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2UsIFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFj
ZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5IZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6
Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1
Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVlYjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0
ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDgg
KzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNU
UiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3Vw
LCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEs
OCArNjkzOSw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9J
bl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3Jv
dXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357584</attachid>
            <date>2018-12-18 11:06:27 -0800</date>
            <delta_ts>2018-12-19 00:22:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181219040626.patch</filename>
            <type>text/plain</type>
            <size>407885</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODY1Y2RiMzhiNTQxOTE2ZDEyZDc4ODBjNTdkODllMjdlYjUyNmIyLi41OWVkZTc2YWFiOTU0ODE3
YTk1N2M1ZmY5MDk1Y2U5MTEyMzE4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFycmF5IHVuc2hpZnQvc2hpZnQgc2hvdWxkIG5vdCByYWNlIGFnYWluc3QgdGhlIEFJIGluIHRo
ZSBjb21waWxlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhNWQ3MTgyZDA3YWZiYjExYzAwZjE2
MjcxZGVhOThjMzJhNGQ0Ni4uNWEyM2U0MmM2YzZmNjk0ZWVhMjIxMDdjZTM3Yjc0OGFhYzFjZTNj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5NyBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBt
dWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4TmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVy
OjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVIeXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dl
dFN0YXJ0SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZElu
ZGV4KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRU
b05TUmFuZ2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0
YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9y
Q3VycmVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVy
ZWRSZWN0c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KToKKyAgICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVh
dGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0
aXZlVGV4dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNl
ZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2Vy
QXRFbmRPZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFy
b3VuZE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJ
bk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0
b3IpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGlu
ZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlQXBwbHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9j
a0NvbW1hbmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxp
bmVEZWNsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9G
cmFnbWVudCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJv
bHMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxk
SW5pdGlhbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9w
ZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hl
ZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdp
dGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxh
dGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25z
dW1lU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhv
c3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp1cGRhdGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9j
ZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNy
eXB0aW9uQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJB
bmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29k
ZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlh
bGl6YXRpb25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrVHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3Rv
cmFnZU9ic2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
eXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2lu
OjpTZWFyY2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
V2luOjpwb3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVX
aW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2U6OmFyZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQpOgorCiAyMDE4LTEyLTE3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBGaXggY29tcGlsYXRpb24gd2FybmluZ3Mg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE5NmFlODU1
YWM3NTc3NzFhMTNmMmU4ZGRjOTRkMGEwM2U0NjVjOS4uNzc2ODRlOGJjYWRiNDg0ZTI3YWM5OTg0
YWQ0Yjc3NjU2MWI5YjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTgg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYW5kIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBhcmUgZmxha3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYxOGNhNGI4NzZi
MzljOS4uMzEyZGMwMzI0YzUxMWEyYTY1MDNiYTYxM2I0MDg5YzZlYjg5YjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNo
IGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDoKKwog
MjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJuaW5nOiAnSVdl
YkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJsb2FkZWQgdmly
dHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0NGFjMi4uZDJj
NjFjOGU1MzNhMmYxYWJkNzVlNGU1YTQ1YmExN2ZiYWI5OGNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTE4ICBZdXN1a2UgU3V6dWtpICA8
eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2gg
YXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAgICAgICAgKFNl
YXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAgKFNlYXJjaFBv
cHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhE
aWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQ
bGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgtMTItMTcgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlMjQzODljMzFlN2M3MDY3ZmZl
NDViYzY0MTBiYjRhNWZlNDE5YWRhLi44OTg3YTYyYzE5ZDFkZDJiYzAwNzZiOGM5YzU0NDRkYzBj
MDY0OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTgtMTItMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2luKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGVKYXZhU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5S
ZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6
aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdl
dERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRlZFN0cmluZzpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX2Fk
ZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0
OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIG9mZnNldExlZnQgYW5kIG9mZnNldFBhcmVudCBzaG91bGQg
YWRqdXN0IGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDQwYWMwNTM4MWZiN2QwNjk0NmRiYjQ0YTBlMWU0NjE5MThiMmMwM2YuLmJiOTFjNTUy
ZTgxZjE5MWJhOGQ1MDQyNDEyZGJlYjVkMjkwOWRhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTEyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXVtXZWJLaXRMZWdhY3ldIHdhcm5pbmc6IGV4cGVj
dGVkIGEgcXVhbGlmaWVkIG5hbWUgYWZ0ZXIgJ3R5cGVuYW1lJyBvZiBDT01FbnVtVmFyaWFudCBh
bmQgQ09NUHJvcGVydHlCYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5
LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li40YTk1
ZmNkOTViMzkwNzdlMWM2MTAyYTQ3ZWJhNDU3YTBiNjczYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRT
aXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBlKSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwg
Wz1dKHZvaWQqIHApIHsKKyAgICBSZWY8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKICAgICAgICAg
aWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250
ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZiMzFiNzE1ZjZhMGE4YmU0
Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUxMjhlNDhmNDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0
b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29tbW9uLndhdGNocG9pbnRz
LmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogbmV1
dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5zZXQoKS0+YWRkKHdhdGNo
cG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFkZCh3YXRjaHBvaW50KTsK
ICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOwogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9pbnQgYXQgYWxsIGZvciBz
aGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDZiMGYzMTkz
ODg2NDhjZDI5NWI2ZjExYzU3M2FiNzM4NDQyMTk3ODcuLjBiMzRmNDZjZTI2MThkNzJhNDZhOWVi
OGJkNzJmZDJhNjVkYjNmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0z
MDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRoaXMpKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYobmV3IFN0b3BJ
Zk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNy
ZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9w
dFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAgLCBtX2RlZmVycmFsRGVw
dGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXllZFJlbGVhc2VSZWN1cnNp
b25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dlZXBlciYgSGVhcDo6c3dl
ZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0dXJuIG1fc3dlZXBlci5n
ZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCBjOGFlZDRhMzZhNTg4
MjAxZjE1MjdlNWVhYWZhMTQ1MzI5NWMwMDE5Li45ZGE0YWEzYWJkMWMyZTcyZWE4OTU5N2MzYmVm
OWQ4OGRkNWRjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC02MjksOCArNjI5
LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5jcmVtZW50YWxTd2VlcGVy
PiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKKyAg
ICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CiAKICAg
ICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5ODA2N2U4YzA0YzdlYzVk
NjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAgICAgQmFzaWNSYXdTZW50
aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQdHI8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJ
c29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQogewogICAgIGNs
YXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPiB7CiAg
ICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsbwogICAg
ICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0
aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdjMzI5NzQyN2Q4NzQ2MmJk
ODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3MmI2YzZjMGI3ZTJlNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxs
U2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCogY2VsbCkgY29uc3Q7CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICAvLyBUaGlzIHdp
bGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRldmVyIFN1YnNwYWNlOjpm
b3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Jsb2Nrc1dpdGhCaXRzLgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1
bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgUmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0
IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggYWM0
MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3ZGU4ZTE5MGVhOGU1M2Y5
MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0NlbGxT
ZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IElzb0Nl
bGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBSZWZQdHI8U2hhcmVkVGFz
azxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVmPFNo
YXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAgICAg
IEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCBkMzc3ZjlhZWFmYjhk
MzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3NDY3NjBhYThhNDA5NDA0
YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNwYWNlOjpmaW5kRW1wdHlC
bG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkVGFz
azxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgp
CitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPEJs
b2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEwICsxMTIsMTAgQEAgUmVm
UHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxEaXJl
Y3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+
PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGlyZWN0b3J5KiwgTWFya2Vk
QmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0YzYzZWM3Mjg1ZGQ0ZDRm
ZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5MjM0ODA0NzczZGIxOGNh
YzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZv
aWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJl
ZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOworICAg
IFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxsZWxEaXJlY3RvcnlTb3Vy
Y2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFj
aE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTm90RW1w
dHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tT
b3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9y
RWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNz
IFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmKTsKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0cjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBlODNiMzgyZGY4MDZlZjI0
ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2MTRlMGIxYTZjZjc2OTNh
NTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGlu
ZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNo
YXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxs
SW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90Vmlz
aXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBTdWJzcGFjZSYg
bV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5jIG1fZnVuYzsKICAgICAg
ICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNpdExhcmdlQWxsb2NhdGlv
bnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2so
KnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGY2NDQwNzFkM2Y5N2M2ZGQ2YTZhNjQwMTRkMTVmMWU0MmRhNzQwOGMuLjBiOTk2MWI4YWMzOWYz
ZWQwMmRmMjhmZTg0NmUyZDJjODk4ZDVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRG9sbGFy
QWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBtZXNzYWdlID0g
V29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVs
ZWFzZUNvbnRlbnRzKCkpOworICAgIFJlZjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUo
KTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFy
aW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYyZGVj
MDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uODk1YjI5YjZjOWUxNTIzNWQzNDVkOTQyOGEzNTM5M2Ez
YzhhODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5k
ZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBj
dXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJh
eUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAgIHJl
dHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikgY29u
c3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3Ro
KCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlC
dWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIFJlZjxBcnJheUJ1
ZmZlcj4gcmVzdWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNo
YXJpbmdNb2RlKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJj
NWU5NDlkMjgzZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEy
OCw4ICsxMjgsOCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291
bnRlZDxBcnJheUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUlu
Qnl0ZXMoKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4s
IGRvdWJsZSBlbmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZl
cj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4o
KTsKICAgICBpbmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFy
cmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAg
ICAgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250
ZW50cyYmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAg
QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBS
ZWY8QXJyYXlCdWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBj
b25zdDsKICAgICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWdu
ZWQgbGVmdCwgdW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCBkMWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRh
ODdiMDVjMzk4Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBC
YXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAg
ICAsIG1fc2V0KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJy
YXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJi
ZDZlYmJlMDFhNy4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9p
bnRTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJl
QWxsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAg
IFJlZjxXYXRjaHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdl
Li43OTE4YjYyYjA3MjJhY2JlZjdhYTcyOWM0MGI0NzY5MzFjMGRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcApAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UK
ICAgICAgICAgZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNs
aWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIFJl
ZjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFs
T2JqZWN0KHZtKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgp
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCBhZjhmZjVhMGE4MGNlOGJhYWFkMDdhMWQ1YmNhNjE0
MGNlZTAzMGUxLi4yMzhlZTY3YzM4Mjg0MTliMzNmMTQ5ZTJiNDNiNjI2NWU4NzRkNzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVN
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVk
aWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2Yga2V5U3lzdGVtLgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlv
biA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxl
bWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMDdh
NGNkZGQxZDRiM2NmNDMzOWYyYjBjOTg3YTNlMWQyNzFhZjJmMC4uMmNlM2M4YTBmODczOTk0MTli
OWYwOGNiM2ZlNGJjYjJkNzc4MGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRp
bmdTdWNjZWVkZWQoKQogICAgIG1fY29uc3VtZXIubG9hZGluZ1N1Y2NlZWRlZCgpOwogfQogCi1S
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsK
LSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVu
ZEJsb2IoYmxvYkJvZHkoKS51cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAg
LTI1MSwxNSArMjUxLDEzIEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNGb3JtRGF0YSgp
KSB7CiAgICAgICAgIEFTU0VSVCghY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBjb25zdF9jYXN0PEZvcm1EYXRhKj4oJmZvcm1E
YXRhQm9keSgpKTsKKyAgICAgICAgUmVmPEZvcm1EYXRhPiBib2R5ID0gbWFrZVJlZihjb25zdF9j
YXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpKTsKICAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcygmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgfQotICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogfQogCiBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggZGFhZDdjNDJjNDc3OWIxYTQwNjk1ZDBmMTUwZDdmOWY0
Yjk5NmM1Mi4uYjdiMjIwMTVjZGMwMjYzYmViNDMwZjQ5Yjk4MzU5MjY1ZjQ2MGU3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEZldGNoQm9keSB7CiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2Fk
aW5nU3VjY2VlZGVkKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGJvZHlBc0Zv
cm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBjb25zdDsKIAogICAgIHVzaW5nIFRha2Vu
RGF0YSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRC
dWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA5ZDI1MDY3NWZkZTdjMmVj
MWZiNjMxYTkxZmVlYTdjYzQzOGM1YTliLi41OGE3MmIxMjFjZTFmOTM1Mzk2N2FiMmEzZDRiYjdk
Nzc5ZGY4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uLmNwcApAQCAtMzA0LDEwICszMDQsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmUKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9u
cykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3RpZmll
ciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRSZXF1
ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAotICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKKyAg
ICBtX29uZVNob3RzLmFkZChXVEZNb3ZlKG5vdGlmaWVyKSk7CiB9CiAKIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ss
IFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zJiYgb3B0aW9ucykKQEAgLTMxNSwxNCArMzE1LDE0IEBAIGludCBHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxQCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0
aW9ucykpOwotICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CisgICAgYXV0byBub3Rp
ZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgc3RhcnRS
ZXF1ZXN0KG5vdGlmaWVyLnB0cigpKTsKIAogICAgIGludCB3YXRjaElEOwogICAgIC8vIEtlZXAg
YXNraW5nIGZvciB0aGUgbmV4dCBpZCB1bnRpbCB3ZSdyZSBnaXZlbiBvbmUgdGhhdCB3ZSBkb24n
dCBhbHJlYWR5IGhhdmUuCiAgICAgZG8gewogICAgICAgICB3YXRjaElEID0gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5jaXJjdWxhclNlcXVlbnRpYWxJRCgpOwotICAgIH0gd2hpbGUgKCFtX3dh
dGNoZXJzLmFkZCh3YXRjaElELCBXVEZNb3ZlKG5vdGlmaWVyKSkpOworICAgIH0gd2hpbGUgKCFt
X3dhdGNoZXJzLmFkZCh3YXRjaElELCBub3RpZmllci5jb3B5UmVmKCkpKTsKICAgICByZXR1cm4g
d2F0Y2hJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCmluZGV4IDI1OGQ4OWE1YWRhYmNhNTg4YTE5YTQ4ZDk3OGY2ZWUyMjFmOGRl
N2UuLjE4NDc0MzkxOTBhOGI3OWJlZjcwNjQzMmZkMmY5ZDc1NTY5MDczNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTk3LDEx
ICs5NywxMSBAQCB1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRh
YmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBv
YmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKICAgICAgICAgb2JqZWN0U3RvcmVO
YW1lcy0+YXBwZW5kKG5hbWUpOwogICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDc2YTEy
ODU5MTAxMDQ2ZTY1MmI4ZWRhYjRmNzAzZTBkNGFkMTU5M2UuLjE1ZGFjYjEyODExZDAzMWI3MGUx
ZTFjZjc0ZTliMDkzOWQ5ZjMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJEYXRhYmFzZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldAogICAgIC8vIElEQkRhdGFiYXNlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Q7CiAgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5k
ZXggN2RjNWUwZjc5OWMwYTYyODYyMDMyZWZkMWVmY2JhYWQ4YWQ2NGU5NC4uOGUwNzJhODM2ODI0
YmQ2Nzk3MGFkYzZhN2UwNTAwODdhNTE5ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTIyLDExICsxMjIsMTEg
QEAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
bmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlZDYwNjQ3ZTIwNzdiMzlhOTdkYmM0
ZGU4MDc5MzViYTM5YTFkNzlkLi5kMDQ0OTkzMTljODE3ZTU5ZWJjYjU1MTU2ZGQ4YTA0MjUzY2U4
YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCk7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBjZTcyOGZjZTI2
Mzg4NWIyMDc5NzhiNmM4NGYxYmVkNDc4ZDdkYzEyLi4xNzViZGRhNzI3MWI1MDE2YzE5YjI3ZTgy
NWU0YThmMjNjODk1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgbV9vcGVu
UmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2No
ZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYg
b3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbik7CisgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQo
b3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHNjaGVkdWxlUGVuZGluZ09w
ZXJhdGlvblRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCBlY2FjMTQ2ZTVkNjkyZWZlYTk5OWNlZjExMDZhNzZiMTMx
MTgyNzIzLi5iZDZkZGU1Njc3Mzg1NDdhYmYxYmE0OThmYTk3MGQzOGNmNDI5Yzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogICAgIHZvaWQgZmluaXNo
QWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25z
dCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlv
bihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CiAgICAgdm9pZCBwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgY29tcGxldGVkT3BlcmF0aW9uVGlt
ZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGU4NTUxMjUzMWI0
NjRkM2QzNjFlMzRiM2I4OWFhYzEzNmQwYjFmZWMuLjhkZGI1NmUxNzhiNzJlZjIxYTY2NmViMTY5
ZGZjMTZlZTk4OTJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xODEsNDAg
KzE4MSwzNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMg
VHJhbnNhY3Rpb25PcGVyYXRpb24gewogICAgIH0KIH07CiAKLWlubGluZSBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAoraW5saW5lIFJlZjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29t
cGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6
KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBw
ZXJmb3JtKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0pKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0
ZXIxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29tcGxl
dGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5l
dyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRl
cjEsIHBhcmFtZXRlcjIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMz4K
LVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
CitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNh
Y3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIE1QMSwgTVAyLCBNUDMpLApA
QCAtMjIyLDI0ICsyMTksMjIgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJm
b3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
CiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNv
bXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElE
QlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwg
cGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJh
bnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgSURCUmVxdWVzdCYg
cmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0
JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjQ3LDEyICsyNDIsMTEgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVy
Mik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0y
NjEsOCArMjU1LDcgQEAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMykKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBw
ZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxLCBNUDIsIE1QMz4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmluZGV4IDE0YmI5Nzc1MzZiYmZiZmYyZWFj
NjMwOTA2NDA5NDQwZGJmYTNjZmMuLjNhYTQzYTk5YWUwOTgxYzhmYzBkZjUxNmNiY2VhNmZiNDE4
NzYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRGV2aWNlcy5jcHAKQEAgLTExMCw4ICsxMTAsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgUHJvbWlzZSYm
CiAgICAgICAgIHZpZGVvQ29uc3RyYWludHMuc2V0RGVmYXVsdFZpZGVvQ29uc3RyYWludHMoKTsK
IAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgqZG9jdW1lbnQs
IHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEsIFdURk1vdmUoYXVkaW9Db25z
dHJhaW50cyksIFdURk1vdmUodmlkZW9Db25zdHJhaW50cykgfSwgV1RGTW92ZShwcm9taXNlKSk7
Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAgcmVxdWVz
dC0+c3RhcnQoKTsKIAogICAgIHJldHVybjsKIH0KQEAgLTEyMyw4ICsxMjIsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYShjb25zdCBTdHJlYW1Db25z
dHJhaW50cyYgY29uc3RyYQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgq
ZG9jdW1lbnQsIHsgTWVkaWFTdHJlYW1SZXF1ZXN0OjpUeXBlOjpEaXNwbGF5TWVkaWEsIHsgfSwg
Y3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cy52aWRlbykgfSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci0gICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CisgICAg
cmVxdWVzdC0+c3RhcnQoKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRl
eCBlMTBiOTZiYzkxZDZmZTU4Y2MwYWI5ZWNhNjEyNmFmMmIzNjgxOTNjLi5hMWNiNzRiYTYxOWJi
NzI0ZTRhNmUwNTdiOWQ5ZmRiOTM4MDcwOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ5LDkgKzQ5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4g
VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0
cmVhbT4+JiYgcHJvbWlzZSkKK1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNl
KQogewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9j
dW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShwcm9taXNlKSkpOwogICAgIHJlc3VsdC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggZGU1MWZkOWZjNDNlYjI5
N2U1ZDJhMjdlNzY0YWE0ZDI3YzMwYTVmMS4uNmRlN2U1YzhkN2JhNDEzZTIwMzY4ZTU0MDI3ODA3
NTE3Yjc1MWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVc2Vy
TWVkaWFSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVh
bVJlcXVlc3QmJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+
JiYpOworICAgIHN0YXRpYyBSZWY8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50Jiwg
TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVk
aWFTdHJlYW0+PiYmKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICB2
b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAppbmRleCAwZmYwZTIwNDM4MGU3ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmLi43
NTA2OGUxOTBhMTlhNDQ5NDA2NTlkYmRkMzc0ZGYyNzg0ZDliYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzLCBibwogCiAgICAgLy8gTm93IHN1bSBhbGwgb2YgdGhlIGF1
ZGlvLXJhdGUgY29ubmVjdGlvbnMgdG9nZXRoZXIgKHVuaXR5LWdhaW4gc3VtbWluZyBqdW5jdGlv
bikuCiAgICAgLy8gTm90ZSB0aGF0IGNvbm5lY3Rpb25zIHdvdWxkIG5vcm1hbGx5IGJlIG1vbm8s
IGJ1dCB3ZSBtaXggZG93biB0byBtb25vIGlmIG5lY2Vzc2FyeS4KLSAgICBSZWZQdHI8QXVkaW9C
dXM+IHN1bW1pbmdCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxz
ZSk7CisgICAgYXV0byBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZh
bHVlcywgZmFsc2UpOwogICAgIHN1bW1pbmdCdXMtPnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVz
LCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fcmVuZGVyaW5n
T3V0cHV0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODhhZTA0YWJiZTM5ZTUxNzM0ZWJiMDE3ZTIw
ZjI2MWZiYjA0MWU1Ni4uYjljYzIwY2QyZTVhZmM3NjExYjM3MDMwNmUxMDQxMjg0N2IyMDhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6aW5pdGlhbGl6ZSgpCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwg
YmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBt
X251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1
dG8gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpj
cmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkg
OiAwOworICAgICAgICBhdXRvIG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJT
aXplKCksIHNhbXBsZVJhdGUpIDogMDsKIAogICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQo
aW5wdXRCdWZmZXIpOwogICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudC5jcHAKaW5kZXggMDkxYTMwYTI2ZjUxOWJkYzY4MzlkMGJjNjdmMDU4NjYzYjY3NGFkMS4u
N2UxM2QwNjBiMzUxNmQyNWUwYjIzYzlkZDY0MDRmN2FiMDYzNWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAg
ICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxTUUxSZXN1bHRTZXQ+IHJlc3VsdFNldCA9IFNR
TFJlc3VsdFNldDo6Y3JlYXRlKCk7CisgICAgYXV0byByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOwogCiAgICAgLy8gU3RlcCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGNvbHVtbiBuYW1l
cy4KICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgU1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlJiBkYikKICAgICAvLyBGb3Igbm93LCB0
aGlzIHNlZW1zIHN1ZmZpY2llbnQKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZlY3RlZChkYXRh
YmFzZS5sYXN0Q2hhbmdlcygpKTsKIAotICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAg
IG1fcmVzdWx0U2V0ID0gV1RGTW92ZShyZXN1bHRTZXQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCAzZDE1NGFjNWEy
MWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3Li4wZGM0MTFhZTMwM2U0YjA4NmVkYmY5Zjg2
OGY4NWRiNGQxYWM2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5j
cHAKQEAgLTQwLDEwICs0MCw3IEBAIFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIHZvaWQg
V2ViR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgV2ViR1BVQWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKICAgICBh
dXRvIGFkYXB0ZXIgPSBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7Ci0gICAgaWYg
KCFhZGFwdGVyKQotICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTsKLQotICAgIGRlZmVycmVkLnJl
c29sdmUoKmFkYXB0ZXIpOworICAgIGRlZmVycmVkLnJlc29sdmUoYWRhcHRlci5nZXQoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKaW5kZXggZWVlYzRkZjY4YzYyZTQxN2Q0ZGIzYjcxMTIy
MzRkZjNjZTJmZTlhOC4uNzdmOWY0OTFlNGZjMTYxOWUwMGRiOTI2NzQ4ZWFhYmFiYmQ1MTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAK
QEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVBZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIC8v
IEZJWE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCA0YjhlZmY1MjEz
YjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIzZmVjLi44ZDA0ZTU0YmYyYTY0MDhlOWU4ODI1NGM4
MjA0Y2VjNTVjMTY4MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBXZWJHUFVBZGFwdGVyRGVzY3Jp
cHRvcjsKIAogY2xhc3MgV2ViR1BVQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUFk
YXB0ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BV
QWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CiAKICAgICBS
ZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKaW5kZXggMzQ5NDFkMGVhNWY3OTI1MWNi
NDhkZGViZjc0MTM0M2Y5ZTRiYTcwOS4uOTA5YTVjNzY0MmYyNGFmNjQyNDhkOTk5ZGMzMWM0ZTQy
MGY0MDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZm
ZXIpCitSZWY8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuaAppbmRleCBlMjc2NDI1YmQ0MmI1ZDY4MmZiZTI0MjhhNDAwNmUyM2Y0OTIzODc1Li41
MWFlYmYyZTJhNzg1YTE5ZGEzYjBkYjY4NjhhZGFjZDdjYmNiMjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVUJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQnVmZmVy
PiBjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVCdWZmZXI+
IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUJ1ZmZlciYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCBkYmI4
MDNiZTI3MzIxYjliZTZjZGY1OWQ5MTFhZmJjMDMzODQyOTQyLi5iNmVjYWFhMTVlNDJhZGM4ZTJl
NTFhNDVlMjdhNGQ0Njg0YTEyYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorUmVm
PFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BV
Q29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIFdlYkdQVUNv
bW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtNjUsOCArNjUsOSBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgICAg
ICBncHVSZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2ht
ZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yIH0pOwogICAgIH0KIAot
ICAgIGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Ci0gICAgcmV0
dXJuIGVuY29kZXIgPyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNv
ZGVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlbmNvZGVyID0g
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1v
dmUoZ3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAppbmRl
eCA3MmRmMzEyZmY4ODBiNzhmN2VjYTExNjkzMjUyNjM5MjQzN2JkMWVmLi45OGVlNDBjZGRkNDQ0
YjEwNTY1YmNkNDdkMzc0ODQzNWNiY2JlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0
cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVQ29tbWFuZEJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZmZXI+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwogCiAgICAgY29uc3QgR1BVQ29tbWFuZEJ1ZmZl
ciYgY29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCA3N2JhNGNiYzA4Zjk2YjFlMzIyYzY5ZDQ4N2Y3MDU5NDEyODZjNDM4Li5lNDBlYTk4Mjc3
OWE3OTM1ZDgzNjA4MjcwODlhMGYwMTc1MzQxOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ2LDggKzQ2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIGF1dG8gZGV2aWNlID0gR1BVRGV2
aWNlOjpjcmVhdGUoKTsgLy8gRklYTUU6IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBj
cmVhdGluZyBtX2RldmljZS4KLSAgICByZXR1cm4gZGV2aWNlID8gYWRvcHRSZWYobmV3IFdlYkdQ
VURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpKSAvLyBGSVhN
RTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpLCBk
ZXZpY2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8
R1BVRGV2aWNlPiYmIGRldmljZSkKQEAgLTYwLDE1ICs2MSwxNyBAQCBXZWJHUFVEZXZpY2U6Oldl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYm
IGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/Ci0gICAgYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJuIGJ1ZmZlciA/IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihHUFVCdWZmZXJEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0pKQorICAgICAgICByZXR1cm4gV2Vi
R1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRv
cikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4gYmUgdmFsaWRhdGVkIGhlcmU/Ci0g
ICAgYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSk7Ci0gICAgcmV0dXJuIG1vZHVsZSA/
IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51
bGxwdHI7CisgICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVs
ZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gdmFsaWRhdGVBbmRDb252ZXJ0UGlwZWxpbmVTdGFnZShj
b25zdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTg5LDE0
ICs5MiwxNiBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBp
cGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0YWdl
KSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3ks
IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KTsKLSAgICByZXR1cm4gcGlwZWxpbmUgPyBXZWJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0
cjsKKyAgICBpZiAoYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGlu
ZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdU
Rk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNj
cmlwdG9yLmlucHV0U3RhdGUgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyKCkgY29uc3QKIHsKLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2Rldmlj
ZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIHJldHVybiBjb21tYW5kQnVmZmVyID8gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRl
Q29tbWFuZEJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFJlZlB0cjxXZWJHUFVRdWV1ZT4gV2ViR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggMWExYzUyY2JjOTc1MGNiNzRhNmRiNzY1N2IyY2U4MWQ2YTA3MDgx
YS4uZGFmMWIwODIyN2Q0NjU2MDM5YzM3MmQzNTMxYzBmZjk4NjQ3YjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29t
bWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CiB9CiAKIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDMxMjk2ZTNlOWU4
MjhlMTA0MjEwZWQ0MDU5NzhlMmUyZjMxZmMwN2YuLjg3YTdlYWYxOWYwOTkwNzFkYjdkM2FmMGE4
ZDE0YTAwZWU5MmE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBX
ZWJHUFVCdWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVi
bGljIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYm
LCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgLy8gRklYTUU6IExhc3QgYXJn
dW1lbnQgc2hvdWxkIGJlIFZlY3Rvcjx1bnNpZ25lZCBsb25nPi4gV2h5IGlzIHRoZSBnZW5lcmF0
ZWQgY29kZSBpbmNvcnJlY3RseSBhc3N1bWluZyB0aGUgSURMIHdhbnRzIGEgc2VxdWVuY2U8dW5z
aWduZWQgaW50Pj8KICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVj
dG9yPFJlZlB0cjxXZWJHUFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCmluZGV4IDNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEuLjEwNmM1
NzY4MGQ5NzU3OTFmZmYzMzgxYzFmOWQ2NjExMzkyODY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lKQorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RG
TW92ZShwaXBlbGluZSkpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRl
clBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4
IDJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIuLjM5MTdmYWQ3NjdmY2Ni
MGVkNzViZGViNzRjYTZhMGRhMTNjYzhmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiYmKTsKIAogICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gcmVuZGVy
UGlwZWxpbmUoKSB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lLmNvcHlSZWYoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNw
cAppbmRleCBlODIzYjA0NGE4ZjAyY2Q2YmM1OTIzMDQxY2Y4ZTU5NmI4NjFiOThlLi45OTRjMmVj
YTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTMwLDkgKzMw
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxl
PiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVs
ZSkKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJl
ZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKIH0KIAogV2ViR1BV
U2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBt
b2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oCmluZGV4IDQyMDI5OTRkNDdlYzI0YTFmZTA5YTZlYjRjNmY3NDU3YTBhYzQxOGQu
LjY0NjYwYjMxZTQ1NmZmYTA4MDU2ZGVlNTViNmNhZDQ1YjMzMzc4ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxH
UFVTaGFkZXJNb2R1bGU+JiYpOwogCiAgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5wdHIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IGM2NzgwZWY2MWIwMjk5ZmVl
MTk1ZjEyNWY1NmNlNGQ4ZTg2MmM3MjcuLjlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgzMDll
MjYzNmNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuY3BwCkBAIC00NCw4ICs0NCw5IEBAIFdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUo
UmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSkKIAogUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogewotICAgIGF1dG8gZ3B1
VGV4dHVyZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgcmV0
dXJuIGdwdVRleHR1cmUgPyBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVs
ZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGdwdVRleHR1cmUgPSBtX3Rl
eHR1cmUtPmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpKQorICAgICAgICByZXR1cm4gV2ViR1BV
VGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKaW5kZXggMDQ1
OWE1M2EyODhlY2YzYjI2OGZjMmMwNjY0NWI3NGIxMjM0NjUxYy4uNzI2NTk0NWEyM2U5YzEwZDI2
YTcwM2RmZTQ0MmQwZjQ3YWIwZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQorUmVmPFdlYkdQVVRleHR1cmVW
aWV3PiBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVUZXh0dXJlVmlldyhXVEZNb3ZlKHZpZXcp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2
aWV3KSkpOwogfQogCiBXZWJHUFVUZXh0dXJlVmlldzo6V2ViR1BVVGV4dHVyZVZpZXcoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlVmlldy5oCmluZGV4IDQwZmQ4MTQ5MmIwODFkZmNkYzkxYmVmNTM4MmFkM2Y3
OThhOTM2ZjcuLmZiZWI4YmM2NjU2MDQyNzdlMGRmMzk1MDNmODc5MWJlY2EwOTJhZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVRleHR1
cmVWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVVGV4dHVyZVZpZXc+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1
cmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8R1BV
VGV4dHVyZT4mJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5jb3B5UmVmKCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMTE0YmE5NDliMGIzMmQwZjZlNjg5MjEy
ZGZkNTFmM2UxMjMxNWIyLi5mOTYyZGFhOWRjNzdjODE0NGJiNmJmNjU3YjdmZDBhYzJhMzAwZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTE3OTksMTMgKzE3OTksMTMgQEAgUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW4KICAgICBpZiAo
ZW5kUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZSgmb3JpZ2luYWxSYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gc2VhcmNoUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICBhdXRvIHNlYXJjaFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgaWYgKHNlYXJj
aFJhbmdlLT5jb2xsYXBzZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3Np
dGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsK
LSAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLmdldCgpLCBtYXRj
aFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChz
ZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzUmVwbGFjZWROb2RlT3JCUihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAppbmRleCA2
ZmY2NDRjZjVmMGQwYTI5ODFiNGNlN2Q4YWFiOTMzNjc2Y2QwOWYwLi5mN2NkM2FhOGFkZGE2YTRi
Y2ZhNDEwOTRlZDQ1OGNiYzM3ZjFmYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMzM3LDggKzMzNyw4IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgICAgIC8vIENvbnNpZGVyIHByZXZpb3VzIHRl
eHQgb2JqZWN0cyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgZm9yCiAgICAgICAgIC8vIHRoZSBjdXJy
ZW50IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGVuc3VyZSB3ZSBlbWl0IHRoZQogICAgICAgICAv
LyByaWdodCBvZmZzZXQgKGUuZy4gbXVsdGlsaW5lIHRleHQgYXJlYXMpLgotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCAwLCBub2RlLCAwKTsKLSAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0ICsgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5wYXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwor
ICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQgKyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKICAgICB9CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBl
ciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0
VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAppbmRleCBh
NmU5NjNkZWFiZjdkMDFmNTA3ODkzYjAyNjIzMjM0ZjYwOGRhNjA3Li5iYzE2ZTRiMjkwMzExMzlk
YzY0ZDZjMjM2ODlhZWQ5NDY3NTA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcApA
QCAtMjYwLDggKzI2MCw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtH
ZXRTdGFydEluZGV4KEF0a0h5cGVybGluayogbGluaykKICAgICBpZiAoIXBhcmVudE5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5v
ZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRS
YW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRFbmRJ
bmRleChBdGtIeXBlcmxpbmsqIGxpbmspCkBAIC0yODYsOCArMjg2LDggQEAgc3RhdGljIGdpbnQg
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykK
ICAgICBpZiAoIXBhcmVudE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5v
ZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFu
Z2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgbGFzdFBvc2l0aW9u
SW5PckFmdGVyTm9kZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0
KGNvcmVPYmplY3QsIHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFj
Y2Vzc2libGVIeXBlcmxpbmtJc1ZhbGlkKEF0a0h5cGVybGluayogbGluaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAxOGM5ZTliNTc5N2M5OTE2ZDI2MjVhOWZiNDBj
NjdmZjYzMTAzN2RlLi5kYTQwMmRhMGJlMGNmYzQxNWIwZWVkNTdiNDRmZjJkNzlhYmNjODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00MDYsMTMgKzQwNiwxMyBA
QCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIFZpc2libAogCiAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIG9m
IHRoZSBzZWxlY3RlZCByYW5nZSBpbnNpZGUgdGhlIG9iamVjdC4KICAgICBQb3NpdGlvbiBwYXJl
bnRGaXJzdFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1l
bnQoKSwgcGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOworICAgIGF1dG8gcmFu
Z2VJblBhcmVudCA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgcGFyZW50Rmlyc3RQ
b3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8gU2V0IHZhbHVlcyBmb3Igc3RhcnQg
b2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVuZ3RoLgogICAgIC8vIFRoZXNl
IHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3ZlciBzcGVjaWFsIGNhc2VzLgot
ICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5nZXQoKSwgdHJ1ZSkpOwotICAg
IFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgp
LCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgYXV0byBu
b2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0
LCBub2RlUmFuZ2VFbmQpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMg
dGhhdCBhcmUgb25seSByZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVz
LgogICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA4YzdiMWNmMzhiOWNiODhkYjc4YzY5
OGU2YTA2NzY2NDllMmMwZTc0Li43ZmI2MmY4ZTlkMGE3ZDNlY2FlNzAyYTQzOTU2MmZjMWM1YzAy
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjQwMSwx
MiArMjQwMSwxMiBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCZyYW5nZS0+ZW5kQ29udGFpbmVyKCkgIT0gc2NvcGUgJiYgIXJhbmdlLT5lbmRD
b250YWluZXIoKS5pc0Rlc2NlbmRhbnRPZihzY29wZSkpCiAgICAgICAgIHJldHVybiBOU01ha2VS
YW5nZShOU05vdEZvdW5kLCAwKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIGF1dG8gdGVzdFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsICZyYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLmdldCgpKTsKKyAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICB0
ZXN0UmFuZ2UtPnNldEVuZChyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQo
KSk7CiAgICAgQVNTRVJUKCZ0ZXN0UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwot
ICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgodGVzdFJhbmdl
LmdldCgpKTsKKyAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCmluZGV4IDlmYzMwNmNj
ZTBmYTNlOGE4NWM3Y2ZlZTBkYTEzNjM4ODUwZDg3MTUuLjM1NDVkNWQ1MTFmZjg2ODE5OGIxOTM1
MmEwOGQ0ZTFkMjU2YTMzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNzgsOCArNzgsOCBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxPYmpl
Y3RDYWxsYmFjaz4sCiBKU0dsb2JhbE9iamVjdFRhc2s6OkpTR2xvYmFsT2JqZWN0VGFzayhKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiAgICAg
OiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKHsgfSkKIHsKLSAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENhbGxiYWNrOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBtX3Rhc2sgPSBbY2FsbGJhY2td
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBKU0dsb2Jh
bE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAg
ICBtX3Rhc2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGYyZWIy
Zjc4YmU2YmVlODE1YmQwNWExZjhiMDBmZDU5MWEyODdhYWIuLmU3ZDkzN2VlYTc0YzE2YmY5ZDFh
ZjY4MzE0NGY1M2Q3NDVlOWUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlND
OjpNaWNyCiB7CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxi
YWNrPiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBX
VEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2tdKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKKyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2st
PmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IDM4MGFkNWJkMTUyMDEzZTg5NmI4
N2FiNDE2NTU1NzYyMmY3ZTE2Y2YuLmQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcw
YmI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SgogewogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlJiB0aGlzT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRy
PEpTTWljcm90YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAg
YXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2tdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBjYTRmODcxODljYzI5NTE5OTZjODlkMTM4YzM1NjZhMzFjMGNjMjQ5Li5kZjk0
NzZhMTZiYjNmYmM4YzQ4YzZlYzdkNjhiM2MyZWJkNjVhMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTg1LDEwICs4NSwx
MCBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KAogICAgICAgICBOUE9iamVjdCogbnBPYmplY3Qg
PSBbd2lkZ2V0VmlldyBjcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0XTsKICAgICAgICAgaWYg
KCFucE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBP
YmplY3QsIFdURk1vdmUocm9vdE9iamVjdCkpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUobnBPYmplY3QsIFdURk1vdmUocm9vdE9iamVj
dCkpOwogICAgICAgICAvLyAtY3JlYXRlUGx1Z2luU2NyaXB0YWJsZU9iamVjdCByZXR1cm5zIGEg
cmV0YWluZWQgTlBPYmplY3QuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHJlbGVhc2UgaXQu
CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBp
bnN0YW5jZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAyYjhkOWMwNTI4YmE4Y2ViOTg3M2NiNmYxMzM1OTM2MzViYzNmYWE1
Li40MjlkNWUzMGVkY2RkZDFhZWM1MTNkNzllYWUzODA1YTcwMmI2OWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTI4MjMsNyArMjgyMyw3IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEludFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0aCk7Ci0gICAgICAgICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZVNpemUpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTI5NTgsNyArMjk1OCw3IEBAIGNsYXNzIENsb25lRGVz
ZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpOwotICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9zaGFyZWRCdWZmZXJzLT5hdChpbmRleCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGdldEpTVmFsdWUoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxv
dyhyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0ODQsNyArMzQ4NCw3
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUp
OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjLCB2YWx1ZSk7CisgICAgYXV0byBzZXJp
YWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlYywgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBzY29wZS5leGNl
cHRpb24oKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLmgKaW5kZXggNWYyODVlOTFiOGRmNWQ1MTVlNTU2MGQ0NDk2NWRhNjQwNDE1NGViNC4uMWI3
ODk2YmUxOTA1MGU3M2I1M2ZkOTU3NTJmMjU1ZjgzYTljMzA0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBPYmpj
Q2xhc3M7CiAKIGNsYXNzIE9iamNJbnN0YW5jZSA6IHB1YmxpYyBJbnN0YW5jZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKKyAgICBzdGF0aWMgUmVmPE9iamNJbnN0YW5jZT4gY3Jl
YXRlKE9iamVjdFN0cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOwogICAgIHZpcnR1YWwg
fk9iamNJbnN0YW5jZSgpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlv
bihOU1N0cmluZyosIEpTR2xvYmFsT2JqZWN0KiBleGNlcHRpb25FbnZpcm9ubWVudCA9IDApOyAv
LyBBIG51bGwgZXhjZXB0aW9uRW52aXJvbm1lbnQgbWVhbnMgdGhlIGV4Y2VwdGlvbiBzaG91bGQg
cHJvcG9nYXRlIHRvIGFueSBleGVjdXRpb24gZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwYWVjMGNlZWFmOWM2YzJhNjJlMmIw
ODViYTBlN2JjNGZmOGVhMWNkLi4wNTFkYWNhZmZjNjZhZGY3MjQyY2M0NjAxY2QzMmE1YzExN2Zm
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTEwNCwxNiArMTA0LDE3IEBAIE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKGlkIGluc3RhbmNl
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogfQogCi1SZWZQdHI8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKK1JlZjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRl
KGlkIGluc3RhbmNlLCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gd3JhcHBlckNhY2hlKCkuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpaW5zdGFu
Y2UsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBSZWZQ
dHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShpbnN0
YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gd3JhcHBlci5nZXQoKTsKKyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRSZWYoKm5l
dyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIE9iamNJbnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA2Nzc4NDEyMDZmYmUxZTRlMzc4OWEwZjgwMmJkZDFjMWQzMzRiOGVhLi42Yzk1MDY2OTQxZDUz
ZTY1YWVlNWZkMTViY2YzMDBkYzQyMWFhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiB9CiAKLVJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxp
ZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50
Q29sb3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYg
Y29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCBsb29rIGF0IHZp
c2l0ZWQgaW5mb3JtYXRpb24sIHNvIHRoYXQgY29tcHV0ZWQgc3R5bGUgZG9lc24ndCBleHBvc2Ug
dGhhdC4KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKQEAgLTQyMTcsMTIgKzQyMTcsMTIgQEAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQ
cm9wZXJ0aWVzKCkKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3Bl
cnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoYW5kKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytpKQogICAgICAgICBsaXN0LT5hcHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVy
dGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUobGlzdCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lk
ZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQpAQCAt
NDI1NCwxMiArNDI1NCwxMiBAQCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYQogICAgIHJldHVybiBX
VEZNb3ZlKGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkKQEAgLTQzNTQsOCArNDM1NCw4IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpCiAgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Jb
M10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCiAgICAgYXV0byBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0
b3IpKSk7Ci0gICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGJkZjM0MzI3MmE2YWE0MWI3NmUzMWQyYTE5ZmY3MTE3NzIzNjdmNzMuLmFmZTIwNGJlMTY4
ODljYTcxZGM5NTQ1Y2I2NzE0OWI3NmFiZTk5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTg3LDE0ICs4NywxNCBAQCBjbGFz
cyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBzdHlsZWRSZW5k
ZXJlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWRqdXN0
U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdDsKKyAgICBSZWY8
Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hh
ZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlJiwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOworICAg
IFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJik7CiAgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAg
ICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAzM2E4NTg5ZTE3NjFiMGE4MWNk
OWM0NTQ2NWY1OWJlZDViMGUwYmE5Li4wOTUyN2YxYjEyNmM3Y2I1ZjJkZGRjYmRhNDIxYTI4NWUw
NWFkZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3
MCw5ICsxNzAsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKENTU0ZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQogICAgICAgICBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9p
bW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXIpOwotICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoKmJ1ZmZlciwgU3RyaW5nKCksIHdyYXBwaW5nKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3
cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBvciBub3QgZm9udEZvckZh
bWlseSgpIHJldHVybnMgbnVsbCBvciBub3QuIEx1Y2tpbHksIG5vbmUgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAxZWNjNWJhMzcwODc5MmZhNjM3ZjE2YjEyY2Q3M2Ux
MWVmYjA0YTYyLi44MmI2NWY4NzA4NDhmMTY3MjliNzJmZjI4YjNmNTdhMmFkZmVjZThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yNTksMTEgKzI1OSwxMSBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vz
c1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElFIGJlaGF2aW9yLgot
ICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVh
dGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291bnQgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcnVsZUNvdW50OyArK2kpCiAgICAgICAgIHJ1bGVMaXN0LT5ydWxlcygp
LmFwcGVuZChpdGVtKGkpKTsKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUocnVsZUxpc3QpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTI0YTUzNjI2ODkwYThhOTFkMTE3MzhjYTlhNThhNDUz
NzFiYjhiOC4uZTM0OTE3MTI4Nzg5MGI5ODc0YTcwNGFiN2I0MWJmNjljZGE1NWFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp1
bmljb2RlUmFuZ2UoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OwogICAgIGlmICghbV9iYWNraW5nLT5yYW5nZXMoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAi
VSswLTEwRkZGRiJfczsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1f
YmFja2luZy0+cmFuZ2VzKCkpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5n
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKICAgICByZXR1cm4gdmFsdWVz
LT5jc3NUZXh0KCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJl
U2V0dGluZ3MoKSBjb25zdAogICAgIG1fYmFja2luZy0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIGlmICghbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1f
YmFja2luZy0+ZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250
RmVhdHVyZVZhbHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1
ZSgpKSk7CiAgICAgcmV0dXJuIGxpc3QtPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAppbmRleCBmZGI4ZTNhZjc5YWM2MmI3ODk1NjBi
ODNjMzdlYjc0M2M4ZmU2MTJmLi5iZGVmZWM0YTdmYTdjNDBiMzY5YTBhM2QyZjBlM2QzNmI3Mjg3
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoU3R5bGVTaGVldENvbnRlbnRzKiBzCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKLSAg
ICBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAg
ICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBhdXRvIHN0eWxlU2hlZXRX
cmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKCpzdHlsZVNoZWV0KTsKKyAgICBtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyLmNvcHlSZWYoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5wdHIoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiYgc2hlZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzMzFlODM2M2ZhZTg3YWI0
NTNmYzFlN2Q1NTM5ZTA5ODA2ZmIxMzUyLi5iM2U0YjlhMGM1NGZiOTM2N2UwNDY3MTQyMjU5NDk3
Y2IyMTQxZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShHbHlw
aE9yaWVudAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hlcykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIGRhc2hl
cykKIHsKICAgICBpZiAoZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC02MCwxMCArNjAs
MTAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxp
c3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHUKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsK
IH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25z
dAorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZv
ckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUgcGFpbnRUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgY3VycmVudENvbG9yKSBjb25zdAogewog
ICAgIGlmIChwYWludFR5cGUgPj0gU1ZHUGFpbnRUeXBlOjpVUklOb25lKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodXJsLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19VUkkpKTsKICAgICAg
ICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpCiAgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpKTsKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFQKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VycmVudENv
bG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6OlVSSVJH
QkNvbG9yKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShjb2xvcikpOwotICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICByZXR1cm4gV1RG
TW92ZSh2YWx1ZXMpOwogICAgIH0KICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNzRm
YTNmNTM5OGZlNmZiZTQyNDZjZTZjMTBkMzhkNTlmOGUyYjNhNi4uNmEyMDM2MGE1NDYwMjZhMWNm
ZjgxMjdhZTgxNTFlYWYyMzMwMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTk4MCw4ICsxOTgwLDggQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAg
ICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAg
ICAgICAgVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAotICAgICAg
ICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKG9wZXJhdGlv
bik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChXVEZNb3ZlKG9wZXJhdGlvbikpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAwZGMxMDk4ZjU0Zjg0YmJmMmJhN2JiYTM1OTcxYjY4ZDVhOWRiYmVjLi4xZWVmZWI4YmQx
MGMyNTRiODI0YmMwNmNkNWI4YWVmMDY2MDIxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNw
cApAQCAtNDUsMTIgKzQ1LDEyIEBAIHN0cnVjdCBTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSA6IHB1
YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
UnVsZUJhc2UpID09IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVSdWxlQmFzZSksIFN0eWxlUnVsZUJh
c2Vfc2hvdWxkX3N0YXlfc21hbGwpOwogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6
Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAorUmVm
PENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKHBh
cmVudFNoZWV0LCBudWxscHRyKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1
bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxl
KSBjb25zdAogeyAKICAgICByZXR1cm4gY3JlYXRlQ1NTT01XcmFwcGVyKG51bGxwdHIsIHBhcmVu
dFJ1bGUpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1
bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICBDUkFTSCgpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4g
U3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNo
ZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAorUmVmPENTU1J1bGU+IFN0eWxlUnVsZUJh
c2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKICAgICBT
dHlsZVJ1bGVCYXNlJiBzZWxmID0gY29uc3RfY2FzdDxTdHlsZVJ1bGVCYXNlJj4oKnRoaXMpOwpA
QCAtMTY5LDExICsxNjksMTMgQEAgUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1MKICAgICBjYXNlIENo
YXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKICAgICB9CisgICAgQVNT
RVJUKHJ1bGUpOworCiAgICAgaWYgKHBhcmVudFJ1bGUpCiAgICAgICAgIHJ1bGUtPnNldFBhcmVu
dFJ1bGUocGFyZW50UnVsZSk7Ci0gICAgcmV0dXJuIHJ1bGU7CisgICAgcmV0dXJuIHJ1bGUucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAogdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDY4MDcxNDFmZWVhNzFiMDc2YWZhOWE0YTY5
YTNjZDI2ZmM1MzIyODguLjcxODA1MjMxMzg0NDAzMmY3NWM5YzZjZDFlNWFhOTNkYmVkZDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgU3R5bGVSdWxl
QmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKICAgICB9CiAKICAgICAvLyBGSVhN
RTogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBuZWVkIGZvciB0aGUgbnVsbCBwYXJlbnQgdmVyc2lv
bi4KLSAgICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0ID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gbnVsbHB0
cikgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NSdWxlKiBw
YXJlbnRSdWxlKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUnVsZUJhc2UoVHlwZSB0
eXBlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBmYWxzZSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ug
ewogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAgICAKLSAg
ICBSZWZQdHI8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3Jl
YXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDU1NSdWxlKiBwYXJl
bnRSdWxlKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDU7CiAgICAgLy8gVGhpcyBp
cyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCAwZmVlODRjZDdlYjI2
NzkyZTNkZjZkNDY3ZTkwYTYyZjFmZDBjYzU0Li44MTRkNDZiMDVhNjdjMTU5OWEyMzI4YzM4MzJm
ZTQwYWY1YjYzM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKICAgICBhY2N1bXVsYXRvck1hcCgpLnJl
bW92ZShtX3RhcmdldC5wdHIoKSk7CiB9CiAKLVJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWlu
ZXJOb2RlJiB0YXJnZXQpCitSZWY8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQogewogICAgIEFjY3VtdWxhdG9yTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYWNjdW11bGF0b3JN
YXAoKS5hZGQoJnRhcmdldCwgbnVsbHB0cik7CiAgICAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3I+IGFjY3VtdWxhdG9yOwpAQCAtNzAsNyArNzAsOCBAQCBSZWZQdHI8Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0
T3JDcmVhdGUoQwogICAgICAgICBhY2N1bXVsYXRvciA9IGFkb3B0UmVmKG5ldyBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yKHRhcmdldCwgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCkpKTsKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGFjY3VtdWxhdG9yLmdldCgpOwogICAgIH0KLSAgICByZXR1cm4gYWNj
dW11bGF0b3I7CisgICAgQVNTRVJUKGFjY3VtdWxhdG9yKTsKKyAgICByZXR1cm4gYWNjdW11bGF0
b3IucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogaW5saW5lIGJvb2wgQ2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcjo6aXNBZGRlZE5vZGVJbk9yZGVyKE5vZGUmIGNoaWxkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKaW5kZXggOWI5NDM3MTZkYmM4NGM5M2Iy
NmYyOTMxYmVhODNlN2QxMTNhZWE1OC4uMjk2Njc2Nzc2OGYwZDcxNDc0MmUzNmJjZTViNjEwODY5
NzdmOTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOwog
Ly8gQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBk
aXJlY3RseTsgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBpcyB0aGUgcHVibGljIGludGVyZmFjZS4K
IGNsYXNzIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
Jik7CisgICAgc3RhdGljIFJlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBnZXRPckNy
ZWF0ZShDb250YWluZXJOb2RlJik7CiAgICAgfkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3Io
KTsKIAogICAgIHZvaWQgY2hpbGRBZGRlZChOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWM1NmYxMzY5MzI1OGI3MmRm
Y2JkYTU0NmJiYzdjNmY4OWEzMDIuLjViMDg2MzBjMzMwMGI5YTc5MDJmYTdiY2JlMjJkNmUxYzJj
NjZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcihSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBB
U1NFUlQoIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfHwgIW5vZGUuZG9jdW1lbnQoKS52aWV3KCkt
Pm5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGlz
IHNvIHRoYXQgd2UgZG9uJ3QgdXNlIFJhbmdlIChiZWNhdXNlIHdlIG9ubHkgaGF2ZSBvbmUgTm9k
ZSksIGJ1dCBzdGlsbCBzaGFyZSBjb2RlIHdpdGggYWJzb2x1dGVUZXh0UXVhZHMoKS4KLSAgICBS
ZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCks
ICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7
Ci0gICAgaWYgKCFtYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWFya2Vy
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFy
dE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZU1hcmtlclF1YWRzOwogICAgIG1hcmtlclJhbmdlLT5hYnNvbHV0ZVRleHRR
dWFkcyhhYnNvbHV0ZU1hcmtlclF1YWRzLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCAxMDlmNzI0YzU4MzE2MGE3MThjYjU4NzRk
MGVmZjg0ZWFhNGZmZmJkLi5hOWQ2MjhjNjhkMjg0Yjc3MDM1NWRjNGUwYTZkMWMyNzU0MDBlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAt
MTcyLDEyICsxNzIsMTIgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVN0eWxlKGRvY3VtZW50LnVybCgpLCBtX3N0YXJ0VGV4
dFBvc2l0aW9uLm1fbGluZSwgdGV4dCwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKKyAg
ICBhdXRvIG1lZGlhUXVlcmllcyA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwogCiAgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iX3MsIHRydWUpOwogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
cHJpbnRFdmFsKCJwcmludCJfcywgdHJ1ZSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIklubGlu
ZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQgZXZhbHVhdGluZyBxdWVyaWVzIik7Ci0gICAg
aWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpICYmICFwcmludEV2YWwuZXZh
bHVhdGUoKm1lZGlhUXVlcmllcykpCisgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWx1YXRlKG1lZGlh
UXVlcmllcy5nZXQoKSkgJiYgIXByaW50RXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdHlsZVNjb3BlKQpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRTaGVl
dCA9IGlubGluZVN0eWxlU2hlZXRDYWNoZSgpLmdldCgqY2FjaGVLZXkpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoY2FjaGVkU2hlZXQtPmlzQ2FjaGVhYmxlKCkpOwogICAgICAgICAgICAgbV9zaGVl
dCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZSgqY2FjaGVkU2hlZXQsIGVsZW1lbnQsIG1f
c3RhcnRUZXh0UG9zaXRpb24pOwotICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVz
KG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhXVEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgICAgICAgICAgaWYgKCFl
bGVtZW50LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoZWxlbWVudC50aXRsZSgpKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYXV0byBjb250ZW50cyA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKFN0
cmluZygpLCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSk7CiAKICAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGNvbnRlbnRzLmdldCgpLCBlbGVtZW50LCBt
X3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVkaWFR
dWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhX
VEZNb3ZlKG1lZGlhUXVlcmllcykpOwogICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgp
KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9pbnRlckV2ZW50LmgKaW5kZXggY2YwOTE0MzEyOGM5ZTJiMTM5MmVhOWZjOTdkYzhlMDA1
ZGFiNGZmYS4uZGYyYWU4YmJkODE5MzJiYzQ2YzM2NmMwN2NkZTdiODA5OGZkMmE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb2ludGVyRXZlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBQb2ludGVyRXZl
bnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CiAgICAgICAgIGJvb2wgaXNQcmltYXJ5IHsg
ZmFsc2UgfTsKICAgICB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxQb2ludGVyRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKKyAgICBzdGF0
aWMgUmVmPFBvaW50ZXJFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5p
dCYmIGluaXRpYWxpemVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9p
bnRlckV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlhbGl6ZXIpKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBjZjhlMzkzYjg2M2Y3ZTQ5OTNj
ZDIwYTIzZjlhZTg1NTI1MzllN2NhLi4wZGU4NDY5MDUyYjVjYjMxMGE5YTI2ZWRkNDNlODM4YjA1
MzEzMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBlbnVtIGNsYXNzIFVzZXJHZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3Ro
ZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJH
ZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVU
eXBlIGdlc3R1cmVUeXBlKQorICAgIHN0YXRpYyBSZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRl
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJHZXN0dXJlVG9r
ZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CiAgICAgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgflVzZXJHZXN0dXJlVG9rZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDU4MmJlMGRlNTkzMmM1
Y2JlNDljNTFmMGM4MWI4ZGM5ODA3MTdkMWUuLjk4YWJjNzM2ZDc1MDY4NDNmMzIxYzBkNmM0MjQ5
MDljODA3Y2E4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNvbnN0IFJhbmdl
JiByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIGNv
bnRhaW5pbmcgcGFyYWdyYXBoLiBXZSB1c2UgY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3Jh
cGgKICAgICAvLyB0byBzdG9yZSB0aGlzIHZhbHVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBv
ZmZzZXQsIHdlIG5lZWQgdG8gZmlyc3QgY3JlYXRlIGEgcmFuZ2UKICAgICAvLyB3aGljaCBzcGFu
cyBmcm9tIHRoZSBzdGFydCBvZiBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHJh
bmdlV2l0aEFsdGVybmF0aXZlLgotICAgIFJlZlB0cjxSYW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zm
c2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRh
aW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VD
b250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICBSZWY8UmFuZ2U+IGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCks
IHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSk7CiAK
ICAgICBQb3NpdGlvbiBzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKICAgICBpZiAoIXN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVy
bmF0aXZlLmNvbnRhaW5lck5vZGUoKSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRha2Ugbm90ZSBvZiB0aGUgbG9j
YXRpb24gb2YgYXV0b2NvcnJlY3Rpb24gc28gdGhhdCB3ZSBjYW4gYWRkIG1hcmtlciBhZnRlciB0
aGUgcmVwbGFjZW1lbnQgdG9vayBwbGFjZS4KLSAgICBpbnQgY29ycmVjdGlvblN0YXJ0T2Zmc2V0
SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoQXNSYW5nZS5nZXQoKSk7CisgICAgaW50IGNvcnJlY3Rpb25TdGFydE9m
ZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UucHRyKCkpOwogCiAgICAgLy8gQ2xvbmUgdGhlIHJh
bmdlLCBzaW5jZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG1heSB3YW50IHRvIGtlZXAgdGhl
IG9yaWdpbmFsIHJhbmdlIGFyb3VuZC4KICAgICBhdXRvIHJhbmdlV2l0aEFsdGVybmF0aXZlID0g
cmFuZ2UuY2xvbmVSYW5nZSgpOwpAQCAtMjY2LDEyICsyNjYsMTIgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3Qg
VmlzaWJsZVMKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
IAogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpOwotICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwg
T3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0g
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENo
ZWNraW5nRXhlbXB0aW9uKTsKKyAgICBtYXJrZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UucHRyKCks
IE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIG1hcmtl
cnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwor
ICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxD
aGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGltZXJGaXJlZCgpCkBAIC00NDMsMTIgKzQ0MywxMCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
bgogewogICAgIGlmICghY29tbWFuZC0+d2FzQ3JlYXRlTGlua0NvbW1hbmQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFu
ZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAg
cmV0dXJuOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgY29tbWFuZC0+c3RhcnRp
bmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJr
ZXJzID0gbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7Ci0gICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRNYXJr
ZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCkBAIC01MjYsMTUgKzUyNCwxNSBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQQogICAgIGlm
IChlbmRPZlNlbGVjdGlvbiA9PSBwcmVjZWRpbmdDaGFyYWN0ZXJQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRp
b24sIGVuZE9mU2VsZWN0aW9uKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNl
ZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOworICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCkpOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpIHx8ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZShzdHJpbmdbc3RyaW5nLmxlbmd0
aCgpIC0gMV0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIHRoaXMgd2hpdGVzcGFj
ZSB0byBpbmRpY2F0ZSB3ZSBoYXZlIGRlbGV0ZWQgYW4gYXV0b2NvcnJlY3Rpb24gZm9sbG93aW5n
IHRoaXMKICAgICAvLyB3aGl0ZXNwYWNlLiBTbyBpZiB0aGUgdXNlciB0eXBlcyB0aGUgc2FtZSBv
cmlnaW5hbCB3b3JkIGFnYWluIGF0IHRoaXMgcG9zaXRpb24sIHdlCiAgICAgLy8gd29uJ3QgYXV0
b2NvcnJlY3QgaXQgYWdhaW4uCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRk
TWFya2VyKHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVs
ZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29y
cmVjdGlvbik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkuYWRkTWFya2VyKHBy
ZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9j
b3JyZWN0aW9uLCBtX29yaWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7
CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRl
eHRUb0JlUmVwbGFjZWRCeVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCwg
UmFuZ2UmIHJhbmdlV2l0aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBs
YWNlZCkKQEAgLTU3NSwyMSArNTczLDE5IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAg
aWYgKCFzaG91bGRTdGFydFRpbWVyRm9yKG1hcmtlciwgZW5kT2ZXb3JkUG9zaXRpb24ub2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTm9kZSogbm9k
ZSA9IGVuZE9mV29yZFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHdvcmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7Ci0gICAgaWYgKCF3
b3JkUmFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgY3VycmVudFdvcmQg
PSBwbGFpblRleHQod29yZFJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHdvcmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci5lbmRPZmZzZXQoKSk7CisgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0KHdvcmRSYW5nZS5wdHIoKSk7CiAgICAgaWYgKCFjdXJyZW50V29yZC5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fb3JpZ2luYWxUZXh0ID0gY3VycmVudFdvcmQ7
CiAgICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6
U3BlbGxpbmc6Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7Cisg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAg
ICAgIG1fZGV0YWlscyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50OgotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXIuZGVzY3JpcHRpb24oKTsKICAgICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVy
KEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAgICBicmVhazsKQEAgLTU5OSw3
ICs1OTUsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtl
ckF0RW5kT2ZXb3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQgIT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3Zl
KHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0YWlscyA9IG1hcmtlckRhdGEuY29udGV4dDsKICAg
ICAgICAgc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggYzNkODE0YWQxZDNmZGE2YWY4Njk2ODhiZmMyY2ExYjc5
Yzk1YzZhMy4uN2EzYTE2MDBmYmE5MzdkYWQ3NDI2Zjc0YjYwMzY5NzFmYzhjZTI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTI1MCwxMCAr
MjUwLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlKQogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChl
bmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1dG8gZW5k
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2Nv
cGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
YXJhZ3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3Rh
cnQpLm5leHQoKSk7CkBAIC0yODQsMTAgKzI4NCwxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICAgICAgbmV4dFBhcmFn
cmFwaFN0YXJ0ID0gZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQpLm5leHQoKTsKICAgICB9
CiAgICAgCi0gICAgc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOwotICAgIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOwotICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQotICAgICAgICB1cGRhdGVT
dGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOworICAgIHsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Cisg
ICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGlmIChzdGFydFJhbmdl
ICYmIGVuZFJhbmdlKQorICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVN0eWxlT3JDcmVhdGVFbXB0eShj
b25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTA1MSw5ICsxMDUzLDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
KnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgYXV0
byBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAgICAgICBpZiAo
aXM8SFRNTEVsZW1lbnQ+KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgLy8g
VGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAg
ICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhZ2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRz
IHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qgd3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBA
IC0xMDcyLDcgKzEwNzQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAg
Ly8gQXBwbHkgc3R5bGUgdG8gYWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhl
aXIgc2libGluZ3MgYnV0IE5PVCB0byB0YXJnZXROb2RlCiAgICAgICAgICAgICAvLyBCdXQgaWYg
d2UndmUgcmVtb3ZlZCBzdHlsZWRFbGVtZW50IHRoZW4gYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4K
ICAgICAgICAgICAgIGlmICgmY2hpbGQgIT0gdGFyZ2V0Tm9kZSB8fCBzdHlsZWRFbGVtZW50KQot
ICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKGNoaWxkLCBzdHlsZVRv
UHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgICAgICAvLyBXZSBm
b3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29udGFpbnMgdGFyZ2V0Tm9k
ZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2RlLCBzdG9wIHRoZSBvdXRl
ciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQgaW5uZXIgbG9vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBh
YzFmMjcxMGRjNzExODQ0YjFiMzEzN2E5MzQyNjRjYjVjMWRiMDgzLi4zMGIzNzJmYjU0ZWFlOWI5
NWRmOGNlN2Y2NDVhNGNlM2ViMzRlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzgyLDggKzM4Miw3IEBAIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKICAgICBpZiAoIWZpcnN0UmFuZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBTdGF0
aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpmaXJzdFJhbmdlKSB9OwogfQogCiBWZWN0b3I8UmVm
UHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkgY29uc3QKQEAgLTc2OCwxNSArNzY3LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlUHJlc2VydmluZ01hcmtlcnMoVGV4dCYgbm9kZSwgdW5z
aWduCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJDb250cm9sbGVyID0gZG9j
dW1lbnQoKS5tYXJrZXJzKCk7CiAgICAgYXV0byBtYXJrZXJzID0gY29weU1hcmtlcnMobWFya2Vy
Q29udHJvbGxlci5tYXJrZXJzSW5SYW5nZShSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksICZub2Rl
LCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyBjb3VudCksIERvY3VtZW50TWFya2VyOjphbGxNYXJr
ZXJzKCkpKTsKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCByZXBs
YWNlbWVudFRleHQpOwotICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOworICAgIGF1dG8gbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksICZub2RlLCBvZmZzZXQsICZub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRleHQubGVuZ3Ro
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgbWFya2VyIDogbWFya2VycykgewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmIChtYXJrZXIuaXNEaWN0YXRpb24oKSkgewotICAg
ICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtl
ci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1h
cmtlci5tZXRhZGF0YSgpKTsKKyAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLnB0cigpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7
CisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLnB0cigpLCBtYXJr
ZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSk7CiAgICAgfQogfQogCkBAIC0xNDE0LDE0
ICsxNDEzLDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgp
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChlbmRJblBhcmFncmFwaCkg
ewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAg
ICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwg
dmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
KyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5k
UmFuZ2UucHRyKCksIHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTQzNywxNCArMTQzNiwxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIHN0YXJ0
IGFuZCBlbmQgY2FuJ3QgYmUgdXNlZCBkaXJlY3RseSB0byBjcmVhdGUgYSBSYW5nZTsgdGhleSBh
cmUgImVkaXRpbmcgcG9zaXRpb25zIgogICAgIFBvc2l0aW9uIHN0YXJ0UmFuZ2VDb21wbGlhbnQg
PSBzdGFydC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmRSYW5n
ZUNvbXBsaWFudCA9IGVuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2ll
bnQgd2F5IHRvIHByZXNlcnZlIHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92
ZS4gSXQKICAgICAvLyBzaG91bGRuJ3QgbWF0dGVyIHRob3VnaCwgc2luY2UgbW92ZWQgcGFyYWdy
YXBocyB3aWxsIHVzdWFsbHkgYmUgcXVpdGUgc21hbGwuCiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50OwogICAgIC8vIFRoaXMgdXNlZCB0byB1c2UgYSB0ZXJuYXJ5IGZvciBp
bml0aWFsaXphdGlvbiwgYnV0IHRoYXQgY29uZnVzZWQgc29tZSB2ZXJzaW9ucyBvZiBHQ0MsIHNl
ZSBidWcgMzc5MTIKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSAhPSBlbmRPZlBhcmFn
cmFwaFRvTW92ZSkKLSAgICAgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
ZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoKnJhbmdlLCBu
dWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5l
czo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKHJhbmdlLmdldCgpLCBudWxscHRyLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6WWVzKSwgZW1wdHlTdHJpbmcoKSk7CiAKICAgICAvLyBBIG5v
bi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdlIGNvcHkgYW5kIG1vdmUg
aXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3JlIGdpdmVuIGFuIGVt
cHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2ZSBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggMWJjOWI0MGU2ZmU5Y2E3OTdjYmY2N2U3NmQ2ZTY2NTVlYjA5NzVhNi4uYTZkMTc2MGMyYjBj
Zjk0Zjk4MjEzM2UyMTJkZTQ1YzE5ZGRmNTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgbWVyZ2VEZXN0aW5hdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtZXJnZURlc3Rp
bmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgIGF1
dG8gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVz
dGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVy
Z2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKKyAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFm
dGVyRGVsZXRlKHJhbmdlLnB0cigpLCByYW5nZVRvQmVSZXBsYWNlZC5wdHIoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBtb3ZlUGFyYWdyYXBocyB3aWxsIGluc2VydCBwbGFjZWhv
bGRlcnMgaWYgaXQgcmVtb3ZlcyBibG9ja3MgdGhhdCB3b3VsZCByZXF1aXJlIHRoZWlyIHVzZSwg
ZG9uJ3QgbGV0IGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCBjY2E0ZWRl
MWJhNDRjMjMzYTYzODE4NzdlYWNhNTgxNTg3NGVlZTVjLi44NmQwMjFkMThhNDc5MTNlZWEwYjc2
NjQ4ZWY5ZmY5Y2YwNDJkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTEx
MTcsOSArMTExNyw5IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVz
aW5nQ2hhcmFjdGVySXRlcmF0b3IoTm9kZSYgbm9kZSwgaW50IGluCiAgICAgaWYgKGluZGV4IDw9
IDApCiAgICAgICAgIHJldHVybiB7IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmbm9kZSks
IERPV05TVFJFQU0gfTsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUuZG9jdW1lbnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5k
b2N1bWVudCgpKTsKICAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpOwotICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KCpyYW5nZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQocmFu
Z2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4geyBpdC5h
dEVuZCgpID8gcmFuZ2UtPmVuZFBvc2l0aW9uKCkgOiBpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigp
LCBVUFNUUkVBTSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmlu
ZGV4IDY0MjE2Yzk4NjA2NGI2N2VlMzk5NWUwMDEzODlkMWM4YWRiNDczOGEuLmIzOGMxNTA5ZWU5
NzliZTllNDBmZTNiYWQyOTBkNDc0MjY2MDAwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlJiBub2RlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyZW50U3R5bGUg
PSBjb3B5UHJvcGVydGllc0Zyb21Db21wdXRlZFN0eWxlKG5vZGUucGFyZW50Tm9kZSgpLCBFZGl0
aW5nUHJvcGVydGllc0luRWZmZWN0KTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBub2RlU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVj
dCk7CisgICAgYXV0byBub2RlU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgmbm9kZSwgRWRp
dGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50
UHJvcGVydGllcygqcGFyZW50U3R5bGUpOwogCiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBub2RlU3R5bGUtPnN0eWxlKCk7CkBAIC04MjgsOCArODI4LDggQEAgYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
JiBlbGVtZW50LCBSZWYKICAgICBib29sIHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2ggPSBzdHJp
a2VUaHJvdWdoQ2hhbmdlKCkgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OlJlbW92ZTsKICAgICBp
ZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lIHx8IHNob3VsZFJlbW92ZVN0cmlrZVRocm91Z2gpIHsK
ICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCA9IHRleHREZWNvcmF0
aW9uVmFsdWVMaXN0KCppbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IG5ld1ZhbHVlTGlzdCA9IHZhbHVlTGlzdC0+Y29weSgpOwotICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgYXV0byBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKKyAgICAgICAgICAgIGF1dG8gZXh0cmFjdGVkVmFsdWVMaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogCiAgICAgICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHVuZGVybGluZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRSZW1vdmVVbmRlcmxpbmUgJiYgdmFsdWVMaXN0LT5oYXNWYWx1ZSh1bmRlcmxpbmUucHRy
KCkpKSB7CkBAIC04NTAsNyArODUwLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBSZWYKICAgICAg
ICAgICAgIGlmIChleHRyYWN0ZWRWYWx1ZUxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uZmxpY3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVMaXN0LT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIG5ld1ZhbHVlTGlzdCk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBXVEZNb3ZlKG5ld1ZhbHVlTGlzdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNl
cnZlV3JpdAogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBz
dHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJl
IHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2
YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwg
RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0byBlZGl0aW5nU3R5bGVBdFBvc2l0
aW9uID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5F
ZmZlY3QpOwogICAgIFN0eWxlUHJvcGVydGllcyogc3R5bGVBdFBvc2l0aW9uID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbi0+bV9tdXRhYmxlU3R5bGUuZ2V0KCk7CiAKICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHVuaWNvZGVCaWRpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0RWRpdGluZ1Byb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXIKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChTdHlsZWRFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSBt
b2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCiB7Ci0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgp
OworICAgIGF1dG8gc3R5bGVGcm9tUnVsZXMgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
IHN0eWxlRnJvbVJ1bGVzLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihlbGVt
ZW50KTsKIAogICAgIGlmIChlbGVtZW50LmlubGluZVN0eWxlKCkpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRp
b24oU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlm
IGl0J3MgYSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2
YWx1ZS4gIAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6
IHZpc2libGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMg
bGlrZSB0aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFz
dGUgZmlkZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBm
cm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIGNvbXB1dGVkU3R5bGUoJmVsZW1lbnQpOwog
CiAgICAgewpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlQW5k
T3ZlcnJpZGVPbkNvbmZsaWN0KCpmcm9tQ29tcHV0ZWRTdHlsZSk7CisgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogc3R5bGVUb1JlbW92ZVByb3BlcnRpZXNGcm9tLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1v
dmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgTm9kZSoK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0
eWxlLCAqc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKTsKIAogICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBw
cmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVycmlkZGVuIGJ5IG1hdGNoZWQgcnVsZXMuCi0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gY29tcHV0
ZWRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdQcm9wZXJ0aWVz
SW5FZmZlY3QpOwogICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgewogICAg
ICAgICBpZiAoIWNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgICAgIGNvbXB1dGVkU3R5
bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdGF0aWMgYm9v
bCBmb250V2VpZ2h0SXNCb2xkKFQmIHN0eWxlKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSkK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiByZXN1bHQgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CisgICAgYXV0byByZXN1bHQgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSgmc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgcmVz
dWx0LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhiYXNlU3R5bGUpOwogICAgIEFTU0VSVChy
ZXN1bHQtPnN0eWxlKCkpOwogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUgPSAqcmVzdWx0LT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGU1YWU3MTMzNmZiMWZhZGYxZjdlNjllOGJlY2RmYzNjOTdkOGIzZDMuLjU5YTRiODFhYTE3MTc2
MTNhMmE0Njc3NThiZmI5MGU1MTIwZmJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTE3OTUsOSArMTc5NSw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/ICJsdHIiIDog
ZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0ID8gInJ0bCIgOiAiaW5o
ZXJpdCIsIGZhbHNlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0Rp
cmVjdGlvbik7CiB9CiAKIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTIwMjMsOCArMjAyMyw4IEBAIHZvaWQg
RWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjpt
aW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0YXJ0LCBleHRlbnRPZmZzZXQpOwogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwgYmFzZU5v
ZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKLSAgICAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKKyAgICAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2Rl
LCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CisgICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5wdHIoKSwgRE9XTlNUUkVBTSwgRnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDU2Y2E1YmYwYTdmODkz
NDBlYzdiMjQyZjAxNWIwZTU3OGNjMzlkNTcuLjlmZGFjMWQ2MTE5NTM4YWNlM2Q0YmY4YzBlZTMx
NzlmNDdjOGJkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApA
QCAtMTQyLDE2ICsxNDIsMTYgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3QKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9u
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9u
KHN0eWxlLnB0cigpLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01ODIsMjcgKzU4MiwyNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1ZhbHVlTHRyKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxl
LmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0
b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdy
aXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggNmY1MzIwOGZlNmMyMTQ4YTAy
NTYzN2I2MTBlYjMyYWRjNmYwMTg3Mi4uZTQzNmM3ZmRlMjFkYmIyMDM0YjU5YzViOTUyODlmYTNj
ZmVkNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5k
LmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRS
YW5nZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsCiAgICAgUmVm
UHRyPE5vZGU+IG91dGVyQmxvY2sgPSAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBub2RlVG9T
cGxpdFRvKSA/IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgOiBzcGxpdFRyZWVUb05vZGUoKnN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCksICpub2RlVG9TcGxpdFRvKTsKICAgICBSZWZQdHI8Tm9kZT4gbm9k
ZUFmdGVySW5zZXJ0aW9uUG9zaXRpb24gPSBvdXRlckJsb2NrOwogCi0gICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5k
T2ZTZWxlY3Rpb24pOwogICAgIEVsZW1lbnQqIHJlZk5vZGUgPSBlbmNsb3NpbmdCbG9ja0Zsb3dF
bGVtZW50KGVuZCk7CiAgICAgRWxlbWVudCogcm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKICAgICAvLyBSb290IGlzIG51bGwgZm9yIGVsZW1lbnRzIHdpdGggY29udGVudGVk
aXRhYmxlPWZhbHNlLgogICAgIGlmICghcm9vdCB8fCAhcmVmTm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhyZWZOb2RlLT50YWdRTmFtZSgpKSAm
JiBzdGFydCA9PSBzdGFydE9mQmxvY2soc3RhcnQpCi0gICAgICAgICYmIChlbmQgPT0gZW5kT2ZC
bG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oKnJlZk5vZGUsICpyYW5n
ZSkpCisgICAgICAgICYmIChlbmQgPT0gZW5kT2ZCbG9jayhlbmQpIHx8IGlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4oKnJlZk5vZGUsIHJhbmdlLmdldCgpKSkKICAgICAgICAgJiYgcmVmTm9k
ZSAhPSByb290ICYmICFyb290LT5pc0Rlc2NlbmRhbnRPZigqcmVmTm9kZSkpIHsKICAgICAgICAg
Ly8gQWxyZWFkeSBpbiBhIGJsb2NrIGVsZW1lbnQgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSBjdXJy
ZW50IHBhcmFncmFwaAogICAgICAgICBpZiAocmVmTm9kZS0+aGFzVGFnTmFtZSh0YWdOYW1lKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5k
ZXggYzE5Yjc3NGFkNmIzMDNiMzk1MGM2YTExNTc0MDVmOTQ4YmFjY2FjMi4uNGVjMGI0ZTU1YzNl
YWY2NDA4ZjI1MDU5OTZjYTFkY2RhYTVmMjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBSZW1v
dmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUg
Zm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRo
ZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9v
dCA9IGVuZGluZ1NlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsK
KyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHJvb3QpOwogCiAg
ICAgLy8gV2Ugd2FudCB0byByZW1vdmUgZXZlcnl0aGluZyBidXQgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFjY2VzcyBzdHlsZSgpLgogICAgIGRl
ZmF1bHRTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOworICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZGVmYXVsdFN0eWxlLnB0cigpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5k
LCBlZGl0aW5nQWN0aW9uKCkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUwMmJjMDRkMzUz
YjI4M2UxODkyZWRlMjQ4YzhiZTA2NjVkZjcwOTEuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIx
NGQzM2RjZThkODgwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRy
YW5zZmVyKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U3Rh
dGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5nZVRv
QmVSZXBsYWNlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICByZXR1cm4geyAxLCBT
dGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCptX3JhbmdlVG9CZVJlcGxhY2VkKSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDQ4MDRlOTBhOGUyMjljYjk4NGQ2ZjRj
NzY1MWMyZjkxOGI1ZWM1NjUuLmY4MjM5ZDJhYTcxZmZjMWY3MTUxNzZlYTBmNTM2NmEyNjBkOTdm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKICAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5v
ZGUuZ2V0KCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUg
PSBlbGVtZW50LT5pbmxpbmVTdHlsZSgpOwotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBu
ZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAg
ICAgYXV0byBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxl
KTsKICAgICAgICAgaWYgKGlubGluZVN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwpAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxl
U3BhbnNCZWZvcmVJbnNlcnRpb24oUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0g
dG9wTm9kZTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpKTsKKyAgICBhdXRvIHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFN0cmluZyBz
dHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5hc1RleHQoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHN0cmluZyBjb21wYXJpc29uIGlzIGEgbmFpdmUgd2F5IG9mIGNvbXBh
cmluZyB0d28gc3R5bGVzLgpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
ICAgICBpZiAoIXdyYXBwaW5nU3R5bGVTcGFuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5
bGVTcGFuLT5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUod3JhcHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOwogICAgIENvbnRhaW5lck5v
ZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwogCiAgICAgLy8g
SWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9j
a3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGMxMDlkYjA0YjdlNzBkODBmMWE0OGY4NThkZjRkYmMzNmFmMzc4M2IuLjdkYjNmOWI0
NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIFN0cmluZyBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgp
IGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4g
cmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVjdGVk
KTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7IDEsIFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVDb3JyZWN0ZWQpIH07CiB9CiAKIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJh
bnNmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCmluZGV4IDAwYTI1N2YwN2M2NjcxYjc2ODNhYjNlNDcyZjFhOWYzNTdhZDc3M2EuLmU4
OWU4NzBhNTZiNzA5NDZjN2FkN2ViYmMxY2U5NTE0MGM1MjBlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKHBhcmFn
cmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpKSB7CiAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUgZW5k
IG9mIHRoZSBvcmlnaW5hbCBzZWFyY2ggcmFuZ2UgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBo
LAogICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2lsbCB3YW50IHRvIGlnbm9yZSByZXN1bHRzIGlu
IHRoaXMgYXJlYS4KLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kT2Zmc2V0QXNSYW5nZSA9
IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQo
KSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSk7Ci0gICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kT2Zmc2V0
QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCku
ZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5k
UG9zaXRpb24oKSk7CisgICAgICAgICAgICBjdXJyZW50RW5kT2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChlbmRPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgIGxhc3RJ
dGVyYXRpb24gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50U3RhcnRPZmZz
ZXQgPCBjdXJyZW50RW5kT2Zmc2V0KSB7CkBAIC0zOTcsOCArMzk3LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHko
KSAmJiAoIWNoZWNrR3JhbW1hciB8fCBiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSB8fCBzcGVs
bGluZ0xvY2F0aW9uIDw9IGdyYW1tYXJEZXRhaWxMb2NhdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgaW50IHNwZWxsaW5nT2Zmc2V0ID0gc3BlbGxpbmdMb2NhdGlvbiAtIGN1cnJlbnRTdGFy
dE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1Jhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpj
cmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0SXNTcGVsbGluZyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIG91dEZpcnN0Rm91bmRPZmZzZXQgPSBzcGVsbGluZ09mZnNldDsKQEAgLTQw
OCw4ICs0MDgsOCBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVs
bGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlm
IChjaGVja0dyYW1tYXIgJiYgIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZ3JhbW1hclBocmFzZUxvY2F0
aW9uIC0gY3VycmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0
SXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFy
UGhyYXNlT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgb3V0
SXNTcGVsbGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gZ3JhbW1hclBocmFzZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IDc5YjQzY2ViMjgzNjdmODg1ZWFiNWVkY2E5OGEyMmNlNWEyYThkNjEu
LjY3MDYzZWUxNTYyYWUzMWYyMjAyNWIzNTg1MTFmZGY0ZDk5OGE1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
aW5nQ29tbWFuZD4gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRU
ZXh0LCBuZXdUZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOwotICAgIGFwcGx5VGV4dElu
c2VydGlvbkNvbW1hbmQoZnJhbWUuZ2V0KCksICpjbWQsIHNlbGVjdGlvbkZvckluc2VydGlvbiwg
Y3VycmVudFNlbGVjdGlvbik7CisgICAgYXV0byBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQsIEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7
CisgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLmdldCgpLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCiB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucykKQEAgLTQ5OSw4ICs0OTksNyBAQCBib29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0RwogICAgIGlm
ICghcmFuZ2UgfHwgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQogICAgICAgICByZXR1
cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6dGFyZ2V0UmFuZ2VzRm9yQmluZGluZ3MoKSk7CiAKLSAgICBSZWZQdHI8U3RhdGlj
UmFuZ2U+IHN0YXRpY1JhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2Up
OwotICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsg
MSwgc3RhdGljUmFuZ2UgfSk7CisgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgeyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpyYW5nZSkg
fSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggMzk1MDM2MWJiYWQ1OTE0ZGRkZDMyMzQzYmE3ODhi
MzAxNzQ3OWM0MS4uN2RiNzJjOGYwN2ZjODAxNDFmYWVjZTUwZDcxOWM5NjJjZGZhYzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMTg5MywxMCArMTg5Mywx
MCBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dnAsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgbwogICAgIGJvb2wgdGhpc0lzU3RhcnQgPSAodnAg
PCBvdGhlcik7CiAKICAgICAvLyBTdGFydCBtdXN0IGNvbWUgZmlyc3QgaW4gdGhlIFJhbmdlIGNv
bnN0cnVjdG9yLgotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PmRvY3VtZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gdnAgOiBvdGhlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHRoaXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOwotICAgIGludCBkaXN0YW5jZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworICAgIGludCBkaXN0YW5j
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCkpOwogCiAgICAgcmV0dXJu
ICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDVjY2Y0NDYyNDA5NjgxM2U4Njky
N2ViMzAzOTMyNDg5ZmYwMjliOTEuLjVkZTcxNmZhMWFjNGE5YjY5Yzg1ZjA5NjZiYTI5M2JmYWJi
MjZiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKLSAgICBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24oJm1fZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKaW5kZXggNzVmNTRhMTMxMDRhMzRm
MzhkMWQ2ODRhMzdmMmVhODk2MzQyMWQxOC4uMmM0YjYwZDAxNDMzMTExNWNiOTEyYzcwZWQ5ZmNj
NWIyNTM0ZjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBEaWN0YXRpb25Db21tYW5k
SU9TOjpkb0FwcGx5KCkKICAgICBFbGVtZW50KiByb290ID0gYWZ0ZXJSZXN1bHRzLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNp
bmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFk
IG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9F
bmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgp
LCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3Vs
dHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKICAgICBpbnQgc3RhcnRJbmRleCA9
IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGYzN2ZkZTdmZjQ1ZGJi
NTVhNTU2MDI5ODJlZWYyYzg5Y2M0ZTRjNzcuLjIzMGY1ZTNiNDE3MzJiMWU2Mjg0NTA5ZDE0NDU1
ODdkYTNkZjI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAvLyBJZiB0aGUgdGV4
dCBoYXMgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsIGZsaXAgbGVmdC0+cmlnaHQgYW5kIHJpZ2h0
LT5sZWZ0LiAKICAgICAvLyBPdGhlcndpc2UsIGRvIG5vdGhpbmcuCiAKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlv
blN0YXJ0KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgIGF1dG8gc2VsZWN0
aW9uU3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpKTsKICAgICBpZiAoIXNlbGVjdGlvblN0eWxlIHx8ICFzZWxl
Y3Rpb25TdHlsZS0+c3R5bGUoKSkKICAgICAgICAgIHJldHVybjsKIApAQCAtMTM4LDE3ICsxMzgs
MTcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIG5ld1ZhbHVlKTsKLSAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgpKTsKKyAg
ICBhcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJl
bW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVz
IHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVm
YXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNl
dCgpKTsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZGVmYXVsdFN0eWxlID0g
ZWRpdGluZ1N0eWxlLmdldCgpLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOworICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5ib2R5
T3JGcmFtZXNldCgpKTsKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5
bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50
IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxl
bWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KICAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygp
CiAgICAgZGVmYXVsdFN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KTsgLy8gaW1wbGVtZW50cyB1bmRlcmxpbmUKIAogICAgIC8vIEZJ
WE1FIGFkZCBFZGl0QWN0aW9uOjpNYXRjaFN0bHllIDxyZGFyOi8vcHJvYmxlbS85MTU2NTA3PiBV
bmRvIHJpY2ggdGV4dCdzIHBhc3RlICYgbWF0Y2ggc3R5bGUgc2hvdWxkIHNheSAiVW5kbyBNYXRj
aCBTdHlsZSIKLSAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24oZGVmYXVsdFN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKKyAgICBhcHBseVN0eWxlVG9TZWxlY3Rpb24o
ZGVmYXVsdFN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpDaGFuZ2VBdHRyaWJ1dGVzKTsKIH0KIAog
c3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+
JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJiBjYWNoZWRJbWFnZSkKQEAgLTIwOSw4ICsyMDksOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
LCBFbGVtZW50JiBpbWFnZUVsZW1lbgogCiAgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CiAgICAg
UG9zaXRpb24gYWZ0ZXJJbWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpOwotICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFm
dGVySW1hZ2VQb3NpdGlvbik7Ci0gICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoaW1hZ2VSYW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CisgICAgYXV0byBpbWFnZVJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3NpdGlvbiwgYWZ0
ZXJJbWFnZVBvc2l0aW9uKTsKKyAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFG
b3JSYW5nZShpbWFnZVJhbmdlLnB0cigpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVi
b2FyZEltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA0NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmLi4zZmU2ZjRlN2U0NTIx
MjViNTFmYTFmYzdkNDgwNjFjMmM0NmJiNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlv
bihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNl
bGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
KSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAKQEAgLTE3Niw5ICsxNzYsOSBA
QCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKLSAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmQsICpyYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJv
YXJkLCByYW5nZS5nZXQoKSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpKSB7CiAgICAgICAgIG1heWJl
Q29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCgqbm9kZSwgKmZyYWdtZW50KTsKLSAgICAgICAg
aWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpmcmFnbWVudCwgcmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvbjo6UGFzdGVkKSkKKyAgICAgICAgaWYgKHNob3VsZEluc2VydEZyYWdtZW50KCpm
cmFnbWVudCwgcmFuZ2UucHRyKCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkKICAgICAg
ICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1haWxCbG9ja3F1b3Rl
SGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOwogICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGltYWdlRWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDc5
NWIxMmQwZTYzYjAxNWE5ZjU1OWFjNzJmOGI2MWFhYmRhMTk4MzQuLmI4M2RhY2QwYzJiMjg2M2Fh
MjJiNmRmMzkzNTRiY2ZhZjNjZWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTc2NCw5ICs3NjQsOSBAQCBzdGF0aWMgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzQW5kSW5saW5lRGVjbChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVt
ZW50LmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShlbGVtZW50LmlubGluZVN0eWxlKCkpOwogICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVz
KGVsZW1lbnQpOwotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzRWxlbWVudFByZXNlbnRhdGlvbmFsKGNvbnN0IE5vZGUqIG5v
ZGUpCkBAIC0xMjExLDggKzEyMTEsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREbwogICAgICAg
ICAvLyBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBJIGNhbiBmaW5kLCBpdCBsb29rcyBsaWtl
IHdlIHdhbnQgdG8gc3RhcnQgcGFyc2luZyB0aGUgZnJhZ21lbnQgaW4gdGhlIEluQm9keSBpbnNl
cnRpb24gbW9kZS4KICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCBvZiB0aGUgcGFyc2VyLgogICAgICAgICAvLyBXZSBhY2hpZXZlIHRoYXQg
ZWZmZWN0IGhlcmUgYnkgcGFzc2luZyBpbiBhIGZha2UgYm9keSBlbGVtZW50IGFzIGNvbnRleHQg
Zm9yIHRoZSBmcmFnbWVudC4KLSAgICAgICAgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gZmFrZUJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkuZ2V0KCkpOworICAgICAgICBhdXRv
IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0RG9jKTsKKyAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5LnB0cigpKTsKICAgICB9
IGVsc2UgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L3BsYWluIikKICAgICAgICAgZnJhZ21l
bnQtPnBhcnNlckFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShvdXRwdXREb2MsIHNvdXJjZVN0cmlu
ZykpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKaW5kZXggMDQzNDEyOTAyYTQwZmU0MTcxYjc2NTJkOThiMGEzZTJlMjhkNTE1Ny4uODk3
MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5YjVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC0yMTcsOSArMjE3LDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQogewogICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKLQotICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3Jhd0RhdGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNM
b2FkZWQpOwogICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOwogICAgIH0KICAg
ICBjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCmluZGV4IGQ3ZTJiNzVhNDUzMTIwYjAyZDdjNzQyZDQ2MGY0NmE0ZGQ1OTk0OGUuLmQ3ODEx
MGNjOWVkYjlkYTAwNGQ0MTU4NGFjNDlkYmFlMDAyNGU5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0
cmluZyYgaW5wdXRMaW5lKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAg
ICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4i
LCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIyNzA5ZTYyZTM0ZTk1
ZWEwNzNiMjg4YTQuLjE4MTBlNzI1ZTE4MzQ5YWIzNjY1NjhlZTE4NTBjZGJiYmVmOTlmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKGNvbnN0IE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CisgICAgYXV0byBldmVudCA9IEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzKTsKIAogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZl
bnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5k
IHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBl
bGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCkBAIC02NDQ1LDcgKzY0NDUsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQogICAgIGlmICho
YXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbHM+IG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoZG9jdW1l
bnQoKSk7CisgICAgYXV0byBtZWRpYUNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgIGlmICghbWVkaWFDb250cm9scykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCBmZjk2ZjRm
MjQzNWIwOThlMDY2NjJmMzNjYzIwNWUwMDBiMzc5MTZkLi4yMjQ4MDdhMjYzNGYwMWU5MzM0OWU3
N2E5M2NmNDUwMWRhZmQxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKQEAgLTQ3Myw5ICs0NzMsOSBAQCBIVE1MVGFibGVFbGVtZW50OjpDZWxsQm9yZGVycyBI
VE1MVGFibGVFbGVtZW50OjpjZWxsQm9yZGVycygpIGNvbnN0CiAgICAgcmV0dXJuIE5vQm9yZGVy
czsKIH0KIAotUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKK1JlZjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6
OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogCiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKGNl
bGxCb3JkZXJzKCkpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3Bh
ZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShtX3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKIAotICAgIHJldHVybiBzdHlsZTsKKyAgICByZXR1cm4gV1RGTW92ZShzdHlsZSk7CiB9
CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENl
bGxTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDkxMDM1
ZjI3Y2E0ZDQzNDMwYTg3OTNhZWQ5N2ExOTgxYTM5OTEzYjAuLmE3YjdmODFlZTRiY2YwNzFmODgy
NWUzYmI2NzRkYzk1MjFlOTNjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwor
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
VXRpbHMuaAppbmRleCA2NTZhYmZiZGEwYmRiY2UzOTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5Li4z
YThkNTQxM2Y5MzE0OGUxM2Y0OWY5Njg1NTA2MjlmNGMwOWMzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxV
dGlscy5oCkBAIC04Myw3ICs4Myw3IEBAIFN0cmluZyBVUkxVdGlsczxUPjo6dG9KU09OKCkgY29u
c3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+OjpvcmlnaW4oKSBj
b25zdAogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShocmVmKCkpOworICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShocmVmKCkpOwogICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCBhY2E1MWE3N2YwMzE1MzM5MjY2MmY0MGMzZDRlMjU3OWJkZGQwNGIyLi5lMmI0M2RkNWUz
YjE1OTlmZWRmODQwNDViMmYyODFmMDZkMDMxNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC02NzIsNyArNjcyLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJE
b2N1bWVudCA9IG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRl
VGVtcGxhdGVFbGVtZW50ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxv
Y2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6
IGZvcm0oKSwgdHJ1ZSk7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0
ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZmluZEN1c3Rv
bUVsZW1lbnRJbnRlcmZhY2Uob3duZXJEb2N1bWVudCwgbG9jYWxOYW1lKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAwOGM2ZTUw
YjU4NTQ4ZGM4NzcxM2UyMGMyMDg0MDk2NjQyYTEzZmE0Li5lMTE5MmFmZjcwYWU5N2IwM2UxYjdj
MjZjMWMwNTQxYTAyZDI0NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZQogICAgICAgICAvLyBTZXQgImZsZXgtYmFzaXM6IDFlbSIu
IE5vdGUgdGhhdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCgpIG9ubHkgbmVl
ZHMgdGhlIGVsZW1lbnQncwogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlIGFuZCB0aGUg
cmVuZGVyIHZpZXcuCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7
CisgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UgfSk7CiAgICAgICAgIG5ld1N0eWxlLT5z
ZXRGbGV4QmFzaXMoTGVuZ3RoIHsgcGl4ZWxzLCBGaXhlZCB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMTEyMjdhN2VhNDQzYWIwZGJm
OTJjY2UxMWIyYzNiNjE3ZTIwOTBkOC4uMzVjMjkzMjkyZWIwMTkzNTA3NjcwYjg5MGE0MjYyMDJk
ODllNWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApA
QCAtNTAyLDE0ICs1MDIsMTQgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KERvY3VtZW50JgogCiB2b2lkIFdlYlZU
VFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gY3Vl
ID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBjdWUgPSBXZWJWVFRDdWVEYXRh
OjpjcmVhdGUoKTsKICAgICBjdWUtPnNldFN0YXJ0VGltZShtX2N1cnJlbnRTdGFydFRpbWUpOwog
ICAgIGN1ZS0+c2V0RW5kVGltZShtX2N1cnJlbnRFbmRUaW1lKTsKICAgICBjdWUtPnNldENvbnRl
bnQobV9jdXJyZW50Q29udGVudC50b1N0cmluZygpKTsKICAgICBjdWUtPnNldElkKG1fY3VycmVu
dElkKTsKICAgICBjdWUtPnNldFNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKIAotICAgIG1f
Y3VlbGlzdC5hcHBlbmQoY3VlKTsKKyAgICBtX2N1ZWxpc3QuYXBwZW5kKFdURk1vdmUoY3VlKSk7
CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bmV3Q3Vlc1BhcnNlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2
NDNmZGQ3OWE1ZmUxODJlM2YzYzkxZDI5NDJiZTg3NmMzOTM5MGIzLi5jOGRiYTAyMzFlYjE1NTMx
ZTM5MDdjOWI1OTZlYzExYzIyMjdiMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEV4Y2VwdGlvbk9yPE5vZGUq
PiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmt1cCkKIAogICAgIE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUucHJldmlvdXNTaWJsaW5n
KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzaG91bGQgdXNlIG9uZSBvZiBjcmVhdGVGcmFn
bWVudCogaW4gbWFya3VwLmgKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgYXV0byBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1
cCwgbm9kZS5wYXJlbnRFbGVtZW50KCkgPyBub2RlLnBhcmVudEVsZW1lbnQoKSA6IG1fZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCkpOwogICAgIGVsc2UKQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNl
cHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBpZiAoaW5uZXJQYXRjaENoaWxkcmVuKCpwYXJlbnRO
b2RlLCBvbGRMaXN0LCBuZXdMaXN0KS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAvLyBGYWxs
IGJhY2sgdG8gdG90YWwgcmVwbGFjZS4KLSAgICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRv
ci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUsICpmcmFnbWVudCwgbm9kZSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCBmcmFnbWVu
dC5nZXQoKSwgbm9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDFmMzhhYTIwMDRi
MjU3MzQ4OGIxNjBkNzM5Y2ZlOTYzM2VmYzZlYzUuLmMwZWMzZjhiNzI1ODU1MTk1NzNiMmJjNGNl
MGRlYWVmZTcwMmEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
Y29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMKICAg
ICBpZiAoaXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQpKSB7CiAgICAgICAg
IGF1dG8mIGNvbnRleHQyZCA9IGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9j
b250ZXh0KTsKICAgICAgICAgZm9yIChhdXRvJiBzdGF0ZSA6IGNvbnRleHQyZC5zdGF0ZVN0YWNr
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHN0YXRlUGF5bG9hZCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIHN0YXRlUGF5bG9hZC0+c2V0QXJy
YXkoc3RyaW5nSW5kZXhGb3JLZXkoInNldFRyYW5zZm9ybSJfcyksIGJ1aWxkQXJyYXlGb3JBZmZp
bmVUcmFuc2Zvcm0oc3RhdGUudHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQt
PnNldERvdWJsZShzdHJpbmdJbmRleEZvcktleSgiZ2xvYmFsQWxwaGEiX3MpLCBjb250ZXh0MmQu
Z2xvYmFsQWxwaGEoKSk7CkBAIC01MzMsNyArNTMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFMKICAgICBlbHNlIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQp
KSB7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHRXZWJHTEJhc2Ug
PSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpOwogICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzID0gY29udGV4dFdlYkdMQmFzZS5nZXRDb250ZXh0QXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5
bG9hZCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJhbHBoYSJfcywg
d2ViR0xDb250ZXh0QXR0cmlidXRlcy0+YWxwaGEpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0
QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImRlcHRoIl9zLCB3ZWJHTENvbnRleHRBdHRy
aWJ1dGVzLT5kZXB0aCk7CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9h
ZC0+c2V0Qm9vbGVhbigic3RlbmNpbCJfcywgd2ViR0xDb250ZXh0QXR0cmlidXRlcy0+c3RlbmNp
bCk7CkBAIC02NDMsOCArNjQzLDggQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICBhY3Rp
b24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRl
bShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCi0gICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
dHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXpl
VG9DYXB0dXJlKTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJh
Y2UpKSk7CisgICAgYXV0byB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOworICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEodHJhY2UucHRyKCkpKTsKIAogICAgIHJldHVybiBhY3Rpb247CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKaW5kZXggOGUxYzQ4MjlkZmY1YmVhYzFkNmZjMDMyMDljZWJmZDBjNDUwNTc3NC4uYTBj
Mzg4N2E2ZWZjMmEwNTFjM2EzNTMxNDdkNzEzNmNmOGFjOGFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwgbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgIl9ibGFuayJfcywgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biB9OwogCiAgICAgYm9vbCBjcmVhdGVkOwotICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBXZWJDb3JlOjpjcmVhdGVXaW5kb3cobWFpbkZyYW1lLCBtYWluRnJhbWUsIFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHsgfSwgY3JlYXRlZCk7CisgICAgYXV0byBmcmFtZSA9IFdlYkNv
cmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAppbmRleCAzY2RlYzg1MDUxZWQwYzMxNGU3ZTQyYzQ5YmZiYTA4NTU1NTM3N2M3Li45NDk4ZTc2
MGJkOTY0MmE5N2Q2NWUzZTljNWEzMzQwMzQyMTE5NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC00NDAsNyArNDQwLDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlz
dDo6Y3JlYXRlKCk7CisgICAgYXV0byBsaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBsaXN0UnVsZXMgPSBsaXN0LT5ydWxlcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChzdHlsZVNoZWV0LT5pdGVt
KGkpKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAg
ICAgIGF1dG8gc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OmNyZWF0ZSgpCiAgICAgICAgICAg
ICAuc2V0TmFtZShuYW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCiAgICAgICAgICAgICAu
c2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CkBA
IC02OTYsMTEgKzY5NiwxMSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1l
LCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNB
Y3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVm
KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOwotICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3Bl
cnR5TmFtZSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHku
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIGJvb2wgaW1wbGljaXQgPSBtX3N0eWxlLT5pc1Byb3BlcnR5SW1wbGljaXQo
bmFtZSk7CkBAIC0xMzMyLDEyICsxMzMyLDEyIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6
ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50
cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7CisgICAgYXV0
byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKICAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRG
b3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHls
ZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBDU1NQYXJzZXI6OnBhcnNlU2hlZXRGb3JJbnNwZWN0b3IoY29udGV4dCwgbmV3U3R5bGVT
aGVldC5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIGhhbmRsZXIpOworICAgIENT
U1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LnB0
cigpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7CiAgICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURk1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsK
ICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IGYyZWQ1ZWY4NzY2ZDA0NzlhZTQ3ZDBkMjMzNGRkOTdhNDkwMzBlOWQu
LmNhZDY2NjkzYTdlNzUzOGYyOWNjMjFhOTk5ZmMxNjcyYzc1MTEzMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3Jl
YXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXgKIAogICAgIGNv
bnRleHQuY2FudmFzQmFzZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3JDYW52YXM+IGluc3BlY3RvckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNv
bnRleHQpOwotICAgIG1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JD
YW52YXMtPmlkZW50aWZpZXIoKSwgaW5zcGVjdG9yQ2FudmFzKTsKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IEluc3BlY3RvckNhbnZhczo6Y3JlYXRlKGNvbnRleHQpOworICAgIG1faWRlbnRp
ZmllclRvSW5zcGVjdG9yQ2FudmFzLnNldChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIoKSwg
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4CiAg
ICAgaWYgKG1fcmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50KSB7CiAgICAgICAgIFJlY29y
ZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKICAgICAgICAgcmVjb3JkaW5nT3B0aW9ucy5m
cmFtZUNvdW50ID0gbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQudmFsdWUoKTsKLSAg
ICAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkF1dG9DYXB0dXJlLCBXVEZNb3ZlKHJlY29yZGluZ09w
dGlvbnMpKTsKKyAgICAgICAgc3RhcnRSZWNvcmRpbmcoaW5zcGVjdG9yQ2FudmFzLmdldCgpLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCBhZTNhY2FmZDA5MGIwYWMxNWM3ZWZkNmZlYjg5NTk0NjQ4ZDg5OTUwLi5kZWE1Yzlh
MzFkNGM5MjhiYjM0ZTE4Y2JkZDQ1NDk0YWViMWFiZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJv
bUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWQKICAgICAgICAg
cmV0dXJuIEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVs
ZWFzZSgpOwogCiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBT
dHJpbmcmIHN0cmluZykgewotICAgICAgICBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7Cisg
ICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6
VHlwZTo6U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNldFN0cmluZyhzdHJp
bmcpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsKICAgICB9LCBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmVjdG9yKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHZlY3RvcikKICAgICAg
ICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBr
ZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSku
cmVsZWFzZSgpOworICAgICAgICBhdXRvIGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CiAgICAgICAgIGtleVBhdGgtPnNl
dEFycmF5KFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgcmV0dXJuIGtleVBhdGg7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggZWU0NGVhY2FiZGU1YWExMDczMjQ1NTk0ODI1Y2E3NmRkMjMxMTdk
NS4uYzBlYzNlZjY4YmJlN2MxMjlkOTZhMDIxZWRjNDhiNTYyNDExZDcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcmNoaXZlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgU3RyaW5nKiBkYXRhKQogewogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgJiYgVVNFKENGKQogICAgIEZyYW1lJiBmcmFtZSA9IG1haW5GcmFtZSgpOwotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
ZnJhbWUpOwogICAgIGlmICghYXJjaGl2ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3Vs
ZCBub3QgY3JlYXRlIHdlYiBhcmNoaXZlIGZvciBtYWluIGZyYW1lIl9zOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDlmNjVhZWJjOWRm
NmE2NWJkMmZmNDg3ZGZhMzY3YjdjM2VkZmI5NjIuLjU2MGMzYTUwNjBjYWU2MmUwMGM2Mjg0ZTI1
OTczNzgyMTAzOWVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0zODMsMTQgKzM4MywxNCBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3Bh
Y2UgewotICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdl
QXJlYSk7IH0KLSAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZp
bmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQorICAg
ICAgICBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYpIGZpbmFsIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0KKyAg
ICAgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIGZpbmFsIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsK
KyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKSBmaW5hbDsKIH07
CiAKIGNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKQEAgLTUxMywyMiArNTEzLDIyIEBAIHZvaWQgRW1wdHlFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQogewogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFn
ZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVt
cHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCA1NTM1NDc5MTE0N2U1ODhhMDk0ZWI2Y2JhYzFiNDI3YTE3ZWZk
ZGFlLi5hODczYjFkMGVhYzcyOGQ4ZmVmNmQwYjI1ODBlMmY4NTRlNzM0YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihyZWZlcnJlcik7Ci0gICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVmZXJyZXJP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcik7CisgICAg
ICAgIGF1dG8gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCByZWZl
cnJlck9yaWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgfQogICAgIGlmICgmbV9mcmFtZS50cmVlKCku
dG9wKCkgIT0gJm1fZnJhbWUpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRl
bnQsIGNvbgogCiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkg
ewpAQCAtMzYzOSw3ICszNjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlw
ZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0u
cmVmZXJyZXIoKSk7CisgICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3Jp
Z2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgICAg
ICBhZGRIVFRQVXBncmFkZUluc2VjdXJlUmVxdWVzdHNJZk5lZWRlZChyZXF1ZXN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGUxZDYwZWI5MGU3YjczNDk3YzFhYWRjMWIzNGVkN2MzNWM0NmFlNmUuLjRiYWQxODNlMDg1NDhj
NDdkZGQ5ODIyOWVlOWU2MmI0ZWI0OWI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXIKICAgICBTdHJpbmcgbW9kZSA9IGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHlNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5p
cXVlSWQoKSkpOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50
LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBs
b2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUs
IGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2Vp
dmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJH
bG9iYWxTY29wZSwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNWZkMzliZTdiZDE0MGJlZTQyYjkxYTI4YWY4
NmRmNzRhN2U3NGQ3Mi4uYzNiNWUzZTFmMjI5MzQxMDY2NjI2MDliNGEwMTAzOWMyMGU5MTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTMxLDE2ICsxMzEsMTYgQEAgdm9pZCBNSFRNTFBhcnNlcjo6YWRkUmVzb3Vy
Y2VUb0FyY2hpdmUoQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSwgTUhUTUxBcmNoaXZlKgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gc3ViZnJhbWUg
PSBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpOworICAgIGF1dG8gc3ViZnJhbWUgPSBNSFRNTEFyY2hp
dmU6OmNyZWF0ZSgpOwogICAgIHN1YmZyYW1lLT5zZXRNYWluUmVzb3VyY2UoKnJlc291cmNlKTsK
LSAgICBtX2ZyYW1lcy5hcHBlbmQoc3ViZnJhbWUpOworICAgIG1fZnJhbWVzLmFwcGVuZChXVEZN
b3ZlKHN1YmZyYW1lKSk7CiB9CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgZW5kT2ZQYXJ0Qm91bmRhcnksIGNvbnN0IFN0cmluZyYgZW5kT2ZEb2N1bWVudEJvdW5kYXJ5
LCBib29sJiBlbmRPZkFyY2hpdmVSZWFjaGVkKQogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3Vu
ZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGNvbnN0IGJv
b2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9v
bCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRy
YW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTIxMSw3ICsyMTEs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVl
OTdiMmJkNGZkMDcyMmI1YmEzYmQ1ZmFlZTFiYzZkZmMxNjY2MjAuLmY4NjMxMzUyYzIyMGRkMWZi
NTQ1ODEyNTdiZTU2ODU5OGYzZjZkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcApAQCAtMjE2LDExICsyMTYsOCBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGlmICghYml0bWFwSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBzZXNzaW9uSUQsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCks
IHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC01NDEsNyArNTM4
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBw
ZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CisgICAgICAgICAgICBhdXRvIHJl
c291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyNzcyOTUwNDU0YjMwYjg1MjI4NGQ2Y2Vi
NTE1NjIyN2I2YTk3ZGUyLi43ZDQzNTcwMTZiYmNhMzZkMjgyOTNmMmQ4MTU2ODU5YzE0Nzk2ZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZwogCiAgICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luID0gZnJhbWUt
PnNldHRpbmdzKCkuY3Jvc3NPcmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQo
KTsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CisgICAgYXV0byBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0
OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKICAgICAg
ICAgaWYgKCFhbGxvd0Nyb3NzT3JpZ2luICYmICFydWxlLT5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nCiAgICAgaWYgKHJ1bGVMaXN0LT5ydWxlcygpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcnVsZUxpc3Q7CisgICAgcmV0
dXJuIFdURk1vdmUocnVsZUxpc3QpOwogfQogCiBSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29ucwogICAgIC8vIFdlIHBhc3MgdGhlIG9wZW5lciBmcmFtZSBmb3IgdGhlIGxvb2t1cEZy
YW1lIGluIGNhc2UgdGhlIGFjdGl2ZSBmcmFtZSBpcyBkaWZmZXJlbnQgZnJvbQogICAgIC8vIHRo
ZSBvcGVuZXIgZnJhbWUsIGFuZCB0aGUgbmFtZSByZWZlcmVuY2VzIGEgZnJhbWUgcmVsYXRpdmUg
dG8gdGhlIG9wZW5lciBmcmFtZS4KICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZyYW1l
PiBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUsIG9wZW5lckZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgY3JlYXRlZCk7
CisgICAgYXV0byBuZXdGcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdygqYWN0aXZlRnJhbWUs
IG9wZW5lckZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywg
Y3JlYXRlZCk7CiAgICAgaWYgKCFuZXdGcmFtZSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxGcmFt
ZT4geyBudWxscHRyIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2
ZDE0MWVhZmRhZmFjYTcyMzc4YTFlMzRjYzliOGVlYjI1MzFjMWQzLi41MWJhODkxZmUxNzMzMzk2
YjdlODBmNzllODEwMWIxNzFjZTg5ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCkBAIC02NTQsOCArNjU0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJl
c3NFdmVudFRyaXBsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKIAogc3RhdGlj
IGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKQogewotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFu
Y2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHRydWUp
OwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCBhYzQwYjgwZTJjOTU4YTdmNmZhN2JlNTYzYjk4MDdjZTFlMjNhYzA5Li4zYTQ2
OGI2YzQ2ZTEzODc0MGYxYjY4ZmQwNDM5ZmIzMjg1MzgzZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEzOTUsNyArMTM5NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBi
NDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0Li5iNDI4ZTUyMjFhZmUxYjJi
NzRkMDJmMWFkNGYyYjI1OTBhZDY1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25z
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBp
ZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRp
b25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5
T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCA1ODNjZmQzMTY0ODgwMGU3MzgxNjY1ZDNkNTQ2
NDllODk3YjVhOTA4Li4wNWM4NWM2NmI4ZWU5ZTNmN2Y3ZTQzYmNjNTcwMmIwMjYxZmE2NGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtODEsMTQgKzgxLDE0IEBAIHZvaWQg
RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVu
dCh1cmwpOwogCi0gICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KHRoaXMsIHVybCk7
CiAgICAgZG9jdW1lbnQtPnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2RlKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93
KCk7Ci0gICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgIHNldERvY3VtZW50KGRvY3VtZW50
LmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50Ojpj
cmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkpOwogCi0gICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVt
ZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGJvZHktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgc3R5bGUpOwogCkBA
IC02MjksMTYgKzYyOSwxNiBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3Vy
cmVudFJvb3QoKSBjb25zdAogICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRvY3VtZW50KCkt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlcykpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0
aGF0IHByZWNlZGUgdGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiAhPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5n
VGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0
UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9IHBsYWlu
VGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcHJl
Y2VkaW5nVGV4dFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4
dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJlY2VkaW5nVGV4dCA9
IHBsYWluVGV4dChwcmVjZWRpbmdUZXh0UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
ICghcHJlY2VkaW5nVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgcHJlY2VkaW5nVGV4dCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJp
bmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIuZ2V0KCkp
OworICAgICAgICAgICAgYXV0byByYW5nZUZvck1hcmtlciA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zm
c2V0KCkpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5lbmRPZmZz
ZXQoKSkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5U
ZXh0KHJhbmdlRm9yTWFya2VyLnB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRh
dGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUo
KSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9u
c0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhl
IGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwg
b3Igb25lIG9mIGl0cwpAQCAtNjU4LDggKzY1OCw4IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnBy
ZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgfQogCiAgICAgLy8gRmluYWxseSwg
YWRkIGFueSB0ZXh0IGFmdGVyIHRoZSBsYXN0IG1hcmtlci4KLSAgICBSZWZQdHI8UmFuZ2U+IGFm
dGVyTGFzdE1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5n
VGV4dFN0YXJ0UG9zaXRpb24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290
Q2hpbGRDb3VudCkpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0
KGFmdGVyTGFzdE1hcmtlclJhbmdlLmdldCgpKTsKKyAgICBhdXRvIGFmdGVyTGFzdE1hcmtlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRp
b24sIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihyb290LCByb290Q2hpbGRDb3VudCkpOwor
ICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtl
clJhbmdlLnB0cigpKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW0KaW5kZXggZjM0MDlmYTJlZjUwZTBlNmQxNjBlZGY5NTM4MGFjOTIxYjE1ZjBkMC4uYzk2
YmVkMTA4NjlmNjc1ZGJmNTE0NWY5ZjNlMGY0MTIzZjAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xNTYs
OCArMTU2LDggQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNlXTsKICAg
ICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVh
dGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVy
KCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJ
biIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBs
YXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93
bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5p
bWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0
KCkKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZU91dCgpCiAgICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91
dEFuaW1hdGlvbigpOwogICAgIH1dOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAq
cGxhdGZvcm1BbmltYXRpb24pOworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA5ZjE5Y2ZlZjNiYmU1MDA5NDhmNTJhNTAwODlkMzc4NTliNzEz
ZTIzLi40NmZjODExY2MzNTMzNWU5ZDNhZmE2ZGJiMzNlZjkxOWMyZDYwYWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlv
bikgY29uc3QKIAogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCBzaXplb2YoY2hhcikpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIFVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyLiBSZXF1ZXN0ZWQgc2l6ZSB3YXMgJXp1IHggJWx1XG4iLCBzaXplKCksIHNpemVv
ZihjaGFyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBmNjVjZGUzYzFhZmY0NWY2NmQ1
ZjIyMzYzNjcxOTJmMGNiMzA3YTA3Li45ZTcxYWU5Zjc0N2U5OGI5NTZhMGMwYzViMDQ4OWRiM2I4
OWRlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcApAQCAtMTcxLDggKzE3MSw4IEBAIGJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpCiAgICAg
Ly8gKGhhcmR3YXJlKSBzYW1wbGUtcmF0ZS4KICAgICB1bnNpZ25lZCBzdGFydEZyYW1lID0gaW5k
ZXggKiBSZXNwb25zZUZyYW1lU2l6ZTsKICAgICB1bnNpZ25lZCBzdG9wRnJhbWUgPSBzdGFydEZy
YW1lICsgUmVzcG9uc2VGcmFtZVNpemU7Ci0gICAgUmVmUHRyPEF1ZGlvQnVzPiBwcmVTYW1wbGVS
YXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGJ1
cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHJlc3BvbnNl
ID0gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNv
bnZlcnRlZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJh
bmdlKGJ1cywgc3RhcnRGcmFtZSwgc3RvcEZyYW1lKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcocHJlU2FtcGxlUmF0ZUNvbnZlcnRl
ZFJlc3BvbnNlLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9DaGFubmVsKiBs
ZWZ0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVzcG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5u
ZWxMZWZ0KTsKICAgICBBdWRpb0NoYW5uZWwqIHJpZ2h0RWFySW1wdWxzZVJlc3BvbnNlID0gcmVz
cG9uc2UtPmNoYW5uZWwoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCBlNzlkNmMx
OGRlYjlhMDcwNDVhZjU2OWU3NDUwZGUxMmQ0NzBjODRhLi44OTc3ZjM5ODY5ZDZiNjUwMjY0MzU0
NGY0MWQyYjZkYTM4N2FlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgU2luY1Jlc2FtcGxl
cjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCi0gICAg
UmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7CisgICAgYXV0byBidXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIG51bWJl
ck9mU291cmNlRnJhbWVzLCBmYWxzZSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBt
YWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKICAgICBidXMtPnNldENoYW5uZWxNZW1v
cnkoMCwgYnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGI5MTIwNzczZGQ1MTAxNWMxNjI3ODRjZDI3MTgwOTA3
NjhlZmI3ZDYuLmNkZTMwYThhOGIyMGQ1NWNiNTRkMmY4OTUzZmU5ZjRiYWE5YTViNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAg
UmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVS
YXRlLCBib29sIG1peFRvTW9ubykKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUpOworICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG1fY2hhbm5lbHMsIG1fY2hhbm5lbFNpemUsIHRydWUp
OwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CiAKICAgICBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKG1fZnJvbnRMZWZ0QnVmZmVycy5nZXQoKSwg
YXVkaW9CdXMtPmNoYW5uZWwoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCAyYWY1MThiOTYyNDgy
NWIwYjRjNzE0NGViZTQ0NmU1YzEyNGIxYzY3Li5kYzE0NDExNWFjMjk2ZTgyZjMzYmU5YzJkZjIz
MDRhMmI4YTYyMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0
cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBtaXhUb01vbm8pCiAgICAgc2l6ZV90IGJ1c0NoYW5uZWxDb3VudCA9IG1peFRvTW9ubyA/
IDEgOiBudW1iZXJPZkNoYW5uZWxzOwogCiAgICAgLy8gQ3JlYXRlIEF1ZGlvQnVzIHdoZXJlIHdl
J2xsIHB1dCB0aGUgUENNIGF1ZGlvIGRhdGEKLSAgICBSZWZQdHI8QXVkaW9CdXM+IGF1ZGlvQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidXNDaGFubmVsQ291bnQsIG51bWJl
ck9mRnJhbWVzKTsKICAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRl
cgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMWZkZmVjZGE3MWM2MDRjMDk1MTE1
ZDU1ZDU1NDMzZWIwZDZmMzNlNC4uMTYyODExMmExYzBiN2U1MGI0MDRjZmQyNjM0ZmQ2YzI1NGZj
YjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJY29uKGhJY29uKSk7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAppbmRl
eCAzOGI1MTkxYzYyMDg0MmVkMGFmZGM3YjA2ZGVlMTA5ZWQyZGYyOWE4Li4xM2YxODc4OTNiNDQw
ZmZiNThkM2JlYjFmNjNmNGI0ZDIxM2I1Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgVHJhY2tQcml2
YXRlQmFzZSB7CiAgICAgICAgIEdlbmVyaWMsCiAgICAgICAgIFdlYlZUVAogICAgIH07Ci0gICAg
c3RhdGljIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoQ3VlRm9ybWF0IGZv
cm1hdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGUoZm9ybWF0
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZh
dGUoZm9ybWF0KSk7IH0KICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlKCkgPSBk
ZWZhdWx0OwogCiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI4
Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQuLmFmMGE3Y2M3N2JmMjkyY2Rm
ZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTg5MSw4ICsx
ODkxLDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Uo
QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICAgICAgLy8gQ3JlYXRlIGFuIGlu
aXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBr
ZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25l
ZCBrZXlVUklTaXplID0ga2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
NCArIGtleVVSSVNpemUsIDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERh
dGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwg
MCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gaW5pdERhdGFC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKKyAgICAgICAg
YXV0byBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIu
Y29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgaW5p
dERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwogCiAgICAgICAg
IGF1dG8ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNv
cHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKQEAgLTE5MDgsOCArMTkwOCw4IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZUFW
Q0ZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKLSAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyKTsKKyAgICBhdXRvIHJlc291
cmNlTG9hZGVyID0gV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG1fb3duZXIsIGF2
UmVxdWVzdCk7CisgICAgbV9vd25lci0+bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoYXZSZXF1ZXN0
LCByZXNvdXJjZUxvYWRlci5jb3B5UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4
IDIxMjg3MjE0YTNiZjVjZTE0MDgwNDU1MGQ5YWVlYzM4YTMwNjExYTkuLjFhNGIxODFhYWNiODk2
MzAwNWNjZTVhYmQ4NzMzYWMxYzJkOTE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MzksOSArMzksOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIGZpbmFsIDogcHVibGljIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQykKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrICp0cmFj
aywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJh
Y2ssIHBhcmVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDA1
Nzg1Y2FlMzYxNmRmZmJlOTkzOWUwM2RhNTE5M2M2OTE0OTU0Zi4uMzEwNzgwYzNhY2FiZDgxNTU1
YzNkMDE5ZTNiNDhjNmNmNzc3YTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICpyZXF1ZXN0LCBBcgogCiAgICAgICAgIEFTU0VSVChz
dGFydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICAgICAgQVNTRVJU
KGVuZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKLSAgICAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdGVkS2V5RGF0YSA9IGtleURhdGEtPnNsaWNlKHN0YXRpY19jYXN0PGludD4oc3RhcnQpLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuZCkpOwogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlcXVlc3RlZEtleURhdGEt
PmRhdGEoKSBsZW5ndGg6cmVxdWVzdGVkS2V5RGF0YS0+Ynl0ZUxlbmd0aCgpXSk7CiAgICAgICAg
IFtkYXRhUmVxdWVzdCByZXNwb25kV2l0aERhdGE6bnNEYXRhLmdldCgpXTsKICAgICB9CkBAIC0x
ODE3LDggKzE4MTcsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpjcmVhdGUodGhpcywgYXZSZXF1ZXN0KTsKLSAgICBt
X3Jlc291cmNlTG9hZGVyTWFwLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWF2UmVxdWVzdCwgcmVz
b3VyY2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3QpOworICAgIG1fcmVzb3VyY2VMb2FkZXJN
YXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlci5jb3B5
UmVmKCkpOwogICAgIHJlc291cmNlTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwYzA0YWY5MDQzMDI5MWYxMmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFh
Li4xNjgxMjc1OWUwYTFhZWZjZjQ4YmVmMWE0MzY0ZDU4NGM5MTgxZGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4g
Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudCopOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qz4gY3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMoKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUwODRjOTBkNWZkNzdlNjZl
YmQyYWU4NGUzMTY3ZGZkOWU5MzczY2MuLjJiMzdlYzdkZmVhYjQ2NWYxMWY3YTUwN2UwODg5MmVk
OTc4OTBhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwog
Ci1SZWZQdHI8TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQz4gTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6Y3JlYXRlKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGFyZW50
LCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqIGNsaWVudCkKK1JlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCogY2xpZW50KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBtZWRp
YVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhw
YXJlbnQsIGNsaWVudCkpOwotICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1lZGlhU291
cmNlUHJpdmF0ZSk7CisgICAgYXV0byBtZWRpYVNvdXJjZVByaXZhdGUgPSBhZG9wdFJlZigqbmV3
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMocGFyZW50LCBjbGllbnQpKTsKKyAgICBjbGllbnQt
PnNldFByaXZhdGVBbmRPcGVuKG1lZGlhU291cmNlUHJpdmF0ZS5jb3B5UmVmKCkpOwogICAgIHJl
dHVybiBtZWRpYVNvdXJjZVByaXZhdGU7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IEMKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIG5ld1NvdXJj
ZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1JbnN0YW5jZS5nZXQoKSk7CiAjZW5kaWYKLSAg
ICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAgIG91dFByaXZhdGUgPSBuZXdTb3Vy
Y2VCdWZmZXIuY29weVJlZigpOwogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShu
ZXdTb3VyY2VCdWZmZXIpKTsKIAogICAgIHJldHVybiBPazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDgzMDBkYzNiNmUz
OWU4Y2FiMTQ1YWViYTIxNzZlOTgxMWRmYzk4NzEuLmYxNzYyNjIzNGI5YjVhMGFkZThjMjc1NDdh
NDQ2NTdhNDgyYWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3JlYXRlKE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOwogICAgIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFT
b3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGE5OWZlYjdm
NjUzYzk5MTE2ZDBmMzM5ZWMzNzc1ZmMyMGNlZjBiZWQuLjFjNTY2MzY2MGQ5YWVkY2M4OWU2YjUy
MzNiOGZjNGFiM2Q2ZWQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00MzAsNyArNDMwLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFBBTDsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMgZmluYWwgOiBwdWJs
aWMgTWVkaWFEZXNjcmlwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2spIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CisgICAgc3RhdGlj
IFJlZjxNZWRpYURlc2NyaXB0aW9uQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakModHJhY2spKTsg
fQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKCkgeyB9CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvZGVjOyB9CkBAIC00
ODQsOSArNDg0LDkgQEAgc3RhdGljIHZvaWQgYnVmZmVyV2FzQ29uc3VtZWRDYWxsYmFjayhDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qgdm9pZCosIENGU3QKICAgICAgICAgc291cmNlQnVm
ZmVyLT5idWZmZXJXYXNDb25zdW1lZCgpOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQorUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKHBhcmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDKHBhcmVudCkpOwogfQogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQpAQCAtNTUxLDE2ICs1NTEsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIAogICAgICAg
ICBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
VmlzdWFsXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKLSAgICAgICAgICAg
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gdmlkZW9UcmFjayA9
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRoaXMp
OwotICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2s7Ci0gICAgICAgICAgICBtX3Zp
ZGVvVHJhY2tzLmFwcGVuZCh2aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIGF1dG8gdmlkZW9UcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGUodHJhY2ssIHRo
aXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IHZpZGVvVHJhY2suY29weVJlZigpOworICAg
ICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoV1RGTW92ZSh2aWRlb1RyYWNrKSk7CiAgICAg
ICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0
ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsK
ICAgICAgICAgfSBlbHNlIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXSkgewogICAgICAgICAgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpBdWRpb1RyYWNrSW5mb3JtYXRpb24gaW5m
bzsKLSAgICAgICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGUodHJhY2ssIHRoaXMpOwotICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2s7Ci0g
ICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChhdWRpb1RyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
cmVhdGUodHJhY2ssIHRoaXMpOworICAgICAgICAgICAgaW5mby50cmFjayA9IGF1ZGlvVHJhY2su
Y29weVJlZigpOworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQoV1RGTW92ZShhdWRp
b1RyYWNrKSk7CiAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVkaWFEZXNjcmlwdGlv
bkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tz
LmFwcGVuZChpbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZjQ1
NmYwYTk2ZjJlMmJjMjYyZGVhZmMzOWY1MzJkYjlkNWIwNmU4Zi4uNWRkN2U2MjMwZmU4ZTA1YjRm
ZjM0NWUzYjE5NDE0YWIwOTFmM2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgVmlkZW9UcmFja1By
aXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywg
cGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAKICAgICBib29sIHNl
bGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggODBjZmM0ZmFjMzQ1Yzky
ZWNkNjE3MzdmYzkyNTRkY2Q4Yjc1NWJmOC4uOTFkYjY1NDFjNGIxMjNhZWIzNDZlYTM5MmFlMDQz
ODQwZDI0MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIGludCBUaWxlQ29u
dHJvbGxlcjo6cmlnaHRNYXJnaW5XaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX21hcmdpblNp
emUgKiBtX21hcmdpbkVkZ2VzLnJpZ2h0KCkpIC8gdGlsZUdyaWQoKS5zY2FsZSgpOwogfQogCi1S
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBUaWxlQ29udHJvbGxlcjo6Y3JlYXRlVGlsZUxheWVyKGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBUaWxlR3JpZCYgZ3JpZCkKK1JlZjxQbGF0Zm9ybUNBTGF5
ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QsIFRpbGVHcmlkJiBncmlkKQogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVy
ID0gbV90aWxlQ2FjaGVMYXllci0+Y3JlYXRlQ29tcGF0aWJsZUxheWVyT3JUYWtlRnJvbVBvb2wo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIsICZncmlkLCB0
aWxlUmVjdC5zaXplKCkpOworICAgIGF1dG8gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVh
dGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CiAKICAgICBs
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIGxheWVyLT5zZXRQb3Np
dGlvbih0aWxlUmVjdC5sb2NhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGFlMTliOGM1MTcxZmQ1NzQx
YTU1MTVmNzZhNjk4ODY2NjJmYWYwN2MuLmRiOWQ0NTMxMDdiZDQ5MDA1MTY1MjBkNWEwNjc1MjBh
YzI2NmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFRpbGVDb250cm9s
bGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVD
b3ZlcmFnZU1hcCgpOwogCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxh
eWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOworICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0JiwgVGlsZUdyaWQmKTsKIAogICAgIGNvbnN0
IFRpbGVHcmlkJiB0aWxlR3JpZCgpIGNvbnN0IHsgcmV0dXJuICptX3RpbGVHcmlkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDJhOWQ5MWFlMWM3OGQxZDczNWNlNDkxYjNhZGE5
YWE4MGY2NzQ0M2UuLjFhYmE0NmY0YzNiY2E1ZDFiMmFjM2MwYzQ1NWExZDliNmVlMDgxNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgQ0FDRkxh
eWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQogICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlOwogICAgIH0KIAotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4g
aG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGhvc3QgPSBDQUNG
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgYXZh
aWxhYmxlID0gZmFsc2U7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENBQ0ZMYXllclRyZWVI
b3N0PiBDQUNGTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKICAgICBpZiAoIWFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSgpOworICAgIGF1dG8gaG9zdCA9IFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpjcmVhdGUo
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGxheWVyIHRyZWUgaG9zdCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDQwNmUwODVmZmYx
ZjE5YTlkYmZkYjgxYzY0OTMxZjQ2OGE0Zjk3OTUuLmZjYzI3NmRiZTE0Mjk1MzgxYjQzMzI1YzBj
YzI2ZGZkNDg1MzRhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTU1LDExICs1NSwx
MSBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVQnVmZmVyRGVzY3JpcHRvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRlc2NyaXB0b3Iuc2l6ZSwgW10gKHZv
aWQqIHB0cikgeworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJv
bUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7
CiAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBwdHIp
OwogICAgIH0pOwogICAgIGFycmF5QnVmZmVyLT5yZWYoKTsKLSAgICBBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXJDb250ZW50cyA9IGFycmF5QnVmZmVyLmdldCgpOworICAgIEFycmF5QnVmZmVyKiBh
cnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIucHRyKCk7CiAgICAgLy8gRklYTUU6IERl
ZmF1bHQgdGhpcyBNVExSZXNvdXJjZU9wdGlvbnMuCiAgICAgUGxhdGZvcm1CdWZmZXJTbWFydFB0
ciBtdGxCdWZmZXIgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKQogICAgICAgICBu
ZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6YXJyYXlCdWZmZXItPmRhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5NDc2OGRjMWE5MmEy
ZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmLi5kZTc4ZGI2MDdmYTExZjdhNThkZWZmNGE5ODI0
MjNiYjhiYThkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtNzM0LDkgKzczNCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBW
aWRlbykKICAgICAgICAgfSBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIHN0cmVhbSk7
Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgICAgICBhdXRvIHRy
YWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0lu
ZGV4KyssIHN0cmVhbSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFj
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklO
RygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZC51dGY4
KCkuZGF0YSgpKTsKQEAgLTg5NCwxMCArODk0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlZpZGVvKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwg
cGFkKTsKKyAgICAgICAgYXV0byB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFt
SWQgPT0gdHJhY2stPmlkKCkpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwg
dHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqdHJhY2spOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFZpZGVvVHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdl
SW52YWxpZFZpZGVvVHJhY2tzKHZhbGlkVmlkZW9TdHJlYW1zKTsKQEAgLTk2OCw3ICs5NjgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CisgICAgICAgIGF1dG8gdHJhY2sgPSBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFk
KTsKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAgICAgbV9h
dWRpb1RyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKICAgICAgICAgbV9wbGF5ZXItPmFkZEF1
ZGlvVHJhY2soKnRyYWNrKTsKQEAgLTEwMjksOSArMTAyOSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRleHQoKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7
Ci0gICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgbV9w
bGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOworICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKGksIHBhZCk7CisgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgIH0KIAogICAgIHB1cmdlSW52YWxpZFRl
eHRUcmFja3ModmFsaWRUZXh0U3RyZWFtcyk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgIGNhc2UgR1NUX01FU1NBR0VfRUxFTUVOVDoKICAgICAgICAgaWYgKGdzdF9pc19t
aXNzaW5nX3BsdWdpbl9tZXNzYWdlKG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICBpZiAoZ3N0X2lu
c3RhbGxfcGx1Z2luc19zdXBwb3J0ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjaz4gbWlzc2luZ1BsdWdp
bkNhbGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2s6OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3Vs
dCwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3Np
bmdQbHVnaW5DYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGF1dG8gbWlzc2luZ1BsdWdpbkNh
bGxiYWNrID0gTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6
OmNyZWF0ZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKHVpbnQzMl90IHJlc3VsdCwg
TWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIG1pc3NpbmdQ
bHVnaW5DYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfSU5GTygiZ290IG1pc3NpbmcgcGx1Z2luZyBpbnN0
YWxsYXRpb24gY2FsbGJhY2sgaW4gZGVzdHJveWVkIHBsYXllciB3aXRoIHJlc3VsdCAldSIsIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzEzLDEwICsxMzEz
LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9SRUFEWSk7CiAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5jaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQo
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX21pc3NpbmdQbHVnaW5D
YWxsYmFja3MuYXBwZW5kKG1pc3NpbmdQbHVnaW5DYWxsYmFjay5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGV0YWlsKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNz
YWdlX2dldF9pbnN0YWxsZXJfZGV0YWlsKG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9k
ZXNjcmlwdGlvbihtZXNzYWdlKSk7Ci0gICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgp
LnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgKm1pc3NpbmdQbHVnaW5D
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnMoU3RyaW5nOjpmcm9tVVRGOChkZXRhaWwuZ2V0KCkpLCBTdHJpbmc6
OmZyb21VVEY4KGRlc2NyaXB0aW9uLmdldCgpKSwgbWlzc2luZ1BsdWdpbkNhbGxiYWNrLmdldCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
VVNFKEdTVFJFQU1FUl9NUEVHVFMpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc01wZWdUc1NlY3Rpb24oR3N0TXBlZ3RzU2VjdGlv
biogc2VjdGlvbgogICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzUE1UU3RyZWFtKiBzdHJlYW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0qPihnX3B0cl9hcnJheV9pbmRl
eChwbXQtPnN0cmVhbXMsIGkpKTsKICAgICAgICAgICAgIGlmIChzdHJlYW0tPnN0cmVhbV90eXBl
ID09IDB4MDUgfHwgc3RyZWFtLT5zdHJlYW1fdHlwZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHBpZCA9IFN0cmluZzo6bnVtYmVyKHN0cmVhbS0+cGlkKTsKLSAgICAg
ICAgICAgICAgICBSZWZQdHI8SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
PiB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRhdGEsIHBpZCk7
CiAKICAgICAgICAgICAgICAgICAvLyA0LjcuMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQg
dHJhY2tzCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVy
bCwgbmV3TG9jYXRpb24pOwogICAgICAgICBjb252ZXJ0VG9JbnRlcm5hbFByb3RvY29sKG5ld1Vy
bCk7CiAKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpOworICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9y
aWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CiAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1Qo
cGlwZWxpbmUoKSwgIk5ldyBtZWRpYSB1cmw6ICVzIiwgbmV3VXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggODk3ZjI5MjAyNWRkNGFhYzI2NWRkOWJkZGYyYjc3ODM4NmNiOWI2
MS4uMzU2MzUxMzQyZjBhNTUxOTc5OThmZTcxODFiOWM4YTU1M2ZkYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODc4
LDcgKzg3OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKICAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogCi0gICAgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CisgICAgYXV0byBnc3RJbWFnZSA9IElt
YWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CmluZGV4IDAyNmEyMDU3M2VjMzJhZGIyYTNiYzhhNjg2MDIzZWE4MGFkODMxMDguLmQwOTI5MjBj
MjZiZDYwZTk4M2JmYTE0MzY2ZDU2MzllZmZmY2U0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBw
c2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IG1lZGlhU2FtcGxl
ID0gV2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSks
IG1fcHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKKyAgICBhdXRvIG1lZGlhU2FtcGxlID0g
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1f
cHJlc2VudGF0aW9uU2l6ZSwgdHJhY2tJZCgpKTsKIAogICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0
cmFja0lkPSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1w
bGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQogICAgICAgICBtZWRpYVNhbXBsZS0+YXBw
bHlQdHNPZmZzZXQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICB9CiAKLSAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUoKm1lZGlhU2FtcGxlKTsKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPmRpZFJlY2VpdmVTYW1wbGUobWVkaWFTYW1wbGUuZ2V0KCkpOwog
fQogCiB2b2lkIEFwcGVuZFBpcGVsaW5lOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAKaW5kZXggN2NiZjU0ZWIzYzM1ZWExMzljMGU3MDYyOWRmOGRhYmRiNTQ1ZDA3ZS4uNmU0YjY0
ZmI0MjAwYmIwOTBjMDU1ODc3YmM5NmI1MTJkNTUxZjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGF1dG8gc3lzdGVtSUQgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0
ICsgMTYpOwotICAgIGlmICghc3lzdGVtSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fc3lzdGVtSUQucmVzaXplKDE2KTsKQEAgLTYzLDggKzYw
LDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRL
ZXlJRCA9IG1fa2V5SURzW2tleUlEXTsKICAgICAgICAgICAgIGN1cnJlbnRLZXlJRC5yZXNpemUo
MTYpOwogICAgICAgICAgICAgYXV0byBwYXJzZWRLZXlJRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZEtleUlEKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG9mZnNldCArPSAxNjsKICAgICAgICAg
ICAgIG1lbWNweShjdXJyZW50S2V5SUQuZGF0YSgpLCBwYXJzZWRLZXlJRC0+ZGF0YSgpLCAxNik7
CiAgICAgICAgIH0KQEAgLTc2LDkgKzcxLDYgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2UKICAg
ICBpZiAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQgPCBkYXRhU2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGF1dG8gcGFyc2VkRGF0YSA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyBkYXRhU2l6ZSk7Ci0gICAgaWYgKCFwYXJzZWREYXRhKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAKICAgICBtX2RhdGEucmVzaXpl
KGRhdGFTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKaW5kZXggNTdhNTY5NGQ1ZWFl
MTM5ZWVkMjg1OTVhMTMyMzA2YmM1Yzc1YTA0Zi4uMmM5NGY0ZDNjYzFiNzYxNzVkOTIzODg2MjZm
MTgwYjljYjgwMjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAKQEAgLTY0LDkgKzY0
LDYgQEAgYm9vbCBJU09UcmFja0VuY3J5cHRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1
bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGtleUlE
QnVmZmVyID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICBpZiAoIWtl
eUlEQnVmZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBvZmZzZXQgKz0gMTY7CiAK
ICAgICBtX2RlZmF1bHRLSUQucmVzaXplKDE2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0
aW9uLmNwcAppbmRleCA2NjdmMjMwMTcyMzU5MTQ2MzE3ZmM4NjFhMjdlYzg0MDZiZTA3NDFmLi4w
MWEyNzQyNDM5YzIyN2YyMjJiOGNlYjJjYTYwYTMxZmM5NGZmOWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIEZpbHRlck9w
ZXJhdGlvbnMgYXBwbHlGaWx0ZXJBbmltYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QKICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpdHlPcCA9IFBhc3N0aHJv
dWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+
IDAuNSkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3AgPyB0b09wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wID8g
ZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoZnJvbU9wID8gZnJvbU9wIDogV1RGTW92ZShpZGVudGl0eU9wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCmluZGV4IGM2NmU0NjM2MjAwMjg2NTBiNDVjNTA2MTFiYjI2ZGM0NDJlMjdjOGYu
LjhjYzU4ZDYxZDliNTAzNzk3ZjA3MjcyNWUwYzZkNzgzZGU1ZDFkZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICBhdXRvIHRleHR1cmUgPSBC
aXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6Omdl
dCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KCp0ZXh0dXJlKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CisgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwogICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBmOTQ0ZjA3YTU4ZTJhZGRkYjJkYTE5MjVhMzUzZjcz
YmU0NGUyODJmLi5iMTQ1MmZlMmI2NjdiZGVmMzFhOGJjOWNlMzFmNGU2ZDJlYzdiMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAgLTg3LDExICs4NywxMSBAQCBU
cmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmbwogICAgICAgICBpZiAoYmxlbmRlZE9wZXJhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcGVyYXRpb24pOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGlk
ZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wZXJhdGlvbiA9IElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wZXJhdGlvbiA/IHRvT3Bl
cmF0aW9uIDogaWRlbnRpdHlPcGVyYXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50
aXR5T3BlcmF0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBpZGVu
dGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24gOiBXVEZNb3ZlKGlkZW50aXR5T3BlcmF0
aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODYwZGEzODYzOGVmNTJhOTBlZDFmZDg5YjUyZGVlOTY1NDMwMTUzYy4uMDZjMGExOWYzMGQz
OWQxOTE5ZDJiNGNmZDQxZDQ0N2VjMDU0MjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTE0NCw4ICsxNDQsOCBAQCB2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBDb3B5IG91dCBQTkcgZGF0YSB0
byBhIHNlcGFyYXRlIHZlY3RvciBhbmQgc2VuZCB0byB0aGUgUE5HIGRlY29kZXIuCiAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBjb3B5IGJ5IG1ha2luZyB0aGUgUE5HIGRlY29kZXIgYWJsZSB0byB0
YWtlIGFuCiAgICAgLy8gb3B0aW9uYWwgb2Zmc2V0LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHBuZ0RhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1f
aW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpKTsK
LSAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0YSgqcG5nRGF0YSwgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSk7CisgICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoJm1fZGF0
YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2RhdGEtPnNpemUoKSAtIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKHBu
Z0RhdGEuZ2V0KCksIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCiB2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBpbmRleCwgYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrQm94LmNwcAppbmRleCBlNTRiYTM3NmRhNjE2NjQ1N2MyMzI4OTcxODE0Y2ZmMzg1ZmE2
ZTE4Li4xMDA5MTJiMzI5MzMzZmMzZWJjMzNjNTE3YmIyZDQ3Mzc2YjhkMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAK
QEAgLTk3LDExICs5NywxMSBAQCBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJbml0aWFsaXph
dGlvbkJveChBcnJheUJ1ZmZlciogZGF0YSkKICAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CiAKICAg
ICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOwotICAgICAgICBpZiAoTW9ja0JveDo6
cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAgICAg
ICAgYXV0byBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9j
a0JveDo6cGVla1R5cGUoc3ViQnVmZmVyLnB0cigpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIuZ2V0KCkpOworICAgICAgICBNb2NrVHJhY2tCb3ggdHJhY2tCb3goc3ViQnVmZmVyLnB0
cigpKTsKICAgICAgICAgb2Zmc2V0ICs9IHRyYWNrQm94Lmxlbmd0aCgpOwogICAgICAgICBtX3Ry
YWNrcy5hcHBlbmQodHJhY2tCb3gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggMmE4YjI0YmQyZjkyMWUxYzFmMzUwMDIyMjc3YTgzMzg3ZWMzN2Fm
ZS4uNDI1ODg5N2JlNmJlMzkxMWU2MGJlZGFjMTAxZjMzZTA5OWJjZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBSZWY8TWVk
aWFTYW1wbGU+IE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogCiBjbGFzcyBNb2NrTWVkaWFEZXNjcmlwdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2Ny
aXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYURlc2NyaXB0aW9u
PiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2NrTWVkaWFEZXNjcmlwdGlvbihib3gpKTsgfQogICAgIHZpcnR1YWwgfk1vY2tN
ZWRpYURlc2NyaXB0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQXRvbWljU3RyaW5nIGNvZGVjKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQpAQCAtMTE4LDkgKzExOCw5
IEBAIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24gewogICAgIE1vY2tUcmFja0JveCBtX2JveDsKIH07CiAKLVJlZlB0cjxNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKiBwYXJlbnQpCitSZWY8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUo
cGFyZW50KSk7CiB9CiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCkBAIC0xNDIsMTcgKzE0Miwx
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgp
LCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2Nr
Qm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZm
ZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkp
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVl
a1R5cGUoYnVmZmVyLnB0cigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0luaXRpYWxpemF0
aW9uQm94Ojp0eXBlKCkpIHsKLSAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0
Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBN
b2NrSW5pdGlhbGl6YXRpb25Cb3ggaW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZm
ZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChp
bml0Qm94KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUo
KSkgewotICAgICAgICAgICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1v
Y2tTYW1wbGVCb3goYnVmZmVyLnB0cigpKTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUo
c2FtcGxlQm94KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpQYXJzaW5nRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IGIzZjhhZjQyYTJmNDJhZWI5ZWRlY2U2YWIzM2I1ZTg3YTUyNzI1
MjkuLjE1NzYwMDUzY2JmMGYwNTI5NDMzOGM0N2YyNjExNTIzYmE5ODI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiAKIGNsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGZpbmFsIDogcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7Cisg
ICAgc3RhdGljIFJlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKICAgICB2aXJ0dWFsIH5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrVHJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tUcmFja3MuaAppbmRleCBiNDZjYTZiNjAxMWIwMjI5MGQ2YjgzMGZiZTBiNjAzZmQyZGJhZDBj
Li5mNGMwMDkyMjk0ODgxYTRmYWVmMWMwZGY3NTIwODM0YzY5ZTIyMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVk
aW9UcmFja1ByaXZhdGUgewogCiBjbGFzcyBNb2NrVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tU
ZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrVGV4dFRyYWNrUHJpdmF0ZShib3gpKTsgfQogICAg
IHZpcnR1YWwgfk1vY2tUZXh0VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1By
aXZhdGUgewogCiBjbGFzcyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFj
a1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2
YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNb2NrVmlkZW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1vY2tWaWRl
b1RyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQogICAgIHZpcnR1YWwg
fk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGQ3YzFlNWZhYTBkZTUwNzgzYmZiNDc3MjRiZjU5
OTE5YWI2NmY5MWQuLmM0OWY0MjE3ODEyMGE0YzNkMmI0ZDMwMjY4NGIyZDgzYWYxZjQ2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCB2b2lkIEZvcm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CiBSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3Jt
RGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMzE5LDcgKzMxOSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZGF0YTsKKyAgICByZXR1cm4gV1RGTW92ZShkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggNjI0Y2NjNWUxMjgwNzFkNzQxN2I4
ZDE2ZTRlODU0ZmQ3NTNhZWU2OS4uOGU3NzMzYzU3YWQ1MGQxZWU2NjQ1YmRjYjlhMzIzOGNjZGQ3
ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29va2llU3RvcmFnZU9ic2VydmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2ll
U3RvcmFnZSAqKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gY3JlYXRl
KE5TSFRUUENvb2tpZVN0b3JhZ2UgKik7CiAgICAgQ29va2llU3RvcmFnZU9ic2VydmVyKE5TSFRU
UENvb2tpZVN0b3JhZ2UgKik7CiAgICAgfkNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tCmluZGV4IDkxODE3MWM2YjA3MDdhYTA4MDBlOWI4ZGYyOTRi
NDFlMWNmNzg5ZDAuLjVkMjVhZTEwZDJmMWFiYTczODNiNzAzNjIxNmUzNzc5MTY3MmU0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3Rv
cmFnZU9ic2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tCkBAIC03NCw5ICs3NCw5IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVT
dG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KQorUmVmPENvb2tpZVN0b3JhZ2VPYnNlcnZlcj4gQ29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVh
dGUoTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvb2tpZVN0b3JhZ2VPYnNlcnZlcihjb29raWVTdG9yYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
IH0KIAogQ29va2llU3RvcmFnZU9ic2VydmVyOjpDb29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRl
eCBhYTk1NzM3YmU3OWFiZDE0ZjE5YmEyMWI5MjJjY2IxMDE2NTBjNDg4Li4wZjZlYTE5Nzg3YTQ2
Yzc0NzRiNDE2NDhmMjQ1ODQ5NTdiMDBkMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNvZGVkQmxvYkl0ZW1Ub1Nv
dXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAgICAgICAgIGlmIChmaWxl
TW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
ICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCktPnNlY29uZHNT
aW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2Fn
ZSogc291cE1lc3NhZ2UpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9keVNpemUgKz0gYnl0ZXMu
c2l6ZSgpOwogICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVz
c2FnZS0+cmVxdWVzdF9ib2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ5dGVzLmRhdGEoKSwg
Ynl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgRm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGVEYXRhLmZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVEYXRhLmZp
bGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IGM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5
ZTUxZGJjMTIuLjJkN2I2NmQ5Mzc5MDVkY2MyMmY0YTEzZTk1YTBhZjA2YmI0OGI3YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGli
SHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTE2OSwxNCArMTY5LDE0IEBAIGNsYXNzIEh5cGhlbmF0
aW9uRGljdGlvbmFyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
ewogCiAgICAgdmlydHVhbCB+SHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkgPSBkZWZhdWx0OwogCi0g
ICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQorICAg
IHN0YXRpYyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVOdWxsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZShjb25z
dCBDU3RyaW5nJiBkaWN0UGF0aCkKKyAgICBzdGF0aWMgUmVmPEh5cGhlbmF0aW9uRGljdGlvbmFy
eT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSHlwaGVuYXRpb25EaWN0aW9uYXJ5KGRpY3RQYXRoKSk7CiAg
ICAgfQogCiAgICAgSHlwaGVuRGljdCogbGliaHlwaGVuRGljdGlvbmFyeSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IGFjN2NiNjY3YmNlOGEyNzE4YmFjN2RmMTZlNmJjNDkxOGQ0M2RiNzYuLjhlNzRiMDc2OTM1
YWEwZGNjZDdlYTgzN2FjZTY3YjNjZTdjZTE1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1l
bnVXaW4oUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9w
dXBNZW51V2luKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudVdp
bjo6cG9wdXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4g
bV9wb3B1cC5wdHIoKTsKIH0KIAogYm9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCmlu
ZGV4IGU1MDYwYjhhYjliOWZlYWYzNWJmYjhiMzdiMTlhM2NkMTk1NjUxMWUuLjlhN2FlODgyM2M1
YzQzZmY5NDZhNjE1N2FmYzU3YjU5ZGMxNTQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2VhcmNoUG9wdXBNZW51V2luIDogcHVibGljIFNlYXJjaFBvcHVwTWVudSB7CiAgICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBNZW51V2luPiBt
X3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTJiNGQ3NDViOTk3MzNh
YzZhZjBiNWI3MmMzNjBiNmIyZDRiMGE5Yi4uZWUxZTIyNjgzMWNmNjQ5N2MwNGRmM2I1MDc3YWQ3
NTc5ODg1ZTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdFJvdW5kQm9y
ZGVyUmFkaXVzKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyQm94JiBib3gpCiBzdGF0aWMgdm9p
ZCBhcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwor
ICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLjUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVu
Z3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIGRvY3VtZW50LnJlbmRl
clN0eWxlKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgZG9jdW1lbnQuZnJhbWUoKS0+cGFnZVpv
b21GYWN0b3IoKSkpOwogICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVs
cywgMCwgcGl4ZWxzKSk7CiB9CkBAIC05MTcsMTIgKzkxNywxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogCiAgICAg
Y29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGlj
YWxPZmZzZXQ7Ci0gICAgUmVmUHRyPEdyYWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgYXV0byBzdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDB4OGQs
IDB4OGQsIDB4OGQpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENv
bG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQuc2V0
U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9rZUdyYWRpZW50KSk7CiAKICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKQEAgLTkzNywxMCAr
OTM3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRD
b3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVz
c0JhckhlaWdodCAvIDIuOwotICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJHcmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgp
LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0p
OworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6Okxp
bmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpIH0pOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsKIAogICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIApAQCAtOTQ5LDIwICs5
NDksMjAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgLy8gMikgRHJhdyB0aGUg
cHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclBy
b2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZG91YmxlIGJhcldpZHRoID0g
cG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIFJlZlB0cjxHcmFkaWVudD4gYmFyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAg
IGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQsIDIyOCkpOwog
ICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIx
MCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAx
MTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
NTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KGJhckdyYWRp
ZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChX
VEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJh
clN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0
MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3Io
MzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
R3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VHcmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFy
UGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQgb25seSBuZWVkcyB0aGUgZWxlbWVudCdzIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRv
Y3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVudCBzdHlsZQogICAg
IC8vIGFuZCB0aGUgcmVuZGVyIHZpZXcuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpOworICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgx
LjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgZmFsc2UpKTsKICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KExl
bmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCkBAIC0xNzQzLDExICsxNzQzLDggQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
W2luZm8uaWNvbiBDR0ltYWdlXSk7Ci0gICAgaWYgKCFpY29uSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwor
ICAgIGF1dG8gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpY29uSW1hZ2UuZ2V0KCksIGluZm8uaWNvblJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYWJj
OGIyYWI4YmZmYTE5ZjNlYWJkZTRjMDZhOTlkZmJmZTM2OTRjLi4xNTU3NDRkM2ZkZGI3MDQ0MTNi
N2EwNjljYWY1NmJlMzU4NGRjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQyMyw4ICs0MjMsOCBAQCB2b2lk
IHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAvLyBDcmVh
dGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIu
CiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxTVkdGaWx0ZXI+
IGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15
UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwotICAgICAgICBpZiAoYXV0byBidWls
ZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcygqZHVtbXlGaWx0ZXIpKSB7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVt
bXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIGlmIChhdXRvIGJ1
aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKGR1bW15RmlsdGVyLmdldCgpKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAg
ICAgICAgICBpZiAoRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gYnVpbGRlci0+bGFzdEVmZmVj
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggNTY4NzIzODg5Mjc4ZWM3YWIy
NDRiNWM5NWE0ZjZiNWVkMjVkZmY3Ni4uYzI2OWE4NTU5NDZiZWViZDZhMGJlZDkxYThhYWI5MDky
MDRiMmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0zNywxNyArMzcsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRl
KERPTVdpbmRvdyYgd2luZG93LCBSZWZQdHI8U3RvcmFnZUFyZWE+JiYgc3RvcmFnZUFyZWEpCitS
ZWY8U3RvcmFnZT4gU3RvcmFnZTo6Y3JlYXRlKERPTVdpbmRvdyYgd2luZG93LCBSZWY8U3RvcmFn
ZUFyZWE+JiYgc3RvcmFnZUFyZWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZSh3aW5kb3csIFdURk1vdmUoc3RvcmFnZUFyZWEpKSk7CiB9CiAKLVN0b3JhZ2U6OlN0b3JhZ2Uo
RE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1N0
b3JhZ2U6OlN0b3JhZ2UoRE9NV2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9y
YWdlQXJlYSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZ3aW5kb3cpCiAgICAgLCBtX3N0b3Jh
Z2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAKICAgICBtX3N0b3JhZ2VBcmVhLT5pbmNyZW1lbnRB
Y2Nlc3NDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaAppbmRleCA4MzY2YmJjMWI1
OWM3OWY5ZTc1N2RlM2ExM2Y3NTBhMWNiMzc4MjAxLi45ODNlODVhNjJhODY0YzdhNzBkZjE3ZDNh
YTUwMmYyNWY3ZGM5ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogY2xhc3MgU3RvcmFnZSA6IHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+LCBwdWJsaWMgRE9NV2luZG93UHJv
cGVydHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZT4gY3JlYXRlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVh
dGUoRE9NV2luZG93JiwgUmVmPFN0b3JhZ2VBcmVhPiYmKTsKICAgICB+U3RvcmFnZSgpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgU3Rv
cmFnZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2U+
LCBwdWJsaWMgRE9NV2kKICAgICBib29sIGlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5
TmFtZXMoKSBjb25zdDsKIAotICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4g
Km1fc3RvcmFnZUFyZWE7IH0KKyAgICBTdG9yYWdlQXJlYSYgYXJlYSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmFnZUFyZWEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZlB0cjxTdG9yYWdlQXJlYT4mJik7CisgICAgU3RvcmFnZShET01XaW5kb3cmLCBSZWY8
U3RvcmFnZUFyZWE+JiYpOwogCi0gICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VBcmVhPiBtX3N0b3Jh
Z2VBcmVhOworICAgIGNvbnN0IFJlZjxTdG9yYWdlQXJlYT4gbV9zdG9yYWdlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNDA5YTQzM2UxZDVjMWY2ZTJkN2QxOGExMTk3NmQ5YmIyZmZjMjUyYS4u
NTVjNjYyODJiOGJkNjhiYzA0NzgyZGY0N2NhZGVkMGMyMTI5NGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5h
bWVzcGFjZSgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQ
YWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNjljMWIz
MzUzMDhiYmZjZDk3YmE0ODU2NTNlMTZhNmM5NzU5NWM0Zi4uNTkzOWFmZmQzZWIyZjhlZWQ0NmJm
NjJiYWI0YjE1YWViNWU5NWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogICAgIG1fcGFnZXMu
cmVtb3ZlKCZwYWdlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIC8vIFRoaXMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHdh
cyByZXRyaWV2ZWQgZnJvbSB0aGUgRG9jdW1lbnQncyBQYWdlLAogICAgIC8vIHNvIHRoZSBEb2N1
bWVudCBoYWQgYmV0dGVyIHN0aWxsIGFjdHVhbGx5IGhhdmUgYSBQYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMTkxNmNj
YjIyN2VkOTFmNWZmOTI2NDI0ZjAwNjk4Mjk2MmIxYTc2Zi4uZGQ3ZjlhNDZiZDg0NzkyNDljNzRk
MmE0YzIyNDUyOTY0ZTY3YWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCi0g
ICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CisgICAg
UmVmPFN0b3JhZ2VBcmVhPiBsb2NhbFN0b3JhZ2VBcmVhKERvY3VtZW50Jik7CiAKICAgICB2b2lk
IGFkZFBhZ2UoUGFnZSYpOwogICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CkBAIC01OSw4ICs1
OSw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gewogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIFN0b3JhZ2VOYW1lc3BhY2UmIHRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYpOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1
b3RhKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOwogCiAgICAgSGFzaFNldDxQYWdlKj4gbV9w
YWdlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAyNWI5NmJiY2I0NDQ4NjEx
YzczNDViMGNkZmM3YTEwZDk2Y2U1MDYuLjg1ZjZmZjEyZjM4NTVlNzJmMzUxNWNmMzI3YjUzOWI1
ZjNkMDIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEwMTYsNyArMTAxNiw3
IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWF0dHJpYnV0ZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2Rl
KTsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0
cmlidXRlTmFtZShhdHRyaWJ1dGUtPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgYXV0byBjc3NWYWx1ZSA9IHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggOGM2NmQyYzIyMTYwYzQyZWVkNjQwMjljMjdhMmNiNjQ5
MWQxYTU2Yi4uMTY3YTU0N2FjNmQyYzQ0YTY5OTdhNzAxNTE2MmQ3YTc1NDM3OThkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRgogICAgIGlmICghaW5wdXQxIHx8ICFpbnB1dDIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZF
QmxlbmQ6OmNyZWF0ZShmaWx0ZXIsIG1vZGUoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCA1MTVkMzJmZmJjZDdlNTNhN2JiNGY1
OGZkYWI4MjViZjYxYzk3Yjc5Li4zNmU2Njk4YjJjNGI3NWQyY2FiNmE5ZDIzODRmZDBjODU4NzYz
ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKQEAgLTE0Myw5ICsxNDMsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFs
dWVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsIGZp
bHRlclR5cGUsIGZpbHRlclZhbHVlcyk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBl
bmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVj
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDU3ZmFmM2I0NjMw
MDE5NzAzZTNkODdiOWMzMzI0MzI3YzQ3ZGJhYjIuLjAyMzc5OTUyYmRjYjYxNmE4ZjA4M2ZiNDEz
NTdhMzE1NjBhYzg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtODksOSArODksOSBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdAogICAgICAgICAgICAgYWxwaGEgPSBkb3duY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dD4oY2hpbGQpLnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21wb25lbnRU
cmFuc2Zlcjo6Y3JlYXRlKGZpbHRlciwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsK
KyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IGExMGUzYTcyMWNmZWFiZDQ3MjJhYTA5
N2IxZGNmODdlMmMyNWY5YTcuLmE3YTc2ODI5NmQzNGU0MjdlNTAwOWRhZTJhNzhjNDk5YzZmMGIy
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBA
IC0xNDMsMTIgKzE0MywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZQogICAgIGlmICghaW5w
dXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJh
dG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb21w
b3NpdGU6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKTsKICAgICBpbnB1dEVmZmVjdHMucmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQxKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0
Mik7ICAgIAotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCBiOWIwMjNhYzAwNmMwN2VjY2RkMDc3NzQ5ZDI3MjU5MjNkMmJmZDA0
Li5kOWRiMGFjZWI3ZjNlMDQ0Mjg1MjY3M2Y3YjgyYWRjMTkwMDM0NDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTg5
LDkgKzE4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyCiAKICAgICBDb2xvciBjb2xvciA9
IHJlbmRlcmVyLT5zdHlsZSgpLmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5z
dHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpKTsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
c3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBr
ZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExl
bmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92
ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDQzNWZjNzAxZGY2MDdjZjBiMGJkOTZhZDc3MWRi
NWZmYWZkNDRmNTMuLjJiNDJmMzQ0MDgyODllZjliMDkwM2E4YTZiYTVhYzMyNGVjMzU1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlm
ICghaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0
ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoZmlsdGVyLCB4Q2hhbm5l
bFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiAgICAgRmlsdGVyRWZm
ZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlu
cHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJu
IGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNTUwZjY1ZTI3NDNj
ZjFlZDZhNjQ0M2Y5NTFlY2Y0YmI4ZWY4YzU5Yi4uNjk4YTQ4NTRjMWIxNTRlMjkzNThhOWIyYjQ5
YjNmNmVlMjY4ZjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcApAQCAtMTM0LDkgKzEzNCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkCiAg
ICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwor
ICAgIGF1dG8gZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRp
b25YKCksIHN0ZERldmlhdGlvblkoKSwgZHgoKSwgZHkoKSwgY29sb3IsIG9wYWNpdHkpOwogICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVj
dDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDkzMzE4N2U2ZDA0OWE0
ZmVmN2Q3MTRlNmEzOTU2NTExNDFhNGNhMDAuLjk1NDcyZGI3MTg2Mzk3NTAxNzA3N2E2OTMxOTY1
MzQ1YzQxMmYxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWkK
ICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZWRnZU1vZGUoKSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6
Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2Rl
KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA1MDJhOTkxOTNjODliMGY3ZTkx
YjgxMTliOTZiZjVkYzg3NDM1Yjg5Li5lZmE3N2RlMmMxYmJkNTg2MjVlNTZmODRhYzNlNTNiZjRk
MGY5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVmPFNWR0ZFTWVyZ2VFbGVtZW50PiBTVkdGRU1lcmdlRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIAogUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciYgZmlsdGVyKQogewotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFTWVyZ2U6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVNZXJnZTo6Y3Jl
YXRlKGZpbHRlcik7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBtZXJnZUlucHV0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7CiAKICAgICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVu
T2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxlbWVudD4oKnRoaXMpKSB7CkBAIC01OSw3ICs1OSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKG1lcmdlSW5wdXRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVy
biBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCBmY2JjNjNiNjJlNmUxMDZlYmI1ZDU2MjA5ZTNmNTI5
OWQ4YjBiNmZjLi43YTRjZDA4MmQ1NDE1OWFhZjUyNTAwMmRhOTQ2MGViYTFkOWVmMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0xNDUs
OSArMTQ1LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoeFJhZGl1cyA8IDAg
fHwgeVJhZGl1cyA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVy
YXRvcigpLCB4UmFkaXVzLCB5UmFkaXVzKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFTW9ycGhvbG9n
eTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgeFJhZGl1cywgeVJhZGl1cyk7CiAgICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0
OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMjgyMzY5
ODRmNDFhNWJhMmZhNjIzNTE2YmJmNzA0MWFhZGJkMDIyMi4uODg1MjcxMWE1YTZhNmQ0NDMzM2M0
ZTcxZTZlM2IyMTNhMGE1N2RjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZz
ZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLAogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKKyAg
ICBhdXRvIGVmZmVjdCA9IEZFT2Zmc2V0OjpjcmVhdGUoZmlsdGVyLCBkeCgpLCBkeSgpKTsKICAg
ICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZl
Y3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDNhMmY0
ZDIzZjk3M2Q1N2IxY2RjNjlkZGUyMTc3Mzc4NzNkMGNmZTcuLjgxZWY0NTc2ODY5NzE3YTY5ZTlk
ZWI2ZTY0OTVkYTUxMTc0Y2MyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE5OCw5ICsxOTgsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZQogICAgIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUo
KS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0g
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IHNwZWN1bGFyQ29uc3RhbnQoKSwgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJm
YWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDNmMzg3OWQ3ZTY2YThjMWRkZjk5MjMy
NjNiN2ZlMDA2MjU0ODkyNDQuLmUzY2Y1YWRjZjRmNjQ5N2Q3MzZiY2RiN2I2YzJlYmVhZjFmMGU4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTgxLDkgKzgx
LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVRp
bGU6OmNyZWF0ZShmaWx0ZXIpOworICAgIGF1dG8gZWZmZWN0ID0gRkVUaWxlOjpjcmVhdGUoZmls
dGVyKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9HQ09ic2VydmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAppbmRleCA4NmQ5NThmNTc2MDUxYjgwN2UwNTFj
MTVhZWEwYmE2NTFiYjRmYjFiLi5hZTExOGVmOWRkZmI4MDQ3NWUzZGY1NDAzMDc0YTVhN2NkODY0
NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDT2JzZXJ2YXRpb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxHQ09ic2VydmF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxH
Q09ic2VydmF0aW9uPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDT2JzZXJ2YXRpb24oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNDb2xsZWN0ZWQoKSBj
b25zdCB7IHJldHVybiAhbV9vYnNlcnZlZFZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggYTliMTc1MTk2OTJlZGIzY2RjNmE0ZWNmOGY0MzVmZGYyYzNiODQ1Zi4u
OTkwMTdhYmViNTk5MzNjMzBlYWMwMmU2ODJjNTI0NmIyMDE3Yzk1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlZjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQuY29weVJlZigpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CisgICAgYXV0byBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVy
LT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6
IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29k
aW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKFdURk1vdmUoZGVjb2Rl
cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCmluZGV4IDFmMjhhOGViYTU5ZGYxZTZlMjFmY2M4NzVlMGY0OTBiYWE2MDg4NWYuLmI0MjUw
YTAyY2ViZjkwZTJhY2MzZWRiMzc0OThhYTQ4ODE4MWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAg
Ym9vbCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgY2h1bmssIERvY3VtZW50RnJhZ20KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFhNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cisg
ICAgYXV0byBwYXJzZXIgPSBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgYm9vbCB3ZWxsRm9ybWVkID0g
cGFyc2VyLT5hcHBlbmRGcmFnbWVudFNvdXJjZShjaHVuayk7CiAgICAgLy8gRG8gbm90IGNhbGwg
ZmluaXNoKCkuIFRoZSBmaW5pc2goKSBhbmQgZG9FbmQoKSBpbXBsZW1lbnRhdGlvbnMgdG91Y2gg
dGhlIG1haW4gZG9jdW1lbnQgYW5kIGxvYWRlciBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhl
IGZyYWdtZW50IGNhc2UuCiAgICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVu
dFBhcnNlciB0byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDZkNGEwZWY0ZDZkYmZkNzY3MzBjMDRkNzhkMGJhNWM5YjljZWRiN2YuLjM2NmI5
ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDksNyAr
NDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIElQQzo6Q29ubmVjdGlv
biogY3VycmVudENvbm5lY3Rpb247CiAKLVJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCitSZWY8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDMyMWEwODM4NjkzODZjNGZi
ZjVmMjhkMDdlZDJkZDY0NDFjMjk1YzUuLjNhMGE3YTg5NzllMzMxN2QzNzcyNjhmOGU2OTAyNGVh
MmQ2MmNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggYjlmYzg5NTBm
YTMzY2E1NmY5YTY1MDlmNmEyZTFhOGMwYWY5ZGExNy4uYzc2NDk2YjczMTI0NjdjMzY2MDYyZmFl
ZWM0NzcyNjllM2FlOGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb25uZWN0aW9uLm1tCkBAIC0xMDMsOCArMTAzLDggQEAgLSAodm9pZClzZXREZWxl
Z2F0ZTooaWQgPFdLQ29ubmVjdGlvbkRlbGVnYXRlPilkZWxlZ2F0ZQogCiAtICh2b2lkKXNlbmRN
ZXNzYWdlV2l0aE5hbWU6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgYm9keTooaWQpbWVzc2FnZUJv
ZHkKIHsKLSAgICBSZWZQdHI8V2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg+IHdrTWVzc2FnZUJvZHkg
PSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKLSAgICBzZWxm
Ll9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3NhZ2VOYW1lLCB3a01lc3NhZ2VCb2R5LmdldCgp
KTsKKyAgICBhdXRvIHdrTWVzc2FnZUJvZHkgPSBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3Jl
YXRlKG1lc3NhZ2VCb2R5KTsKKyAgICBzZWxmLl9jb25uZWN0aW9uLnBvc3RNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCB3a01lc3NhZ2VCb2R5LnB0cigpKTsKIH0KIAogLSAoV2ViS2l0OjpXZWJDb25uZWN0
aW9uJilfY29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYjliZWQxZGU5NGVmNzE3NmMzZmViZGFjYzE3ZTRkYzRlMWRlYWE3
Zi4uZDE0YmQ5ZDJiN2ViMzJiM2UxOGRmZWYzMmQwNDM1YzkyM2RiNzE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTM0LDcgKzEx
MzQsNyBAQCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAg
PSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBhdXRvIGJpdG1hcCA9
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gYml0bWFwID8gYml0bWFwLT5tYWtlQ0dJbWFnZSgpIDogbnVsbHB0
cjsKICAgICAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCkgc2l6ZTpOU01ha2VTaXplKHNu
YXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0KV0pOwogICAgICAgICBoYW5kbGVyKG5zSW1hZ2UuZ2V0
KCksIG5pbCk7CkBAIC0yMDYzLDggKzIwNjMsOCBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiAjaWYgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1Ip
CiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgY29tcHJlc3NlZEZvcm1hdCA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI7CiAgICAgaWYgKFdlYkNvcmU6OklPU3VyZmFj
ZTo6YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KHNuYXBzaG90Rm9ybWF0LCBjb21w
cmVzc2VkRm9ybWF0KSkgewotICAgICAgICBSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHZp
ZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7Ci0gICAg
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSks
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3RdKHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IGNvbnZlcnRlZFN1cmZhY2UpIHsKKyAgICAg
ICAgYXV0byB2aWV3U25hcHNob3QgPSBXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxw
dHIpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3Zl
KHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBz
aG90ID0gdmlld1NuYXBzaG90LmNvcHlSZWYoKV0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklP
U3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFN1
cmZhY2UpCiAgICAgICAgICAgICAgICAgdmlld1NuYXBzaG90LT5zZXRTdXJmYWNlKFdURk1vdmUo
Y29udmVydGVkU3VyZmFjZSkpOwogICAgICAgICB9KTsKQEAgLTU5MDIsNyArNTkwMiw3IEBAIC0g
KHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRvSW1h
Z2VPZldpZHRoOihDR0Zsb2F0KWltCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgICAgICBpZiAoIWJpdG1hcCkgewogICAgICAg
ICAgICAgY29waWVkQ29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwCmluZGV4IDAwN2QxMTFiYWQwN2IwMzBjYjlhODBhMzdhYWNjOTViMjVmOTNjNDIu
Ljk1YjAyZTgzZWVjMDEwMDc4NTc1OWYwZmQ2YjI4ZDVjZmZmOWNlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGludCB0aW1lc3RhbXAsIGRvdWJsZSBsYXRp
CiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07
CiAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CiAgICAgY29yZVBvc2l0aW9u
LmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OwotICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsKKyAgICBhdXRvIHBvc2l0aW9u
ID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7
CisgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9z
aXRpb24ucHRyKCkpOwogfQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlm
eUVycm9yT2NjdXJyZWQoY29uc3QgY2hhciogLyogbWVzc2FnZSAqLykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
N2FmYTc5YzYxZWJjYzAyZWNmYjhlZjk5YmRkZGUxMzc1ODYyNDEzMy4uYmNlODA1OGU1OWU2Mzg3
MDQyZGNkMjY4ZmExOTkzYTZjZDRiNzRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE0NTUsOCArMTQ1NSw4
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2FsbG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9z
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX1RM
U19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoaG9zdCk7
CiAKLSAgICBSZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiB3ZWJDZXJ0aWZpY2F0ZUluZm8gPSBX
ZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oY2VydGlm
aWNhdGUsIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkpOwotICAgIGNvbnRl
eHQtPnByaXYtPnByb2Nlc3NQb29sLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3Qod2ViQ2VydGlmaWNhdGVJbmZvLmdldCgpLCBTdHJpbmc6OmZyb21VVEY4KGhvc3QpKTsKKyAg
ICBhdXRvIHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRp
ZmljYXRlRmxhZ3M+KDApKSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8ucHRyKCks
IFN0cmluZzo6ZnJvbVVURjgoaG9zdCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYxNWJhNjhkMWRmZGNhMDA1NmNjNmNkZGYyN2Nm
NmQ3MmQxMTYxZDEuLjZhMGQ2NWJmMDE4MTI1YTVmNWM5MDNhMjU3MTY1OGM1MGY2Yjg0ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0
b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCA2N2YxMjIyYTc0NmM2
NzJjNjg3ZDJhZmJkMjc4YzFkYjUzODk4YmNiLi5jNTIyNDViNWYwOWUxZTgyODA0ZTE4OTFmZDU0
OTkyMGY4ZDdiNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1t
CkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2Rl
ZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRh
SGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzg4MzY0MmI1ZGM1MDZiNjI3NjUxMGI3MzQ4NWZj
ZDQ2NjJlZjQ4MS4uNWZkNWFmNDliNGNkNTdhZWFmZjE2ODZjYWFjZTRhZTUxMzJmYjk2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogewogICAgIEFTU0VSVChtX3NpemUgPT0gdXBkYXRlSW5mby52aWV3U2l6ZSk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUodXBkYXRlSW5mby5iaXRtYXBIYW5kbGUpOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBmNWVlNGRmMTgwNDNkM2I1YTY0YjEw
ZDRjMmU2Mzc0MGQ5OTM5NzcyLi4zMTNlMTQ1NzM1NWFmOTc5ODVkNmI1NjBhMTY3OTZiYTRiYjRi
NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC03NDAsOSArNzQwLDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGEKIAogc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihX
S1dlYlZpZXcgKndlYlZpZXcsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIE5TRXJyb3Ig
Km9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgUmVmUHRyPEFQSTo6RnJhbWVIYW5kbGU+IGZyYW1lSGFu
ZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsK
KyAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1l
UHJveHkuZnJhbWVJRCgpKTsKIAotICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5T
KFtbV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3IGZyYW1lSGFuZGxlOndyYXBwZXIoKmZyYW1lSGFuZGxlKSB1cmxTdHJpbmc6
b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
XV0pOworICAgIGF1dG8gcmVjb3ZlcnlBdHRlbXB0ZXIgPSBhZG9wdE5TKFtbV0tSZWxvYWRGcmFt
ZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3IGZy
YW1lSGFuZGxlOndyYXBwZXIoZnJhbWVIYW5kbGUuZ2V0KCkpIHVybFN0cmluZzpvcmlnaW5hbEVy
cm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5nRXJyb3JLZXldXSk7CiAKICAg
ICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6cmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCksIF9XS1JlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXksIG5pbF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IDlk
Nzc0MTBjMDljMWI3MTE1YTQwNDFkMjk3YmI0NTY4MzhlYWU5NjAuLjY0YTM1ZjdlODc5ZGIwM2Rj
MGJmODc3MjIxNDRjMjJiZmYzZDllY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0xNzEs
NyArMTcxLDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJs
aWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbEMKIAogY2xhc3MgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYpOwogICAgIHZpcnR1YWwgflBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggNGM4ZmNiZjhlZjcyZTA1MWU4YTIyOTFiNWY0ZjE2ZmZkYzAyNzA2Ny4uODY3N2EwNDFjNzBk
MTFiOTc2OThjNDdlYzJiNzlhZGYzMWQ5MDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpA
QCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwaWN0
dXJlSW5QaWN0dXJlQWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkKIAogI3ByYWdtYSBtYXJrIC0g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5CiAKLVJlZlB0cjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK1JlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsKIH0K
IAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCBhOTI5OWYx
Yjc0NjliMDNhZDIzNDYyNGJjZDBiMzU2YmM5MjhiNjkyLi4yOTdmOTY4YjM1MjllMGMzNTVjZDRk
YjFhODk5YzIwZThjYzkwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTE5LDcgKzEx
OSw3IEBAIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbAogCiBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOworICAgIHN0YXRp
YyBSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Jiwg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7CiAgICAgdmlydHVhbCB+VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBhNDM4ZmU3MWE4NmQzMjcyODVhZWY1MjEyZmYzNTYxMjY0MjU2ZDE2
Li40Y2YzMGJmMzMxZTc5NDIxZjIzOWNjYTU5NjMxMTM5MmY4ZjVhODMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0zMTQsOSArMzE0LDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIAogI3ByYWdtYSBtYXJrIC0gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5CiAKLVJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkpCitSZWY8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKIH0K
IAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTcxMGRmMTljNDI2
NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIyM2RjMi4uMWRhZDcwNGVjOTk2YjFlZjlkNGMxYTk5YjE3
MGJmNzYyM2QzNjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwotICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIo
KSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVt
YmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVy
T2ZGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMTUzNjUwODQwYTAwMzZiMzM2MGQ0MDc5NDQ4ZWUwNzA1OWEzMTNiMi4uYzRiNDc0NDI3
MmUxYjAzOGQ3MmZmM2RjZDhjYTNjYzgzZGRhYWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQzNzQsMTAgKzQzNzQsMTAgQEAgUmVmUHRy
PFZpZXdTbmFwc2hvdD4gV2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Vmlld1NuYXBz
aG90PiBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwor
ICAgIGF1dG8gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2Up
KTsKICAgICBzbmFwc2hvdC0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAKLSAgICByZXR1cm4gc25hcHNo
b3Q7CisgICAgcmV0dXJuIFdURk1vdmUoc25hcHNob3QpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBs
OjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRl
eCA3NTA5ZGRlZGI0YzA4ZTZiZTg1NGJiN2NlZjcyNWE5NzlkODBkY2VlLi44NmRjMDljMzQxZGE3
ZjZlYzQxYzZhODJhMzcxZjE3MjcxZjY4YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCkBAIC00NiwxMiArNDYs
MTIgQEAgRG93bmxvYWRQcm94eU1hcDo6fkRvd25sb2FkUHJveHlNYXAoKQogCiBEb3dubG9hZFBy
b3h5KiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7Ci0gICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2FkUHJveHkgPSBEb3du
bG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwot
ICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2Fk
UHJveHkpOworICAgIGF1dG8gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgq
dGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CisgICAgbV9kb3dubG9hZHMuc2V0
KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgZG93bmxvYWRQcm94eS5jb3B5UmVmKCkpOwog
Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRv
d25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuZ2V0
KCkpOwogCi0gICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7CisgICAgcmV0dXJuIGRvd25s
b2FkUHJveHkucHRyKCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eU1hcDo6ZG93bmxvYWRGaW5p
c2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDc5NjU4NjhiZTA0MzM5ZTc4NDlmNGRkMzQ0MmM2NGRj
OTU2ZTY2OGMuLmZhZTFmM2ZjYTg4ODcxOWJlN2Y2MjcyZDIwNTcyMGJiODkwMTc3ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTk2LDExICs5NiwxMSBA
QCBIYXNoTWFwPFN0cmluZywgYm9vbD4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29u
c3QgU3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyLCBjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQogewog
ICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCgpOwotICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IFdl
Yk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRp
ciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgYXV0byBub3RpZmlj
YXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFn
LCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIHN0
ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFr
ZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbikpOwotICAgIG1f
cHJvdmlkZXItPnNob3coKndlYlBhZ2UsICpub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0
aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmlj
YXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOworICAgIG1fcHJvdmlkZXItPnNob3co
KndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCAwMjVjOWM2Y2Y1NmNmMjU0MzQ4NzZmZGJkMTY2ZjE0YzA4ZjgxNTM0Li40NzA4ODEwMGVl
MzFkMDdhNjZkN2U5MTU4ZTQ5OTU4YjhkZjg1OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2NDksMTAgKzM2NDksMTAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAKICAgICBNRVNTQUdFX0NI
RUNLKG1fcHJvY2Vzcy0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJRCkpOwogICAgIAotICAgIFJlZlB0
cjxXZWJGcmFtZVByb3h5PiBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhpcywg
ZnJhbWVJRCk7CisgICAgYXV0byBzdWJGcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSgqdGhp
cywgZnJhbWVJRCk7CiAKICAgICAvLyBBZGQgdGhlIGZyYW1lIHRvIHRoZSBwcm9jZXNzIHdpZGUg
bWFwLgotICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsICpzdWJGcmFtZSk7Cisg
ICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgc3ViRnJhbWUuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90IGZyYW1lSUQsIEds
b2JhbFdpbmRvd0lkZW50aWZpZXImJiB3aW5kb3dJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGZhNDNhM2QxZTc4MzA5MmJiN2MwMjE4
MTQ3ZmQxNjRmODI3YjAzYzAuLjllM2Y0MDRiZDZlNmFiYjNhYjI0MzlhYmE3MjdjNmI1YzM5YmVm
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE3
MTMsNyArMTcxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMy
X3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQSTo6CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+IHJlcXVlc3QgPSBTdGF0aXN0
aWNzUmVxdWVzdDo6Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBTdGF0aXN0aWNzUmVxdWVzdDo6
Y3JlYXRlKERpY3Rpb25hcnlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpKTsKIAogICAgIGlmIChzdGF0aXN0aWNzTWFzayAmIFN0YXRpc3RpY3NSZXF1ZXN0VHlwZVdl
YkNvbnRlbnQpCiAgICAgICAgIHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhyZXF1ZXN0Lmdl
dCgpKTsKQEAgLTE3MjIsMjAgKzE3MjIsMjAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3Rh
dGlzdGljcyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAg
ICAgICAgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKHJlcXVlc3QuZ2V0KCkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGlj
c1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0V2ViQ29udGVu
dFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8vcHJvYmxlbS8xMzIwMDA1OT46IE1ha2UgZ2V0dGlu
ZyBzdGF0aXN0aWNzIGZyb20gbXVsdGlwbGUgV2ViUHJvY2Vzc2VzIHdvcmsuCiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVx
dWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3JraW5nU3Rh
dGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3b3JrUHJv
Y2VzcyBzdGF0aXN0aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFibGUiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVl
c3QtPmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOwotICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNl
dChyZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3Qu
YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CisgICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJl
cXVlc3RJRCwgJnJlcXVlc3QpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MocmVxdWVzdElEKSwg
MCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA2
MzQzMjQ5YmFhNzI1YWZiNmNiNDQ0YzU1MjMyNTNkMTdlMDgwYmMuLmU2YjQ0NGU5MTQyN2I5NmNh
YTg4NDNhZWIzZmEyMjdjZGQ3YjU0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtNDg3LDggKzQ4Nyw4IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFs
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAg
ICAgV2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUm
LCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdh
cm1lZDo6Tm8pOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCi0gICAgdm9pZCByZXF1ZXN0V2ViQ29udGVudFN0
YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKLSAgICB2b2lkIHJlcXVlc3ROZXR3b3JraW5n
U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOworICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRl
bnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CisgICAgdm9pZCByZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBh
Z2VQcm94eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcAppbmRleCA1ZTNmYjY1YzIzMGRiZDg0ZGFlMzcwMmRk
NmRkZjdkMjUzMjQwODlkLi5lM2FlNTE0YjAzN2NlOGY4ODA0OThhZmUxMmExZjllYzMxYmE2NmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVBy
b3h5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pCiB7
Ci0gICAgUmVmUHRyPEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q+
IHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Ojpj
cmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2NyaXB0aW9uKTsKLSAgICBpZiAocGFnZUNsaWVudCgp
LmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVl
c3QoKnJlcXVlc3QpKQorICAgIGF1dG8gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24p
OworICAgIGlmIChwYWdlQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRp
YVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgcmVxdWVzdC0+ZGVueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggODUxNjQz
NzBmN2I1MWJmYjA5MTBlYTAwNDFkYmUxMDE0NDI3Zjg2My4uOTJlYWQwNDVlOGI4ZmMyZTRiOTkz
NDQyNmJkMTBhNGE4ZTU5ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC01MywxOCArNTMs
MTggQEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewogICAgIEFTU0VSVCghbV93ZWJWaWV3KTsKIAot
ICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVs
b3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91
dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0TG9nc1BhZ2VNZXNzYWdlc1RvU3lz
dGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3Vw
PiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVu
dGlmaWVyRm9yUGFnZShudWxscHRyKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3Jv
dXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShudWxscHRyKSk7
CiAKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0
b3JQcm9jZXNzUG9vbChpbnNwZWN0b3JMZXZlbEZvclBhZ2UobnVsbHB0cikpKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKICAgICBtX3dl
YlZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCpwYWdlQ29uZmlndXJh
dGlvbi5wdHIoKSkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlZpZXcsICJk
ZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVkKSwgdGhpcyk7CiAgICAg
Z19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX3dlYlZpZXcpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggYjY0ZTMzNTkyOTJiM2Zl
ZWNmN2U3MmVhYjMwZTBhNmE3MTlmZDM0Yy4uY2ExODdhNjQyMzQxMTJlODU3OWJkODYxNjJkOWI4
M2ZiNDI5YzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
SW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogICAgIEFTU0VS
VChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKIAotICAg
IFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3Bl
cnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBj
aGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZl
cmVuY2VzLT5zZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsKICAgICB9KTsKLSAgICBSZWZQdHI8
V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQ
YWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZp
ZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVs
KCkpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMu
Z2V0KCkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdl
dCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMu
cHRyKCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0
cigpKTsKICAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCpwYWdlQ29uZmlndXJhdGlvbi5wdHIoKSkpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFr
X3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9y
VmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCmluZGV4IGMxY2Y1ODc1OGVjYmE5ODU3YTBhNjFhZDQ4ZDZiZmEzZTFj
MGQ3ZjMuLjlhNDdlMjY0OWY2OTNjZDJiM2I1NWNlYzIwZTE3M2MyZmI0YjEzYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0
aW9uR3JhbnRlZAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZy
YW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewogICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVS
TChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPFdL
RnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJl
cXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOwotICAgICAgICAgICAg
UmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdl
YktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBz
ZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZy
YW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICAgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1
ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwogICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6dmlld0Zyb21SZXF1ZXN0IHJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6
cmVxdWVzdEZyYW1lVVJMIGZyYW1lOmZyYW1lSW5mby5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUo
Y2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCAxMTIzNWExMjdlMjc3YTAx
ODc2MDM4Yzk3NDZmN2Y4ZWQyY2NiYTMxLi45ZmVmZmRkZjQxMDQxMmU3NmQyYzBjM2RmZDY3YmYx
ZTFiZDJiMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCkBAIC0zODQsOSArMzg0LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQK
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlcikKIHsKLSAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciks
IHRydWUpOwotICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UuZ2V0KCks
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZm
ZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKKyAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGltYWdlLnB0cigpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNp
YmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OnVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggY2Jm
ZTMwZTllMGJlODMyMTUxODE5NjM1NWY3Nzk4MDhiODI0ZjJmNi4uMzc5OGJmYmI1YTljNDE0ZjYw
ZmRjM2NiZWE5YzdjMGRiM2UwMjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2Uo
KQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0gICAgUmVmUHRyPFdlYlByZWZl
cmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRo
ZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdz
LgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAt
MjAwLDExICsyMDAsMTEgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMtPnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNj
cmlwdFJ1bnRpbWVGbGFncyh7IH0pOwotICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91
cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQ
YWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFn
ZSgpKSk7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgmaW5z
cGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdGlvbkxldmVsKCkpKTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwotICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLmdldCgpKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMucHRyKCkpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwLnB0cigpKTsKIAogICAgIFdLUGFnZU5hdmln
YXRpb25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50ID0gewogICAgICAgICB7IDAsIHRoaXMgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCmluZGV4IDgyNTA5MDE3OTAwZjQ3ODk0NDllYzVkZWZj
NzEyOGExNzVjNjY5OTcuLjkzMTM0M2ViMWJiODczMmVhNWQzYjU0MjRjNTMwNmM4NDYyZTlhYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQpAQCAtNTAsOCArNTAsOCBAQCAtIChpZClfaW5p
dFdpdGhJbXBsOihXZWJDb3JlOjpSYW5nZSopaW1wbAogCiAtIChpZClpbml0V2l0aERvY3VtZW50
OihXS0RPTURvY3VtZW50ICopZG9jdW1lbnQKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dlYkNvcmVEb2N1bWVu
dChkb2N1bWVudCkpOwotICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBsOnJhbmdlLmdldCgp
XTsKKyAgICBhdXRvIHJhbmdlID0gV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSgqV2ViS2l0Ojp0b1dl
YkNvcmVEb2N1bWVudChkb2N1bWVudCkpOworICAgIHNlbGYgPSBbc2VsZiBfaW5pdFdpdGhJbXBs
OnJhbmdlLnB0cigpXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5OWYz
NTcwZDBlMzBiYWRmZTAxZGFjZmRiM2ZhZjQ1MGU3Y2FlNmYuLjhjMjk1YmFlYmZiYTJlMDZiNWI3
NjE4NTViZjJlZDk4Mjk5ZmVkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0
aW9uCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gcGFpbnRSZWN0LnNpemUoKTsKICAg
ICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiYWNraW5nU3RvcmUgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAg
IGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMWEzMTIzM2U2
ZmM5ZTI4MThhMmZjZmEzMDE5MWE1ZmExNTc4OGI1Li45NTEyMzAyYjI4MmU0MWVkMWIyNDcxOWEy
ZDA0NDhkYzc0N2ZmZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIFJh
CiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAog
ICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpE
YXRhPigpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwotICAgICAgICAg
ICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Cisg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3Bw
CmluZGV4IGVjMDk4NjdiZjAzOGVlNThjOWZlMmQzODc0MDY0ODlkNjYzYjhkOGUuLjZlMjgyZDll
MGI5MGIyOTBlYWEwODk4N2E0MmI4Zjg5OGNhOWIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IEhpCiAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4g
aGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVI
aXRUZXN0UmVzdWx0KTsKKyAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CiAKICAgICBXS1R5cGVSZWYg
dXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJz
KSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xp
ZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVz
dWx0LnB0cigpKSwgdG9BUEkobW9kaWZpZXJzKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRh
VG9QYXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBjNmE1MDY5MTc0MGE1
ZGIzZTY1ZjE5NzU3MWI3YmQ0MDA1YmI3MWEwLi44OGMwYTJkOWM2MzEyZDJjMGVhMDZhNTU3ZjVh
MDFlMmMzOWE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NTEsNyArNzUxLDcg
QEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAg
ICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBtX3BsdWdpblNpemU7CiAgICAgYmFja2luZ1N0
b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKCkpOwogCi0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFj
a2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAgYXV0byBjb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVhbGx5IGNhbGwgYXBwbHlEZXZpY2VTY2FsZUZhY3RvciBpbnN0ZWFkIG9mIHNjYWxl
LCBidXQgdGhhdCBlbmRzIHVwIGNhbGxpbmcgaW50byBXS1NJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBjMmNiYTA5MGZiYmRi
MmQ5YTE5MGIxYWZmOGZlMzU1Y2Q2ZmMzMjY0Li4wMTk5Yjg0ZjhmNGUyOGY3NjlhNzQyMTk1MTg4
OTEzMWRjODc3NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIFBERlBsdWdpbjo6YWRk
QXJjaGl2ZVJlc291cmNlKCkKICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOm1fc291cmNl
VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOihOU1N0cmluZyopa0NGSFRUUFZlcnNpb24x
XzEgaGVhZGVyRmllbGRzOmhlYWRlcnNdKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHN5bnRoZXNp
emVkUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpOwogCi0gICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygp
LCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSks
IG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50
aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCkt
PmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBs
dWdpbjo6c25hcHNob3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHNpemUoKTsK
ICAgICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCi0gICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CiAgICAg
YXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yLCAtY29udGVudHNTY2Fs
ZUZhY3RvcikpOwpAQCAtMTg1MywxMSArMTg1Myw3IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0
ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMs
CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHBsYWluVGV4dFN0cmluZyA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIHBsYWluVGV4dFN0cmluZy5n
ZXQoKSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdG
b3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7Ci0KLSAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5
LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAzMTQ3OWFmYzI5YWRmNGFjODUyYmIzY2UzZDgz
YzQxMjkyNDdiZmMwLi42NThlY2Q5ZDIzNzg5MDRiMzQ3ZDBkM2E2ZjQ2N2U5NDRkMmYwNzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTg0LDggKzg0LDggQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICBpZiAoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRp
ZmllcklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBy
b2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24pOwotICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgYXV0byBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlv
bik7CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNvcHlSZWYoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CkBAIC05NCw3ICs5NCw3IEBAIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0CiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdp
blByb2Nlc3NUb2tlbiwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmdldCgpOworICAgIHJl
dHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5wdHIoKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA4ODVmY2Ez
ZTE0Y2YwNmQwNWM3NGIwM2JiOTRmM2FiYjZiYzkxZDE2Li45NzBlYTFmZTdjYTk2NDVkZDljNzc3
Y2NkNWUzNjJhNjZkZWFkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yNDcsOCArMjQ3LDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gUGx1Z2luUHJveHk6OnNuYXBzaG90KCkKICAgICBpZiAoc25hcHNob3RTdG9yZUhh
bmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBzbmFwc2hvdEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNu
YXBzaG90U3RvcmVIYW5kbGUpOwotICAgIHJldHVybiBzbmFwc2hvdEJ1ZmZlcjsKKyAgICByZXR1
cm4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7CiB9CiAKIGJv
b2wgUGx1Z2luUHJveHk6OmlzVHJhbnNwYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NDk1Yzk5MTEyMmQwODQzZGFiMGM4
NGRhNjBiYTVhN2M5N2JhNmM4Li41OTJhNDg3MTUwZWQ3YWY4ZWVlODUyNzAwNmNlZWJjOWMzNzFl
ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVx
dWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIH0KIAogICAgIC8vIFRoaXMgcmVxdWVzdCBp
cyB0byBsb2FkIGEgVVJMIGFuZCBjcmVhdGUgYSBzdHJlYW0uCi0gICAgUmVmUHRyPFN0cmVhbT4g
c3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdC0+cmVxdWVz
dElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Ci0gICAgYWRkU3RyZWFtKHN0cmVhbS5nZXQoKSk7
CisgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1
ZXN0LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICBhZGRTdHJlYW0oc3Ry
ZWFtLnB0cigpKTsKICAgICBzdHJlYW0tPnN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggYjMxYjExN2YwZWRhYjM5OGIyNTEyNDA2NGUxNjIyN2ZhZjc4NjI1NS4uNzhlNjcz
NTQwNzFiMzY1NDcwMGYxNmY0MGVjYWZkOTk1NmU2MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTcxOCw4ICs3MTgsOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogICAgIGF1dG8g
Y3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJl
bnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNl
Y3VyaXR5T3JpZ2luKCkpOwotICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlD
bGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBj
dXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0
ZWRVc2FnZSgpKTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmln
aW5EYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgbmV3
UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNl
UXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIGRhdGFiYXNlTmFtZSwgZGV0YWls
cy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWls
cy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwogCiAgICAgaWYgKCFu
ZXdRdW90YSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYygKQEAgLTczNyw4ICs3MzcsOCBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7Ci0gICAgUmVmUHRyPEFQSTo6
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7Ci0gICAgaWYgKG1fcGFnZS5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1f
cGFnZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRvdGFsQnl0ZXNOZWVkZWQpKQorICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpbi50b1N0cmluZygpKTsKKyAgICBpZiAobV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQo
KS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgmbV9wYWdlLCBzZWN1cml0eU9y
aWdpbi5wdHIoKSwgdG90YWxCeXRlc05lZWRlZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8mIGNhY2hlU3RvcmFnZSA9IG1fcGFnZS5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZDA1ZmM5OTZjMWQ0
ZWQ5Zjc1NmZjODg1ZTkzY2Q2NWIyYzQ1ZDAyYy4uMWY5MWU4Y2ZjNGEwNTlmOWVmNzgxZTE0NjEx
MDk4NzNhMzcxMzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03Njcs
MTAgKzc2NywxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogCiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1f
ZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CisgICAgYXV0byBhY3Rpb24gPSBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9u
QWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50Lgot
ICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdl
LCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpOwor
ICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdl
LCBtX2ZyYW1lLCBhY3Rpb24ucHRyKCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpOwog
ICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7CiAgICAgICAg
IGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmOWIwY2VlZjljZjBiZmFmMzRmNjRkYThiMzE2
MDc4NDcxNDJhMGEzLi4xNjU0MmZiOTA2MTVjMzIzN2YxNTc3YzM2Mjk5NDIzYjdjYjhmMzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0CiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlOjpSZXBseShwYXRobmFtZXMsIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpLCAwKTsKICAgICBBU1NFUlQocGF0aG5hbWVzLnNpemUo
KSA9PSBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQorICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAgICAgICAgICAg
ICBleHRlbnNpb24tPmNvbnN1bWVQZXJtYW5lbnRseSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IDg3MTYxMjBmNzFkY2Y5YWMyM2Q4ZDEzZWJkZjkzYzY3
ZGYzM2Q4OTYuLjE4NjdjOTg0OTA1YzkyMDBlMDIyZGUzNmI4ZDA2NWVmZmYyNDRmMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJh
Z0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFw
KGNhaXJvX3N1cmZhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgaW1h
Z2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
eyB9KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LT5oYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggZmZl
ZTJhNjQ2Y2M2ZTg5ZjI0MzNmM2E0N2ZlN2Y2NDczNDdhODAyZS4uZjg3ZDkzNDQzZjdjNThhODJj
NDM2M2YwMzRhMDA2MDEzYjZhYTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpA
QCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgICAgICAgICB0
aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAgICB9CiAKLSAgICBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShlbGVt
ZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVu
dCk7CiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5z
VVJMUmVzcG9uc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCBhMzhjZDJiZjYzNzk0YzhlOWYx
ZDIxMmEzZTc4YjNlOGM0ZWY4YzZiLi44Y2U1NjVmYjk1NmYzNmNiNzUyZWY4MTFhMTI0NWViNTVk
ZGNmOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgRGljdGlvbmFyeVBvcHVw
SW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBS
YW5nZSYgcmEKICAgICBpZiAocHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9PSBUZXh0SW5kaWNhdG9y
UHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKQogICAgICAgICBpbmRp
Y2F0b3JPcHRpb25zIHw9IFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRoU2Vs
ZWN0aW9uSGlnaGxpZ2h0OwogICAgIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBpbmRpY2F0b3JP
cHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3Ig
PSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGluZGljYXRvck9wdGlvbnMs
IHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogICAgIGlmICghdGV4dEluZGljYXRvcikgewogICAg
ICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAg
ICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggNzgyNGU1Y2Y3MWI0
N2RiMDllZWEzNWE3NjlmYTc2NDFhNzJkN2YzMi4uNmE4NmIwMDJiODZmNDJhMDFjZjQ4ZTVkZjY5
MDBhY2Y1OGY4MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBEcmF3aW5n
QXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBJbnRTaXplIGJp
dG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0g
bV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6
ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYml0bWFwU2l6ZSwgeyB9
KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJp
dG1hcFNpemUsIHsgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CmluZGV4IDlmZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYzMDkyOWQxZjMuLjYzY2MyODM5
MmU0ODBkZmJkNTQzMmQ2OTAwMGZhMzhmMjJkZTY2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpoaWRlRmluZFVJKCkKIAogYm9vbCBGaW5kQ29udHJv
bGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1No
b3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCiB7Ci0gICAgUmVmUHRyPFRleHRJbmRp
Y2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZy
YW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5n
ZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0
aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b246Ok5vbmUpOworICAgIGF1dG8gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0
aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSk7CiAgICAgaWYgKCFpbmRpY2F0b3IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCmluZGV4IDgwYmQyMTM5NTg3YjMxNWRmMTc2ZDYyMGI0NTg5ZGMzNjU5
OWEyZjYuLjZhYzYwMzlhYTMxODQ5NWUzN2JiMTU4OTQ3YTZmZDgyZWVhNTViZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAg
LTQzMSw3ICs0MzEsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExh
eWVycygpCiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJhY2tpbmdTdG9yZUZs
dXNoZXI7CiAKICAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIsIHBhZ2VJ
RF0geworICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVz
aGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJh
Y2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxODlkMWExODhiMjRiNjQ0NmQwNTI3ZGY4NjUw
ZjBhMWEzODY4MTBiLi5lNDczNzBlZmI1ZTBmNDE1ODliMjE0YjVhYjcxOWI3OTgyYzAyYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04
MzgsNyArODM4LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRMb2FkZXJEZXRhY2hlZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFj
aywgdm9pZCogY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCktPmRvY3VtZW50KCksIFt0
aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBib29sIHsKKyAgICBhdXRv
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4gYm9vbCB7CiAg
ICAgICAgIGlmICghY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiZTZiZWZiODE0
Nzg2NWZjMGU4MWU4MTIyM2I2YzQ5NmFiN2YxYmQ1Li5iNGI3ZDdhN2NjODQ1ZTU1MzJjM2IyMDZl
N2Q5YzBlMjVlYTU3ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTQzMiwxMCArMTQzMiwxMCBAQCB2b2lkIFdlYlBhZ2U6Om5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2ludCBk
bwogICAgIGNvbnN0IGludCBzaW5nbGVDbGljayA9IDE7CiAgICAgLy8gRklYTUU6IFNldCBtb2Rp
ZmllciBrZXlzLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBzZXQgSXNTaW11
bGF0ZWQ6Olllcy4KLSAgICBSZWZQdHI8TW91c2VFdmVudD4gbW91c2VFdmVudCA9IE1vdXNlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVz
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCisgICAg
YXV0byBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZl
bnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxw
dHIsIHNpbmdsZUNsaWNrLCBzY3JlZW5Qb2ludCwgZG9jdW1lbnRQb2ludCwgeyB9LCB7IH0sIDAs
IDAsIG51bGxwdHIsIDAsIFdlYkNvcmU6Ok5vVGFwLCBudWxscHRyKTsKIAotICAgIG1haW5GcmFt
ZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVy
bCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQuZ2V0KCksIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6TWF5YmVTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICBt
YWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50LT5jb21wbGV0
ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LnB0cigpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2Vu
ZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3RvcExvYWRpbmdGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpA
QCAtMzcwNSw3ICszNzA1LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWIKIAogICAgICAgICBt
X3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5LnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0p
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAgICAgICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQuYXBwZW5kKGV4dGVu
c2lvbik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDBjODRmNjRjOGM2M2Vk
MWJiZDYwYjczZjNiNTY4YTRhMjc4YzFhZGYuLmZiYTViMDU2YTRjOWZhZDAxNzFjMTg4M2YwMGNl
YmY1YTM1N2Y1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwg
Ym9vbCBpc1Nob3dpbmdPdmUKICAgICAgICAgbV9pc1Nob3dpbmdGaW5kSW5kaWNhdG9yID0gZmFs
c2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBU
ZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBm
aW5kVGV4dEluZGljYXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uOjpOb25lLCBGbG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2Fs
TWFyZ2luKSk7CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRp
b25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXpl
KHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxWZXJ0aWNhbE1hcmdpbikpOwogICAgIGlmICgh
dGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDlkZjYxOGE0
ZDlhZDhlOWIxZDYzMjA2YzYwMDUxZGFmYjc2ZGIyMzUuLjEwM2ZlYTMzZmYxYjExMmM1MzBmNTll
NmU1NmNkNThlYjM0ZjFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xODIwLDE0ICsxODIwLDE0IEBAIHZvaWQgV2Vi
UGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0
cmluZyYgbmV3VGV4dCkKICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwog
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9j
dW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9z
aXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCi0gICAgaWYg
KHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkK
KyAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLnB0cigpKSAhPSBv
bGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIG5vdGlm
eSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCB1bnRpbCB3ZSBhcmUg
ZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9y
ZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHJhbmdlLnB0cigpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQobmV3
VGV4dCwgMCk7CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhm
YWxzZSk7CiB9CkBAIC0yMTM2LDE3ICsyMTM2LDE1IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRp
b25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVz
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVz
dC5pbmNsdWRlTGlua0luZGljYXRvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChsaW5rUmFuZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxl
RmFjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2lu
SW5Qb2ludHMgPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgUmVmPFJhbmdlPiBsaW5rUmFu
Z2UgPSByYW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRz
ID0gNDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9y
PiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFu
Z2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JP
cHRpb25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3Vu
ZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50
Rm9yQ29tcGxleFJhbmdlcyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJ
bmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Q
b2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZh
Y3RvcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKGxpbmtSYW5nZS5nZXQoKSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0
Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0
b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2Vz
IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVG
YWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4dEluZGljYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRp
Y2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTIxNTYsNyArMjE1NCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3Rv
cklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKCplbGVt
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0cyA9
IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhRGV0ZWN0aW9uOjpyZXF1aXJlc0V4dGVuZGVk
Q29udGV4dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtS
YW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKCplbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
cmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1Jh
bmdlLT5zdGFydFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgs
IERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0
cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnRleHRBZnRlciA9IHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJl
Y3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGRhdGFEZXRlY3Rp
b25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpLCBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwpAQCAtMjE4MSw3ICsyMTc5LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVk
IHdpZGUgZ2FtdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNn
Q29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25m
aWd1cmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCks
IGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGQyNTU1YzE5OTA4YWJhNjZhMjRjMWMxYmRkMTU2ZjJk
M2QyOTA0ODMuLjQ3ZmMzYzI5MGY2NTBlMzY3ZGI5OGQ0YzM3MTM1ZjkzZjY0ZTQxMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg1MCw3ICs4NTAsNyBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0g
dHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKLSAgICBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3Jt
Q0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7Cisg
ICAgYXV0byByZW5kZXJWaWV3QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpj
cmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3QW5pbWF0
aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gc2hh
ZG93Q0FMYXllcjsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAog
ICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShzY2FsZSwg
b3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0
cmFuc2llbnRab29tQ29tbWl0IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOworICAgIHpvb21MYXll
ci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmlld0Fu
aW1hdGlvbi5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93Q0FMYXllcikgewogICAgICAgICBGbG9h
dFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3VuZHNGb3JGcmFtZShmcmFtZVZpZXcs
IHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCA4MDVmZTllNGNiYjVkNzI2ZmYy
MjZmZWQ1OGQyMGExZDdlOWRiYjIxLi44ODMwMTcyNjViYmE5NTZkYzlkMjJmNmI2MDQ0NGIxODA2
MGVmZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwyNCArNDAsMjQgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBp
ZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwsIGlk
ZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2Fs
LCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5z
aWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcykpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0
ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpk
aWREZXN0cm95U3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIG1hcCkKICAgICBtX3N0b3Jh
Z2VBcmVhTWFwcy5yZW1vdmUobWFwLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsKQogICAgICAgICByZXR1cm4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJl
YShzZWN1cml0eU9yaWdpbik7CkBAIC0xODUsMTYgKzE4NSwxNiBAQCBjbGFzcyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWEgZmluYWwgOiBwdWJsaWMgU3RvcmFnZUFy
ZWEgewogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3JhZ2VNYXA7CiB9OwogCi1SZWZQdHI8
U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjplcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgYXV0byYgc2xv
dCA9IG1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuYWRkKHNlY3VyaXR5T3JpZ2luLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzbG90KQogICAgICAgICBzbG90ID0gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhOjpjcmVhdGUoc2VjdXJpdHlP
cmlnaW4sIG1fcXVvdGFJbkJ5dGVzKTsKLQotICAgIHJldHVybiBzbG90LmdldCgpOworICAgIEFT
U0VSVChzbG90KTsKKyAgICByZXR1cm4gKnNsb3Q7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCiB7
CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBA
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdl
KiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0ZXMp
OwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFk
b3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0b3JhZ2VO
YW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMpKTsKKyAg
ICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQs
IG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3IgKGF1
dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdOYW1l
c3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVyLnZh
bHVlLT5jb3B5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggZjEzYTIyZGNiZDIxYjY3NDBl
NDUyMzdmNGRmYWQ4MzEyNTY3MjllMy4uOTdkYjBiODEzYmFmNWNiNWE0N2Q3MmVlNWEwNjU1ZTY3
NTAwZWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVs
T3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50
aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwg
dWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIAogICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKCk7CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0
b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VB
cmVhPiBzdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJp
ZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IGVwaGVtZXJhbExvY2FsU3Rv
cmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U3RvcmFnZVR5
cGUgbV9zdG9yYWdlVHlwZTsKICAgICBjb25zdCB1aW50NjRfdCBtX3N0b3JhZ2VOYW1lc3BhY2VJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDQ2MmRlODZjNDkw
MDRmMWFmNjkxZWQwYjY3MTYxOGYwM2E3ZmZlMmMuLjgyNTU3YjcyNzE0YWQ4NzI2NTdlYWY4NDk2
ODUyMWE3MTM2MDM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApA
QCAtNDEsMTQgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyCiAgICAgcmV0dXJuIHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0
X3QgaWRlbnRpZmllcikKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKIHsK
ICAgICBhdXRvJiBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHNsb3QpCi0gICAgICAgIHJl
dHVybiBzbG90OworICAgICAgICByZXR1cm4gKnNsb3Q7CiAKLSAgICBSZWZQdHI8V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihu
ZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKLSAgICBzbG90ID0g
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOworICAgIGF1dG8gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoaWRl
bnRpZmllcikpOworICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIucHRyKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogfQpAQCAtNjUsMjIgKzY1LDIy
IEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcigpCiAgICAgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2lkZW50aWZp
ZXIpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdl
LCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2Um
IHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZw
YWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBo
ZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQog
ewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBx
dW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsK
ICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZShtX2lkZW50aWZpZXIsIHF1b3RhKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90
YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCmluZGV4IDhlYTI1ZTZlNzUwOWVi
MmMxN2JkMWY5NDg0YzM3MzFmNmMxZWE3OTUuLjNjZTZkYjlmMDY4ZTgwMzg5NjgxMTRlZjk5YWMy
NWFjZTA0MTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zMSwx
NiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25z
dCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBjZjMwODVi
ODQwZjA3ZmQ3ZDA1OTIxMzUyNWRkNDdkYmUxYmViNDcxLi5mYzY1OTg2MzI1MmJmZTRmYThjMWUx
MjliOWFlOGU4MzBmYWY3ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjAyLDkgKzIwMiw5IEBA
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gbW9kZWwgPSBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKLSAgICBtb2RlbC0+YWRkQ2xpZW50KCpp
bnRlcmZhY2UpOworICAgIGF1dG8gbW9kZWwgPSBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmFkZENs
aWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZN
b3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXgg
N2Y2MzMwOWYzMmEwYTgzYTM4ZDBjMjg4MjVlODE3M2IwMjIxZjE2ZS4uNWQ2MTEwYjc5MDlmMzRj
Y2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTE1MCwxMiAr
MTUwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAKIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBhdXRvIG1vZGVs
ID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8g
aW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlz
LCBjb250ZXh0SWQpOwogICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+YWRkQ2xpZW50Rm9y
Q29udGV4dChjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250
ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
KSk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBtb2RlbC0+YWRkQ2xp
ZW50KGludGVyZmFjZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1v
dmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMDE4MTVjMTNh
YzJhMTAyOTY0MDMyNzMxNzIyNjdlMzI1NmU4YzJlYy4uNGE5NGExZDg1Y2VjYTFlM2M2M2JjNzJh
ODZhYjA2YWYwZTE4NmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05MywzMSArOTMsMzAgQEAgU3RvcmFnZU5h
bWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAgICAgICAgIGNsb3NlKCk7CiB9
CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKikKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1No
dXRkb3duKTsKICAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lv
biB8fCBtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCk7CiAKLSAg
ICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKG5l
dyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsK
KyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CiAgICAgZm9yIChhdXRvJiBpdGVy
IDogbV9zdG9yYWdlQXJlYU1hcCkKICAgICAgICAgbmV3TmFtZXNwYWNlLT5tX3N0b3JhZ2VBcmVh
TWFwLnNldChpdGVyLmtleSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAotICAgIHJldHVybiBuZXdO
YW1lc3BhY2U7CisgICAgcmV0dXJuIFdURk1vdmUobmV3TmFtZXNwYWNlKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsK
IAotICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwotICAgIGlmICgoc3Rv
cmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKSkKLSAgICAgICAgcmV0dXJu
IHN0b3JhZ2VBcmVhOworICAgIGlmIChSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJl
YSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpCisgICAgICAgIHJldHVybiBzdG9yYWdl
QXJlYS5yZWxlYXNlTm9uTnVsbCgpOwogCi0gICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUlt
cGw6OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIuZ2V0KCksIG1f
cXVvdGEpOwotICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9yaWdpbiwgc3RvcmFnZUFyZWEuZ2V0
KCkpOwotICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gU3Rv
cmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2Vy
LmdldCgpLCBtX3F1b3RhKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3Jh
Z2VBcmVhLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggMjdiOGY5YmFiM2FkMzM5
NjY4NTQwZjQ4MGJmZDY1YTk2NjYxNjEzNy4uYzg4ZjA2MWVmNWU1MGM5YjE2MzVlYzNmOGQ2YmEw
ZWQ3NzA1Y2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFj
ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgogICAg
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcm
IHBhdGgsIHVuc2lnbmVkIHF1b3RhKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJl
YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKKyAgICBSZWY8
U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlkZTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFJlZlB0
cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsKICAgICBTdG9yYWdlQXJlYU1hcCBt
X3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCBlZDdlYTNhYTM5M2Rh
NTU5MzdhMWFkNDVhNDZkNjc3Yzg4NGFiZDllLi44MzYyMDU3ZmZkNzRmNmQyZGExYWE0N2Q3Nzgw
MDQ5MWM5ZGExMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApAQCAtMzksOSArMzksOSBAQCBz
dGF0aWMgSGFzaFNldDxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVycygpCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnM7CiB9
CiAKLVJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIobG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogfQogCiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKQEAgLTk2LDIyICs5NiwyMiBA
QCB2b2lkIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAg
ICAgfQogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAg
ICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdl
JiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Z2V0T3JD
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgsIHF1
b3RhKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICAvLyBGSVhNRTogQSBzbWFydGVy
IGltcGxlbWVudGF0aW9uIHdvdWxkIGNyZWF0ZSBhIHNwZWNpYWwgbmFtZXNwYWNlIHR5cGUgaW5z
dGVhZCBvZiBqdXN0IHBpZ2d5LWJhY2tpbmcgb2ZmCiAgICAgLy8gU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAwZDIwN2QzNDMxOTJjNGZlN2I5N2Qw
MzhkNTgxYjJjNGVjMDc3YWJiLi5lNTg5ZmVlN2E1YzZjOTFjZjk0YjdkMjNiNDg2MTQ4MTc5Yjhj
ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogICAg
IHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdlKCk7CkBAIC00OSwxMCArNDksMTAgQEAgY2xh
c3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWQKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAg
IFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAppbmRleCBjNmI0MDg3MTA1MDA2MTk5
MDFiNTQwNjA1ZTA2NjdkMWE2MjEzYjlkLi42M2NhZTJkMGFkNTJjZDUxM2Q4NTMzMjAwYzNkZWVm
Y2MxN2M0YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlZpZXdHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJWaWV3R3JvdXAuY3BwCkBAIC00MiwxOCArNDIsMjIgQEAgc3RhdGljIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViVmlld0dyb3VwPj4mIHdlYlZpZXdHcm91cHMoKQogICAgIHJldHVybiB3
ZWJWaWV3R3JvdXBzOwogfQogCi1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpCitSZWY8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKSk7CiAKICAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3
R3JvdXBzKCkuYWRkKG5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXdl
YlZpZXdHcm91cCkKLSAgICAgICAgd2ViVmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZpZXdH
cm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICghd2Vi
Vmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoLmlzRW1wdHkoKSkKKyAgICBpZiAoIXdlYlZpZXdHcm91cCkgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCkpOworICAgICAgICB3ZWJWaWV3R3JvdXAgPSByZXN1bHQuY29weVJlZigpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICghd2ViVmlld0dyb3VwLT5t
X3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIAotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7Cisg
ICAgcmV0dXJuICp3ZWJWaWV3R3JvdXA7CiB9CiAKIFdlYlZpZXdHcm91cCogV2ViVmlld0dyb3Vw
OjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKaW5kZXggZmUwNWNkNTQ4NjkwNWNkMjlmYjY4ODRl
N2E4N2ZiZGM5MzI3MmI1Zi4uNGQ0MTM3Y2UyYWFhYzNhMTQwZDU5YzYyYzM5NjMzNTJmMjU1YjE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3
R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdH
cm91cC5oCkBAIC0zOCw3ICszOCw3IEBAIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogY2xhc3MgV2Vi
Vmlld0dyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0dyb3VwPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworICAgIHN0YXRp
YyBSZWY8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICB+V2ViVmlld0dyb3VwKCk7
CiAKICAgICBzdGF0aWMgV2ViVmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVJT1MuY3BwCmluZGV4IGQwODQ5M2IwZjQyY2NkMzYyYWY0NDJjMDNlNDk0
NDhkODFkN2Y1ZDAuLjgwNDliMWNjYzI3MmMzNDcyNTk5ZTQ5NDJlNTAwNmNiODY4MTUxN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcApAQCAtMjYsMTMgKzI2LDEzIEBACiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogU2VhcmNoUG9wdXBNZW51SU9TOjpTZWFyY2hQb3B1cE1lbnVJT1Mo
UG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BvcHVwKGFkb3B0UmVmKG5ldyBQb3B1
cE1lbnVJT1MoY2xpZW50KSkpCisgICAgOiBtX3BvcHVwKGFkb3B0UmVmKCpuZXcgUG9wdXBNZW51
SU9TKGNsaWVudCkpKQogewogfQogCiBQb3B1cE1lbnUqIFNlYXJjaFBvcHVwTWVudUlPUzo6cG9w
dXBNZW51KCkKIHsKLSAgICByZXR1cm4gbV9wb3B1cC5nZXQoKTsKKyAgICByZXR1cm4gbV9wb3B1
cC5wdHIoKTsKIH0KIAogdm9pZCBTZWFyY2hQb3B1cE1lbnVJT1M6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgLypzZWFy
Y2hJdGVtcyovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaAppbmRleCA3MTZlZDU5YzQxNDcyMzk1MmQ3
MGRlYzUyZGJmOGVmNTk4NzlhZjRmLi4wZWY0NGI0MmE2NjBhZTM1MmM4YmVlNjk1NTBhYjJkZjBm
OTUzNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBT
ZWFyY2hQb3B1cE1lbnVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51IHsKICAg
ICBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UG9wdXBN
ZW51SU9TPiBtX3BvcHVwOworICAgIFJlZjxQb3B1cE1lbnVJT1M+IG1fcG9wdXA7CiB9OwogCiAj
ZW5kaWYgLy8gU2VhcmNoUG9wdXBNZW51SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQppbmRl
eCA0MjNjMDQ5MDBmNGYwZTZiOWE1ZTY4OWZjMTljODczNzQ0MmI1YjI5Li44NTkxMTc3YTljZjJh
ZTkyNjBjN2EwY2ZhZjJmMzJhMTM2MWY2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCkBA
IC00MzMsOCArNDMzLDggQEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRp
b25QaHJhc2VBbHRlcm5hdGl2ZXM6KE5TQXJyYXkgKiopYWx0ZXJuYXQKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbWFya2VyQWx0ZXJuYXRpdmVzLnNpemUoKTsgaisrKQogICAg
ICAgICAgICAgICAgIFsoTlNNdXRhYmxlQXJyYXkgKikqYWx0ZXJuYXRpdmVzIGFkZE9iamVjdDoo
TlNTdHJpbmcgKikobWFya2VyQWx0ZXJuYXRpdmVzW2pdKV07CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwg
bm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsK
LSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJh
bmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC00NjIsOCArNDYyLDgg
QEAgLSAoRE9NUmFuZ2UgKillbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IGNvbnN0IERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtYXJrZXJzW2ldOwogICAgICAgICBpZiAo
bWFya2VyLT5zdGFydE9mZnNldCgpIDw9IG9mZnNldCAmJiBtYXJrZXItPmVuZE9mZnNldCgpID49
IG9mZnNldCkgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5l
bmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tCmluZGV4IDk2YTY0OTZjMmM0NDYwOTkyYzVjMTJjMGRjZmU2N2YzNDBhNmMxYzguLmE1
OTE5OGMzMzRlZTE0OThkOWYzNGI5YzA5NjI5M2RjMzZjYTVlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
CkBAIC00NjUsMTMgKzQ2NSwxMyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDoo
TlNVUkwgKilVUkwKICAgICBpZiAoIVVSTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMsIEV2ZW50
OjpJc0NvbXBvc2VkOjpZZXMsCisgICAgYXV0byBldmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25p
Y1RpbWU6Om5vdygpLCBudWxscHRyLCAxLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIG51bGxw
dHIsIDAsIDAsIG51bGxwdHIsIE1vdXNlRXZlbnQ6OklzU2ltdWxhdGVkOjpZZXMpOwogCiAgICAg
Ly8gQ2FsbCB0byB0aGUgZnJhbWUgbG9hZGVyIGJlY2F1c2UgdGhpcyBpcyB3aGVyZSBvdXIgc2Vj
dXJpdHkgY2hlY2tzIGFyZSBtYWRlLgogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoW19kYXRhU291
cmNlIHdlYkZyYW1lXSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsg
KmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
eyBVUkwgfSwgeyB9LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBN
YXliZVNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csICBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwotICAgIGZyYW1l
LT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2
ZW50LmdldCgpLCBudWxscHRyKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVz
dChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5wdHIoKSwgbnVsbHB0cik7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IGY4N2U2MTUzMzcxMmY4ZWVk
NzBjZWViOWUzODYzNWUzYWE4ZjRhZDQuLjFiNmM4MjI4NTRhMDdmM2QwYzdhMDYwMTc2ZTRiODEw
ZTc4OTFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTQ3LDcgKzU0Nyw3
IEBAIC0gKHZvaWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2Ug
YW5kUmVjdHM6KE5TQXJyYXkgKiopcmVjdHMKICAgICBSZWY8UmFuZ2U+IHJhbmdlID0gcmFuZ2VP
ZkNvbnRlbnRzKG5vZGUpOwogCiAgICAgY29uc3QgZmxvYXQgbWFyZ2luID0gNCAvIG5vZGUuZG9j
dW1lbnQoKS5wYWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIFJlZlB0cjxUZXh0SW5kaWNh
dG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdl
LCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfAorICAgIGF1dG8gdGV4dElu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGlj
YXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlv
blJlc3BlY3RUZXh0Q29sb3IgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRCYWNr
Z3JvdW5kcyB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQ
YWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyLm1tCmluZGV4IDFmMzJkYzk0OThiYTQyMjFkMTI5MzkxYjg0NzlhYmEzMGE5Nzk4
OTQuLmEwNGJjNTU3YmZkZGM5NzZmZDE4MDVhZmViNzg2NWI0ZDEyN2FlNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omlu
c3RhbnRpYXRlUGx1Z2luCiAgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFs
aXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpwcm9wZXJ0aWVzLmdldCgpIGZvcm1hdDpOU1By
b3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICAg
ICBBU1NFUlQoZGF0YSk7CiAgICAgCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eT4gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNyZWF0ZShob3N0
UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CisgICAgYXV0byBpbnN0YW5jZSA9IE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2luVmlldywgZnVs
bEZyYW1lKTsKICAgICB1aW50MzJfdCByZXF1ZXN0SUQgPSBpbnN0YW5jZS0+bmV4dFJlcXVlc3RJ
RCgpOwogICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBfV0tQSEluc3RhbnRpYXRlUGx1Z2luKGhvc3RQ
cm94eS0+cG9ydCgpLCByZXF1ZXN0SUQsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0
PHZvaWQqPihbZGF0YSBieXRlc10pKSwgW2RhdGEgbGVuZ3RoXSwgaW5zdGFuY2UtPnBsdWdpbklE
KCkpOwogICAgIGlmIChrciA9PSBNQUNIX1NFTkRfSU5WQUxJRF9ERVNUKSB7CkBAIC0yOTksNyAr
Mjk5LDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVnaW4KICAgICBpbnN0YW5jZS0+c2V0UmVuZGVy
Q29udGV4dElEKHJlcGx5LT5tX3JlbmRlckNvbnRleHRJRCk7CiAgICAgaW5zdGFuY2UtPnNldFJl
bmRlcmVyVHlwZShyZXBseS0+bV9yZW5kZXJlclR5cGUpOwogCi0gICAgcmV0dXJuIGluc3RhbmNl
OworICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIGNvbnN0IFN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRl
eCA4ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFlNzA2OGI3YzMyLi5hYmNhNmJiZTMzMDUz
NWE5ODJlNjQyZDRjMmExODhhN2I4YThiN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC03MTksOCArNzE5LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdChQbHVnaW5SZXF1ZXN0KiBwbHVnaW5SZXF1
ZXMKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBfTmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0g
bWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0
IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRhICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0
cjxIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2lu
UmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVh
bUlEKCksIHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBwbHVnaW5SZXF1ZXN0LT5yZXF1ZXN0SUQoKSwgcGx1Z2lu
UmVxdWVzdC0+cmVxdWVzdCgpKTsKKyAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0tPnN0cmVh
bUlEKCksIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWlu
IiAKQEAgLTc5OSwxMCArNzk5LDEwIEBAIE5QRXJyb3IgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IGNoCiAgICAgICAg
IG1fcGx1Z2luUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocGx1Z2luUmVxdWVzdCkpOwogICAgICAg
ICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICAg
ICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMs
IHJlcXVlc3RJRCwgcmVxdWVzdCk7CiAKICAgICAgICAgQVNTRVJUKCFtX3N0cmVhbXMuY29udGFp
bnMocmVxdWVzdElEKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0p
OworICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtLmNvcHlSZWYoKSk7CiAg
ICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IDlhNzQ1ZDkzODNmNzQ0N2Y1NDJkZjUwNDVlMjQ0NWIzODUzZTA4ODAuLjFkMWU4YWVmNjc1MjM2
MWYzZWNjMDQ2NTA1ZDQ2NTdjMjU0NmI0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNTE3LDcg
KzE1MTcsNyBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6KFdlYlBs
dWdpblJlcXVlc3QgKilKU1BsdWdpblJlcXVlc3QKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBOUFBf
TmV3U3RyZWFtIGFuZCBvdGhlciBzdHJlYW0gbWV0aG9kcyBpZiB0aGVyZSBpcyBubyBKUyByZXN1
bHQgdG8gZGVsaXZlci4gVGhpcyBpcyB3aGF0IE1vemlsbGEgZG9lcy4KICAgICAgICAgTlNEYXRh
ICpKU0RhdGEgPSBbcmVzdWx0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gc3Ry
ZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9u
XSwgW0pTUGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0g
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOlVSTF0sIHBsdWdpbiwgW0pTUGx1Z2luUmVxdWVzdCBzZW5kTm90aWZpY2F0aW9uXSwgW0pT
UGx1Z2luUmVxdWVzdCBub3RpZnlEYXRhXSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8
TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6VVJMIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxh
aW4iIApAQCAtMTY3OCw5ICsxNjc4LDkgQEAgLSAoTlBFcnJvcilsb2FkUmVxdWVzdDooTlNNdXRh
YmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5UYXJnZXQ6KGNvbnN0IGNoYXIgKiljVGEKICAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihsb2FkUGx1Z2luUmVxdWVzdDopIHdp
dGhPYmplY3Q6cGx1Z2luUmVxdWVzdCBhZnRlckRlbGF5OjBdOwogICAgICAgICBbcGx1Z2luUmVx
dWVzdCByZWxlYXNlXTsKICAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVx
dWVzdCwgcGx1Z2luLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhKTsKKyAgICAgICAgYXV0
byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdp
biwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CiAKLSAgICAgICAgc3RyZWFtcy5hZGQo
c3RyZWFtLmdldCgpKTsKKyAgICAgICAgc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAg
ICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCmluZGV4IDk2ZWY5MjFmZDYwNmVjZjA4MGVlZDEzMWQ0YjhkOTEyZDUxZjNmZmIuLjIz
NDc4MWIwYmU4NmE0YmRhNTBjMGNlNTY0ODQyMjM4OGI0MmJlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCkBAIC0yMDcsOCArMjA3LDggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0K
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9u
ID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9u
KG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwg
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOwotICAgIGZyYW1lVmlldy0+ZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFt
ZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNC
ZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5j
aG9yKSk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9j
dXMpOwogCiAgICAgT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+IG9sZFBhaW50QmVoYXZpb3IgPSBm
cmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZp
b3IoUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCmluZGV4IGVjOGU1OGNmMjA3YmJjYjA0ODIyZWQyYjE1ZGVhZDA2NzYyYTU2N2QuLjg0NjBi
MDNmNTBjN2MyYjEzYTE3ZWZlNGM4MzhmYjdiOTIxOTBlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBpZiAoaXNNYWluRnJhbWUg
JiYgY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygpLT5zZXRQYXJl
bnRWaXNpYmxlKGZhbHNlKTsKICAgICBjb3JlRnJhbWUtPnNldFZpZXcobnVsbHB0cik7Ci0gICAg
UmVmUHRyPEZyYW1lVmlldz4gY29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1l
KTsKKyAgICBhdXRvIGNvcmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CiAg
ICAgY29yZUZyYW1lLT5zZXRWaWV3KGNvcmVWaWV3LmNvcHlSZWYoKSk7CiAKICAgICBbbV93ZWJG
cmFtZS5nZXQoKSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA3YjliYjg5
OTA4YWU1YzFhNjUyZTM2Y2M4ODliZTA0ZTU2NTRjOTQ2Li5hOTNkZWY2MTM5OWE1Y2M1NGVmNjFj
YWU5YzAzNzk5MDU4OTBjZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTE3NDYsOCArMTc0Niw4IEBAIC0gKHZvaWQpZ2V0RGljdGF0aW9uUmVz
dWx0UmFuZ2VzOihOU0FycmF5ICoqKW91dFJhbmdlcyBhbmRNZXRhZGF0YXM6KE5TQXJyYXkgKiop
CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFu
Z2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0
KCkpOworICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLnB0cigpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9IHByZXZpb3VzTWV0YWRh
dGEpIHsKICAgICAgICAgICAgICAgICBbbWV0YWRhdGFzIGFkZE9iamVjdDptZXRhZGF0YV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA5
YzNjMmJiOTljYzBjNmNkMzA1Mzc5OGRkYjY2NDRjOWU3ZGI4MTQyLi40YTg2Yzc5NDU1ZmIzNmQw
YzViZWJmYjM5MGNlODQ2M2ZlYjI0Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEzNDgsNyArMTM0OCw3IEBAIC0gKHZvaWQpX3dy
aXRlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczooTlNBcnJheSAqKXR5cGVzIHRvUGFzdGVi
b2FyZDooTlNQYXN0CiB7CiAgICAgLy8gUHV0IEhUTUwgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAg
aWYgKFt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShbc2VsZiBfZnJhbWVdKSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CiAgICAgICAgICAgICBpZiAoUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YSA9IGNvcmVBcmNoaXZlID8gY29yZUFyY2hpdmUtPnJhd0RhdGFSZXBy
ZXNlbnRhdGlvbigpIDogMCkKICAgICAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihf
X2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGZvclR5cGU6V2ViQXJjaGl2ZVBib2FyZFR5cGVd
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggNWViOTU3NTI4MmMxYjY1M2RjYmM5YWE2YTQ3ZWQ3MGMwNWU3ZDVlZi4uNGY5MGY2Mzkz
OTc0MTI2OTc2OGQ2MzAzNmNiMGQzYjBkMzBjOTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDcyOSw4ICs0NzI5LDYgQEAgKyAodm9pZClfYWRk
VXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRX
b3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJW
aWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgU3RyaW5nKCkpOwotICAgIGlmICghdmll
d0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1
cm47CkBAIC00NzU0LDggKzQ3NTIsNiBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVh
dGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNWMwNzcx
MjExZWFlZDY0OTA3M2UxMDNlOTA0YTVlYzkwNDliNDYzZi4uYmM3OWQ4OWJkNDQ2YzU2ZWExYmE5
ZDU3Yzc1YWUzOTlhYThmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFBsdWdp
bkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAgIHJlbW92ZShvbGRQYWNrYWdlLmdldCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0g
UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CisgICAgICAg
IGF1dG8gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9k
aWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlTm9uTnVs
bCgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGY4NTVk
ZDI2M2Y3OWNkZmQ0MWI2NDY1OTUwMjJhOGM0NGNjYTJmNDUuLmVmMGEyZTIwYjQxMzc2NjBmMjdi
ZTViYTRmYWNjYmZiMGY2MjRhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWVkaWFDYW5TdGFydChEb2N1bWVudCYpCiB7CiAgICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7CiAg
ICAgaWYgKCFzdGFydCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCY+KHBhcmVudEZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKHRoaXMpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCY+KHBhcmVudEZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpKS5kaXNwYXRjaERpZEZhaWxUb1N0
YXJ0UGx1Z2luKCp0aGlzKTsKIH0KIAogUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQpAQCAtNDEw
LDggKzQxMCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVz
dCogcmVxdWVzdCkKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0
LCBjcmVhdGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCiAgICAgICAgIC8vIGp1c3QgcGFz
cyBpdCBvZmYgdG8gdGhlIGxvYWRlcgogICAgICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2lu
U3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9u
KCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3Rh
bmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7Ci0gICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0
cmVhbSk7CisgICAgICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRo
aXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3Rp
ZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+
cXVpcmtzKCkpOworICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsK
ICAgICAgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZSB0YXJnZXQgZnJhbWUgaXMgb3VyIGZyYW1lLCB3ZSBjb3VsZCBkZXN0cm95
IHRoZQpAQCAtNDU0LDggKzQ1NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3Qo
UGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgICAgICAgICBjc3RyID0gcmVzdWx0U3Ry
aW5nLnV0ZjgoKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0
cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJl
cXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2Vu
ZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5G
dW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOwotICAgICAgICBtX3N0cmVh
bXMuYWRkKHN0cmVhbSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgp
LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3Qt
Pm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1
Z2luLT5xdWlya3MoKSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7
CiAgICAgICAgIHN0cmVhbS0+c2VuZEphdmFTY3JpcHRTdHJlYW0ocmVxdWVzdFVSTCwgY3N0cik7
CiAgICAgfQogfQpAQCAtNjkwLDExICs2OTAsMTEgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UoKQogICAgIH0KIAogICAgIGF1dG8g
cm9vdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLmNyZWF0ZVJvb3RPYmplY3QodGhpcyk7Ci0g
ICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92ZShyb290KSk7CisgICAgYXV0byBp
bnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG9iamVjdCwgV1RGTW92
ZShyb290KSk7CiAKICAgICBfTlBOX1JlbGVhc2VPYmplY3Qob2JqZWN0KTsKIAotICAgIHJldHVy
biBpbnN0YW5jZTsKKyAgICByZXR1cm4gV1RGTW92ZShpbnN0YW5jZSk7CiAjZWxzZQogICAgIHJl
dHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCmluZGV4IDdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlm
NGUuLmI1YjYwYTgwOTkxZDYwNzEwYjg3MDYzMDI0MDIxZDY1MDkwNjMyZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zMTcsNyArMzE3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFZlY3Rvcjxib29sLCA0PiBtX3BvcHVw
U3RhdGVTdGFjazsKIAotICAgICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+ID4gbV9z
dHJlYW1zOworICAgICAgICBIYXNoU2V0PFJlZlB0cjxQbHVnaW5TdHJlYW0+PiBtX3N0cmVhbXM7
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luUmVxdWVzdD4+IG1fcmVxdWVz
dHM7CiAKICAgICAgICAgYm9vbCBtX2lzV2luZG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggMTkzZTAyYjA1MDE4ZWY1OGZlNDE2ZmNiZmI2NzVlZGUzZmM1ODk2Yy4uNTBh
Y2Y3NzlkZDZiNTQ0ODQ4NDhlY2MyNWMxODY0OGI5OTZhYjdkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTA2MSw3ICsxMDYxLDcgQEAgT2JqZWN0Q29udGVudFR5cGUgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dAogICAgIHJldHVybiBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZTo6Tm9uZTsKIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25z
dCBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KSBjb25zdAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW5W
aWV3KSBjb25zdAogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAKQEAgLTEwNzIsMjMgKzEwNzIsMjMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBBU1NFUlQoZnJhbWUgPT0gcGx1Z2luVmlldy0+
cGFyZW50RnJhbWUoKSk7CisgICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXcucGFyZW50RnJh
bWUoKSk7CiAKLSAgICBpZiAoIXBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsK
LSAgICAgICAgVVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQ
YWdlKCkpKTsKKyAgICBpZiAoIXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewor
ICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFn
ZSgpKSk7CiAgICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJp
bmdLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwo
KSkgeworICAgIGlmICghcGx1Z2luVmlldy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKICAgICB9CiAKLSAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKLSAgICAgICAg
U3RyaW5nIHBsdWdpbk5hbWUgPSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOworICAgIGlm
IChwbHVnaW5WaWV3LnBsdWdpbigpKSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1
Z2luVmlldy5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxs
KCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsK
ICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBs
dWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNv
bnN0IFBsdWdpblZpZXcqIHBsdWdpbgogIAogICAgIGludCBlcnJvckNvZGUgPSAwOwogICAgIFN0
cmluZyBkZXNjcmlwdGlvbjsKLSAgICBzd2l0Y2ggKHBsdWdpblZpZXctPnN0YXR1cygpKSB7Cisg
ICAgc3dpdGNoIChwbHVnaW5WaWV3LnN0YXR1cygpKSB7CiAgICAgICAgIGNhc2UgUGx1Z2luU3Rh
dHVzQ2FuTm90RmluZFBsdWdpbjoKICAgICAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdEVycm9y
Q2Fubm90RmluZFBsdWdJbjsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gV0VCX1VJX1NUUklO
RygiVGhlIHBsdWctaW4gY2FuXHhFMlx4ODBceDk5dCBiZSBmb3VuZCIsICJXZWJLaXRFcnJvckNh
bm5vdEZpbmRQbHVnaW4gZGVzY3JpcHRpb24iKTsKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3Qg
UGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9y
RG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LT51cmwoKSwgU3RyaW5nKCkpOworICAgIFJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJv
ckNvZGUsIHBsdWdpblZpZXcudXJsKCksIFN0cmluZygpKTsKICAgICBDT01QdHI8SVdlYkVycm9y
PiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKHJlc291cmNlRXJyb3Is
IHVzZXJJbmZvQmFnLmdldCgpKSk7CiAgICAgIAogICAgIHJlc291cmNlTG9hZERlbGVnYXRlLT5w
bHVnSW5GYWlsZWRXaXRoRXJyb3Iod2ViVmlldywgZXJyb3IuZ2V0KCksIGdldFdlYkRhdGFTb3Vy
Y2UoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKTsKQEAgLTExNTgsNyArMTE1OCw3
IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwotICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZyYW1lLCBwbHVnaW5T
aXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgbWltZVR5cGUsIGxv
YWRNYW51YWxseSk7CisgICAgYXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGZy
YW1lLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
bWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiAKICAgICBpZiAocGx1Z2luVmlldy0+c3RhdHVzKCkg
PT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KQogICAgICAgICByZXR1cm4gcGx1Z2lu
VmlldzsKQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYgcGx1Z2luV2lkZ2V0KQogUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgLypi
YXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUo
Y29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVz
LCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAg
YXV0byBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBs
dWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBs
aWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIHBs
dWdpbiBjYW4gYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseQogICAgIGlmIChwbHVnaW5WaWV3LT5wbHVn
aW4oKSAmJiBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bG9hZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZjhkNzQ4ODVmMDZjNTRhNDMzODc2OTMzMzhjMGUwNjMyNGQ5OGFjYi4uMmZi
YWI3OWM3MGQwMjE0ZTg0ZjA3ZThkYmU4YWQ0NzE4YzFjNzkzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6CiAgICAg
dm9pZCBzZXRXZWJGcmFtZShXZWJGcmFtZSogd2ViRnJhbWUpIHsgbV93ZWJGcmFtZSA9IHdlYkZy
YW1lOyB9CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV93ZWJGcmFt
ZTsgfQogCi0gICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNv
cmU6OlBsdWdpblZpZXcqKSBjb25zdDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQ
bHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCiAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZiNjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1
ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZiZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4g
U19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmlu
ZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAg
aWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2Fk
RGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNU
UgogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFp
blRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxh
aW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHBsYWluVGV4dCksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0
KSk7CiAgICAgQlN0cmluZyBwbGFpblRleHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEw
KTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxv
YWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5j
b2RpbmcsIHVybCwgbnVsbHB0cik7CkBAIC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFt
ZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJs
KQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywg
X0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmlu
Z0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFy
KSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5n
KFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciks
IDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUy
NDUxMTVmZGUuLjUwMmNhODlkZjZiOTBkMGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xT
UEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJh
bWUgZmluYWwgOiBwCiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8g
QlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwp
OwotICAgIHZvaWQgbG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1
dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmlu
dGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdl
YkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVp
Z2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5
MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1
NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkg
KzE4Nyw5IEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7
CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlv
biBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5h
dGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwog
fQogCiB2b2lkIENBVmlldzo6c2V0Q29udGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRD
aGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FW
aWV3LmgKaW5kZXggNDViNjRlYzAxNTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5
NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmll
dy5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENB
Vmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7
CiAKLSAgICBzdGF0aWMgUmVmUHRyPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7
CisgICAgc3RhdGljIFJlZjxDQVZpZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAg
IH5DQVZpZXcoKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFj
a0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lkKiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlz
cGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlm
YzUuLmFhYmQxOThiMTExNWVkN2U2NWFkODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlM
aW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAgICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsK
IH0KIAotUmVmUHRyPENWRGlzcGxheUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3Bs
YXlMaW5rQ2xpZW50KiBjbGllbnQpCitSZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6
Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENWRGlzcGxheUxpbmsoY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1ZEaXNwbGF5TGluayhjbGllbnQpKTsKIH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NWRGlzcGxheUxpbmsuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEy
NjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMuLmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEw
OTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIENWRGlzcGxheUxpbmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBs
YWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlMaW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPENWRGlzcGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7
CisgICAgc3RhdGljIFJlZjxDVkRpc3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVu
dCopOwogICAgIH5DVkRpc3BsYXlMaW5rKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0lt
YWdlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQx
MTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4uY2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVj
MzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFj
ZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2UsIFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFj
ZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5IZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6
Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1
Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVlYjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0
ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDgg
KzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNU
UiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3Vw
LCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEs
OCArNjkzOSw2IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9J
bl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3Jv
dXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357665</attachid>
            <date>2018-12-19 00:22:47 -0800</date>
            <delta_ts>2018-12-20 00:02:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181219172245.patch</filename>
            <type>text/plain</type>
            <size>408100</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NGRhYjk5OTQwNzJjZDI5YTA4ZGVkMjNmMjFmMTdiYTZhNmRkODA1Li4zYjNhNDg5NGJmMTY1ZTNm
YjJmMTI3ODdkZmRjM2Q5ZmQyMTI5MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgog
CiAgICAgICAgIEVycm9yIG1lc3NhZ2UgZm9yIGAteCAqKiB5YCBjb250YWlucyBhIHR5cG8uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZWQ1ZjA0ZWNmYzcwOWIyYzY4ZWI4NzNhOGQzYmVlNmFhZWU4ZWUyYS4uMzAz
YWYwZDU3ZWY3ODI3N2RhMGJkZWViMjgwM2EyODhkZThlYzE3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM5NyBAQAorMjAxOC0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
ckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9iamVj
dFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50Ojpj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRV
c2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXREaXNw
bGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVudDo6ZXhl
Y3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQWRhcHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVh
dGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVT
aGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVh
dGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6
OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVU
ZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlVmlldzo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0SW5kZXgpOgorICAgICAg
ICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAg
IChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFuZ2U6XSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURl
c2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9i
amNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgorICAgICAgICAqIGNzcy9J
bnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKToKKyAgICAgICAgKiBj
c3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yIGNvbnN0KToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvU3R5bGVS
dWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3Jh
cHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGRvbS9D
aGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11
dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcik6Cisg
ICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgKiBkb20vUG9p
bnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBs
aWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxl
dGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUpOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFw
aHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxl
UG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVt
b3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJl
bW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVj
dGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OmZvcm1hdFJhbmdl
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29uc3QpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHls
ZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlU3R5bGVTcGFuc0JlZm9yZUlu
c2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFu
ZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OnRh
cmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOgor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOgorICAgICAg
ICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZU5v
ZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJB
cmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudCk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFk
ZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50
OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpj
cmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJW
VFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24pOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0Fn
ZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBh
cnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0
OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6
SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVs
ZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZnVsZmlsbFJlcXVlc3RXaXRo
S2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9j
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNyeXB0aW9uQm94OjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJBbmltYXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25z
OjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3gpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2Vy
dmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3RvcmFnZU9ic2VydmVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3Nh
Z2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6
OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Ojpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpTZWFyY2hQb3B1cE1lbnVXaW4p
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjphcHBseUNvbW1vbkJ1
dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpw
YWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjphZGp1
c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJ
Y29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICog
c3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdlKToKKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmFyZWEgY29uc3QpOgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6
YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQp
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6
YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogdGVzdGluZy9HQ09i
c2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQpOgorCiAyMDE4LTEyLTE4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEEgY29waWVkIHRleHQgc2VsZWN0aW9uIGlzIHBhc3RlZCBhcyBhIHdlYiBhcmNoaXZlIGF0dGFj
aG1lbnQgaW4gdGhlIGVudHJ5IHZpZXcgaW4gTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmY2ZDYxYzJk
OWJhYzNkNzg2YzAzODFiM2U3ZjY3Y2I2MzI2ZWE5Zi4uZGExOGNkODA0MWIwZGE3NDQ4NDRiNmQ3
Yjc3ZTA5ODNkOGI5M2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTgtMTItMTkg
IFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBV
c2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nvbm5l
Y3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2Vk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRha2VW
aWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
V2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2UgaW5pdFdpdGhEb2N1bWVu
dDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBk
YXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5k
aWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisKIDIw
MTgtMTItMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyMzkxMzQpIGlPUyBzYWZlIGJyb3dzaW5nIHdhcm5pbmcgdW5h
YmxlIHRvIHNob3cgZGV0YWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBhZDZmYTgwNWU2Yzcx
NzI1ZDEyNGM5Nzc1ZjE4Y2E0Yjg3NmIzOWM5Li40YjE3OGE3ODAyYmMxNjkzMjRiMmU5MWMyMmEw
MjQzZjFhNmFiMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4
LTEyLTE5ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAg
ICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICogU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5oOgorCiAyMDE4LTEyLTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW1dlYktpdExlZ2FjeV1bQ2xhbmdd
IFdlYktpdC5oIHdhcm5pbmc6ICdJV2ViRWRpdGluZ0RlbGVnYXRlMjo6c2hvdWxkSW5zZXJ0Tm9k
ZScgaGlkZXMgb3ZlcmxvYWRlZCB2aXJ0dWFsIGZ1bmN0aW9uIFstV292ZXJsb2FkZWQtdmlydHVh
bF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBlODQ0ZjkwNTEzYzMzNmMyNGU2Mzlm
ZWY2OThiZDgzODFiNjQ0YWMyLi5iYTZlYzg1OTM1NWMzYmIwM2YyMjE5ODAyYTdkMWE0YTcxYzcw
M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgt
MTItMTkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAg
ICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1l
bnVJT1MuY3BwOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51SU9TOjpTZWFyY2hQb3B1cE1lbnVJ
T1MpOgorICAgICAgICAoU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0
aW9uIGVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVybmF0aXZlczpdKToKKyAg
ICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIGVuY2xvc2luZ1JhbmdlV2l0aENvcnJlY3Rpb25J
bmRpY2F0b3JdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbToK
KyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIHNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VS
TDpdKToKKwogMjAxOC0xMi0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGUyNDM4OWMzMWU3YzcwNjdmZmU0NWJjNjQxMGJiNGE1ZmU0MTlhZGEuLjhiNmQ4YjVhY2Rk
MTY0ZWM3MThiZGE5YzU1OGJiZmFlNTM5ODQ1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxOC0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1
enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERP
TS9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6YW5k
UmVjdHM6XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5z
dGFudGlhdGVQbHVnaW4pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdFBsdWdpblJlcXVlc3Q6XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBl
UGx1Z2luVmlldyBsb2FkUmVxdWVzdDppblRhcmdldDp3aXRoTm90aWZ5RGF0YTpzZW5kTm90aWZp
Y2F0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJp
bmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgZ2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOmFuZE1ldGFkYXRh
czpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfd3JpdGVTZWxlY3Rpb25XaXRoUGFzdGVib2FyZFR5cGVzOnRvUGFzdGVib2FyZDpj
YWNoZWRBdHRyaWJ1dGVkU3RyaW5nOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToK
KyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVy
bDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6Cisg
ICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6
dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisKIDIwMTgtMTItMTcg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgb2Zmc2V0TGVmdCBh
bmQgb2Zmc2V0UGFyZW50IHNob3VsZCBhZGp1c3QgYWNyb3NzIHNoYWRvdyBib3VuZGFyaWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDBhYzA1MzgxZmI3ZDA2OTQ2ZGJiNDRhMGUx
ZTQ2MTkxOGIyYzAzZi4uYzU1ZjJkNzU5YmVhODMwMjI5MTczYzNjNDkyNzIyMGE4Zjc3MDc5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE4LTEyLTE5
ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAg
VXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6Om1lZGlhQ2Fu
U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKToKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbiBjb25zdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyk6Cisg
ICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIFdlYkZyYW1lLmg6
CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6Q1ZEaXNwbGF5TGluazo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaDoKKyAg
ICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHA6Cisg
ICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6
OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIwMTgtMTItMTIgIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bQ2xhbmddW1dlYktp
dExlZ2FjeV0gd2FybmluZzogZXhwZWN0ZWQgYSBxdWFsaWZpZWQgbmFtZSBhZnRlciAndHlwZW5h
bWUnIG9mIENPTUVudW1WYXJpYW50IGFuZCBDT01Qcm9wZXJ0eUJhZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCmluZGV4IDRhZGM3NjllNmU2YTY5MDE4NDkwMDQy
YTMzMjExMGNlY2FkOGYzYTguLjRhOTVmY2Q5NWIzOTA3N2UxYzYxMDJhNDdlYmE0NTdhMGI2NzNh
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVz
Tm9Db3B5KEpTQ29udGV4dFJlZiBjdHgsIEpTVHlwZWRBcnJheQogCiAgICAgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplID0gZWxlbWVudFNpemUodG9UeXBlZEFycmF5VHlwZShhcnJheVR5cGUpKTsK
IAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZy
b21CeXRlcyhieXRlcywgbGVuZ3RoLCBbPV0odm9pZCogcCkgeworICAgIFJlZjxBcnJheUJ1ZmZl
cj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZUZyb21CeXRlcyhieXRlcywgbGVuZ3RoLCBb
PV0odm9pZCogcCkgewogICAgICAgICBpZiAoZGVzdHJ1Y3RvcikKICAgICAgICAgICAgIGRlc3Ry
dWN0b3IocCwgZGVzdHJ1Y3RvckNvbnRleHQpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IDE3M2QwM2U1
Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBkNzk0MmFhZjc5YWQyYTY3Zjk2ZDcy
NDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBBcnJheUJ1
ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIFdhdGNocG9pbnQqIHdhdGNocG9p
bnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KICAgICAgICAgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dhdGNo
cG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAgbmV1dGVyaW5nV2F0Y2hwb2ludC0+
c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQobmV1dGVy
aW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0IHRoaXMg
d2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKaW5kZXggNmIwZjMxOTM4ODY0OGNkMjk1YjZmMTFjNTczYWI3Mzg0NDIxOTc4Ny4u
MGIzNGY0NmNlMjYxOGQ3MmE0NmE5ZWI4YmQ3MmZkMmE2NWRiM2Y1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkKICAgICAs
IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVGdWxs
VGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxs
YmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKGFkb3B0UmVm
KG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAgICwgbV9zdG9wSWZOZWNlc3NhcnlU
aW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKKyAgICAsIG1fc3dl
ZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCisgICAgLCBtX3N0
b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0p
KSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVTRShGT1VOREFUSU9OKQogICAgICwg
bV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBAIC0yMzM5LDcgKzIzMzksNyBAQCBH
Q0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIAogSW5jcmVt
ZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAgICByZXR1cm4gKm1fc3dlZXBlcjsK
KyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEdhcmJhZ2VD
b2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCmluZGV4IGM4YWVkNGEzNmE1ODgyMDFmMTUyN2U1ZWFhZmExNDUzMjk1YzAwMTkuLjlkYTRh
YTNhYmQxYzJlNzJlYTg5NTk3YzNiZWY5ZDg4ZGQ1ZGM2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBIZWFwIHsKICAgICAKICAgICBSZWZQ
dHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAgICBS
ZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwotICAgIFJl
ZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBSZWZQdHI8U3RvcElmTmVj
ZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CisgICAgUmVmPEluY3JlbWVudGFs
U3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4gbV9zdG9w
SWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2VydmVy
czsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXgg
NjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEyY2M0ZS4uYjhlNDMwMTkxZTZiMWRj
MjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNvQ2VsbFNldDo6fklzb0NlbGxTZXQo
KQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pjo6cmVtb3ZlKCk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0
OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRhc2s8TWFy
a2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRC
bG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBAIC03OCw3ICs3OCw3IEBAIFJlZlB0
cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxl
bE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsKICAgICB9
OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAogTkVWRVJfSU5MSU5FIEJpdG1hcDxN
YXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJs
b2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5kZXggMTZj
OWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNlNy4uZGFkYTY3MmM0OTFkYzAzODFm
NThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJhc2lj
UmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAKICAgICBib29sIGNvbnRhaW5zKEhl
YXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFy
a2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgp
OwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRvIGEgY29tYmluZWQgc2VhcmNoIG92
ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsIHVzZXMgYW5kCiAgICAgLy8g
b3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElzb0NlbGxTZXQg
OiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gewogICAgIHZvaWQgZm9y
RWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNoTWFy
a2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAgIFJlZjxTaGFyZWRUYXNrPHZvaWQo
U2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJik7
CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZl
Q2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4NjkxNGU0YzNmYjAyNjMxZjAyMmQ5
Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1ZWQzNGE2Zjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5j
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNv
bnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBJc29D
ZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVuYykKIHsK
ICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPiB7
CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAgUmVmUHRyPFNoYXJlZFRhc2s8dm9p
ZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVs
KGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXNvQ2VsbFNldCYgbV9zZXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2Nr
U291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4g
bV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7CiAgICAgICAgIExvY2sgbV9sb2Nr
OwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKCp0aGlzLCBmdW5j
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywgZnVuYykpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2Uu
Y3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4NzIxMzMxMGFmYjhiMzEuLmUxNGEz
NzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3BhY2U6OnBh
cmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5Kigp
Pj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKIHsKICAgICBjbGFzcyBUYXNr
IDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+IHsKICAgICBwdWJsaWM6CkBA
IC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+
IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIExvY2sgbV9sb2Nr
OwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKG1fZmlyc3REaXJl
Y3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKG1fZmlyc3REaXJlY3Rvcnkp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNw
YWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRhc2s8
TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2Vk
QmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQYXJhbGxlbFNvdXJjZUFkYXB0ZXI8
QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxlKj4oCiAgICAgICAgIHBhcmFsbGVs
RGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAppbmRl
eCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5YTVmNGIxLi44M2VmNGQ3NDlmYmM4
Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmMmKTsK
ICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IHBhcmFsbGVs
RGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+
PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2soY29uc3QgRnVuYyYpOwpAQCAtNzgs
NyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKICAgICAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFu
ZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFs
bGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKGNvbnN0IEZ1bmMmKTsK
QEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHZvaWQgZm9yRWFjaE1hcmtl
ZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0g
ICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RW
aXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChjb25z
dCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5o
CmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4NjA5NzQwYTYyNjMuLjE2NzEyN2Zm
NDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU3Vic3Bh
Y2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJz
cGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENl
bGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEyMSwx
MyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IFN1YnNw
YWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uCiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwotICAgICAgICBSZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAgUmVm
PFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAgICAg
ICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAgYm9vbCBtX25l
ZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsKICAgICB9OwogICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZjY0NDA3MWQzZjk3YzZkZDZhNmE2NDAxNGQxNWYxZTQy
ZGE3NDA4Yy4uMGI5OTYxYjhhYzM5ZjNlZDAyZGYyOGZlODQ2ZTJkMmM4OThkNWRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRlKiBl
eGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJlbnQoKS5kZXF1ZXVlKCk7CiAgICAg
fQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CisgICAgUmVmPEFycmF5QnVm
ZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJlbGVhc2VD
b250ZW50cygpKTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0
aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0g
SlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFy
cmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApp
bmRleCA0ZTVlZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhkNWUxOTk5NzFmLi44OTViMjliNmM5
ZTE1MjM1ZDM0NWQ5NDI4YTM1MzkzYTNjOGE4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODksMjAgKzI4OSwyMCBAQCB1bnNpZ25l
ZCBBcnJheUJ1ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJu
IGNsYW1wVmFsdWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwogfQogCi1SZWZQdHI8QXJyYXlC
dWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0
CitSZWY8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJs
ZSBlbmQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwg
Y2xhbXBJbmRleChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJ
bmRleChiZWdpbiksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAor
UmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1
bnNpZ25lZCBlbmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/
IGVuZCAtIGJlZ2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IEFycmF5
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwg
c2l6ZSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIHJl
c3VsdC0+c2V0U2hhcmluZ01vZGUoc2hhcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGY2
OTljOTQ1YWU0MDRlMmUwYmJkN2NmYmM1ZTk0OWQyODNlYThiZGQuLjMwZmJhNmE2YTA4NDZhMTcy
YjM5ZjE2N2NhMmU0NGMwMDFiZjI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuaApAQCAtMTI4LDggKzEyOCw4IEBAIGNsYXNzIEFycmF5QnVmZmVyIDog
cHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBpbmxpbmUg
c2l6ZV90IGdjU2l6ZUVzdGltYXRlSW5CeXRlcygpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQp
IGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8QXJyYXlCdWZm
ZXI+IHNsaWNlKGRvdWJsZSBiZWdpbiwgZG91YmxlIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwogICAg
IAogICAgIGlubGluZSB2b2lkIHBpbigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0x
NTQsNyArMTU0LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNv
dW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJ
bnRlcm5hbChBcnJheUJ1ZmZlckNvbnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAg
ICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRp
YWxpemF0aW9uUG9saWN5KTsKICAgICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYp
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNp
Z25lZCBlbmQpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVk
IGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OwogICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcElu
ZGV4KGRvdWJsZSBpbmRleCkgY29uc3Q7CiAgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFt
cFZhbHVlKGRvdWJsZSB4LCB1bnNpZ25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGQxYTZjMmI5NmNhNWE4ZmY3ZjdhMzE0ZTYw
MmExYWNhODI1NGMxMjguLjY0ZmZmNGE4N2IwNWMzOThjODgxMWU4ZGI2YzVkM2Q2NmExMDA4NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBjb25z
dCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8gPSB7CiAK
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50KFZNJiB2bSkKICAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludFN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBXYXRjaHBv
aW50U2V0KElzV2F0Y2hlZCkpKQorICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRjaHBvaW50
U2V0KElzV2F0Y2hlZCkpKQogewogfQogCkBAIC02Miw3ICs2Miw3IEBAIFN0cnVjdHVyZSogQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQogCiB2
b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0gICAgc2V0
KCktPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CisgICAgbV9z
ZXQtPmZpcmVBbGwoKnZtKCksICJBcnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCA5YTZmNzFh
OTY4Y2MxOTQ2YTBkNzkzNjExZTA1MmJkNmViYmUwMWE3Li5lNWQ2ZDA5NzRhNThlYmIwYjNhM2U4
ODE1NTQ0YTVhNThmYzQyMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaApAQCAtNDQs
MTQgKzQ0LDE0IEBAIGNsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYpOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJuIG1fc2V0
LmdldCgpOyB9CisgICAgV2F0Y2hwb2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0KCk7
IH0KICAgICAKICAgICB2b2lkIGZpcmVBbGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKICAgICAKLSAgICBSZWZQdHI8V2F0
Y2hwb2ludFNldD4gbV9zZXQ7CisgICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDZjMGI5NzEwNWI3ZTc3MTk2
OTdiNTQyMWEyNjM2ZjFhNGFmMmUwN2UuLjc5MThiNjJiMDcyMmFjYmVmN2FhNzI5YzQwYjQ3Njkz
MWMwZGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC01Niw5ICs1Niw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBlbmQgPSB0aGlzT2JqZWN0LT5pbXBsKCkt
PmJ5dGVMZW5ndGgoKTsKICAgICAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1ZmZlciA9
IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7Ci0gICAgaWYgKCFuZXdCdWZm
ZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKSk7CisgICAgUmVmPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2Jq
ZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0pLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShu
ZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCmluZGV4IGFmOGZmNWEw
YTgwY2U4YmFhYWQwN2ExZDViY2E2MTQwY2VlMDMwZTEuLjIzOGVlNjdjMzgyODQxOWIzM2YxNDll
MmI0M2I2MjY1ZTg3NGQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBO
YXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3ImLCBEb2N1
bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0IGltcGxl
bWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCi0gICAgICAgIFJl
ZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3Rl
bSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24gPSBDRE06OmNyZWF0ZShkb2N1bWVudCwg
a2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92
ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZN
b3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCAwN2E0Y2RkZDFkNGIzY2Y0MzM5ZjJiMGM5ODdhM2UxZDI3MWFm
MmYwLi4yY2UzYzhhMGY4NzM5OTQxOWI5ZjA4Y2IzZmU0YmNiMmQ3NzgwZDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzQsMTQgKzIzNCwxNCBA
QCB2b2lkIEZldGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgbV9jb25zdW1lci5sb2Fk
aW5nU3VjY2VlZGVkKCk7CiB9CiAKLVJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zdAorUmVmPEZvcm1E
YXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKGlzVGV4dCgpKQogICAgICAgICByZXR1cm4gRm9ybURh
dGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKICAgICAg
ICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gYm9keSA9IEZvcm1EYXRhOjpjcmVhdGUo
KTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihibG9iQm9keSgpLnVybCgpKTsKICAgICAgICAg
cmV0dXJuIGJvZHk7CiAgICAgfQpAQCAtMjUxLDE1ICsyNTEsMTMgQEAgUmVmUHRyPEZvcm1EYXRh
PiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkp
OwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keSA9IGNvbnN0
X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOworICAgICAgICBSZWY8Rm9ybURhdGE+
IGJvZHkgPSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSkpOwog
ICAgICAgICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkp
OwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9Ci0gICAgaWYgKGF1dG8qIGRhdGEgPSBtX2Nv
bnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpOworICAgIEFT
U0VSVChkYXRhKTsKKyAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CiB9CiAKIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBkYWFkN2M0MmM0
Nzc5YjFhNDA2OTVkMGYxNTBkN2Y5ZjRiOTk2YzUyLi5iN2IyMjAxNWNkYzAyNjNiZWI0MzBmNDli
OTgzNTkyNjVmNDYwZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRmV0Y2hCb2R5IHsKICAgICB2b2lkIGxvYWRpbmdG
YWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNjZWVkZWQoKTsKIAotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNvbnN0OworICAg
IFJlZjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGNv
bnN0OwogCiAgICAgdXNpbmcgVGFrZW5EYXRhID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
CmluZGV4IDlkMjUwNjc1ZmRlN2MyZWMxZmI2MzFhOTFmZWVhN2NjNDM4YzVhOWIuLjU4YTcyYjEy
MWNlMWY5MzUzOTY3YWIyYTNkNGJiN2Q3NzlkZjhkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zMDQsMTAgKzMwNCwx
MCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUmVmPFBvc2l0aW9uQ2Fs
bGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZQogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVy
OjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNh
bGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVyLmdl
dCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCi0gICAgbV9vbmVT
aG90cy5hZGQobm90aWZpZXIpOworICAgIG1fb25lU2hvdHMuYWRkKFdURk1vdmUobm90aWZpZXIp
KTsKIH0KIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxi
YWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4mJiBl
cnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMmJiBvcHRpb25zKQpAQCAtMzE1LDE0ICszMTUs
MTQgQEAgaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFJlZjxQb3NpdGlvbkNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFAKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlm
aWVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJv
ckNhbGxiYWNrKSwgV1RGTW92ZShvcHRpb25zKSk7Ci0gICAgc3RhcnRSZXF1ZXN0KG5vdGlmaWVy
LmdldCgpKTsKKyAgICBhdXRvIG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywg
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKKyAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIucHRyKCkpOwogCiAgICAgaW50
IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlkIHVudGlsIHdlJ3Jl
IGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBkbyB7CiAgICAgICAg
IHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFyU2VxdWVudGlhbElE
KCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIFdURk1vdmUobm90aWZp
ZXIpKSk7CisgICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIG5vdGlmaWVyLmNv
cHlSZWYoKSkpOwogICAgIHJldHVybiB3YXRjaElEOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjU4ZDg5YTVhZGFiY2E1
ODhhMTlhNDhkOTc4ZjZlZTIyMWY4ZGU3ZS4uMTg0NzQzOTE5MGE4Yjc5YmVmNzA2NDMyZmQyZjlk
NzU1NjkwNzM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIHVpbnQ2NF90IElEQkRhdGFiYXNlOjp2
ZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAotUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKK1Jl
ZjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCi0g
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0
OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1lcygp
KQogICAgICAgICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQobmFtZSk7CiAgICAgb2JqZWN0U3Rv
cmVOYW1lcy0+c29ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmgKaW5kZXggNzZhMTI4NTkxMDEwNDZlNjUyYjhlZGFiNGY3MDNlMGQ0YWQxNTkz
ZS4uMTVkYWNiMTI4MTFkMDMxYjcwZTFlMWNmNzRlOWIwOTM5ZDlmMzI3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01NCw3ICs1NCw3
IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRh
dGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgLy8gSURCRGF0YWJhc2UgSURMCiAgICAg
Y29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKKyAg
ICBSZWY8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgc3Ry
dWN0IE9iamVjdFN0b3JlUGFyYW1ldGVycyB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCA3ZGM1ZTBmNzk5YzBhNjI4NjIwMzJlZmQxZWZjYmFh
ZDhhZDY0ZTk0Li44ZTA3MmE4MzY4MjRiZDY3OTcwYWRjNmE3ZTA1MDA4N2E1MTlkNjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBAQCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
JiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5rZXlQ
YXRoKCk7CiB9CiAKLVJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFt
ZXMoKSBjb25zdAogewogICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gaW5kZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaW5k
ZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogCiAgICAgaWYgKCFtX2RlbGV0ZWQp
IHsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLmluZGV4TmFtZXMoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4
IGVkNjA2NDdlMjA3N2IzOWE5N2RiYzRkZTgwNzkzNWJhMzlhMWQ3OWQuLmQwNDQ5OTMxOWM4MTdl
NTllYmNiNTUxNTZkZDhhMDQyNTNjZThhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBJ
REJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIGNvbnN0
IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0
aCgpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7
CisgICAgUmVmPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCmluZGV4IGNlNzI4ZmNlMjYzODg1YjIwNzk3OGI2Yzg0ZjFiZWQ0NzhkN2RjMTIuLjE3
NWJkZGE3MjcxYjUwMTZjMTliMjdlODI1ZTRhOGYyM2M4OTU5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM3Miwx
MyArMzcyLDEzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVz
dCYgcmVxdWVzdCkKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwogfQogCi12
b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRyYW5zYWN0aW9uOjpz
Y2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBv
cGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRh
aW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBpZGVudGlm
aWVyID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25P
cGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFuc2FjdGlv
bk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwog
CiAgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGVjYWMxNDZlNWQ2
OTJlZmVhOTk5Y2VmMTEwNmE3NmIxMzExODI3MjMuLmJkNmRkZTU2NzczODU0N2FiZjFiYTQ5OGZh
OTcwZDM4Y2Y0MjljNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIElEQlRyYW5zYWN0
aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGlj
IEV2ZW50CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydElu
UHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxl
T3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAg
ICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uPiYmKTsKICAgICB2b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9p
ZCBjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmgKaW5kZXggZTg1NTEyNTMxYjQ2NGQzZDM2MWUzNGIzYjg5YWFjMTM2ZDBiMWZlYy4uOGRk
YjU2ZTE3OGI3MmVmMjFhNjY2ZWIxNjlkZmMxNmVlOTg5MmRlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmgKQEAgLTE4MSw0MCArMTgxLDM3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFuc2FjdGlvbk9wZXJhdGlvbiB7CiAgICAgfQogfTsK
IAotaW5saW5lIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCitpbmxpbmUgUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9p
ZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAg
IHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mKSkK
IHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8Pih0
cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0pOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVy
YXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1w
bDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEm
KSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0
aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJh
dGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgY29t
cGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRp
b24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxN
UDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAyPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIHZvaWQgKElEQlRyYW5z
YWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJU
cmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxLCBNUDIpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewot
ICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1Q
Mj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIy
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAxLCBNUDI+KHRyYW5zYWN0aW9uLCBjb21w
bGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDMsIHR5cGVuYW1lIFAzPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAog
ICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKGNvbnN0IElEQlJlc3VsdERhdGEm
KSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0
aW9uJiwgTVAxLCBNUDIsIE1QMyksCkBAIC0yMjIsMjQgKzIxOSwyMiBAQCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3Bl
cmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFu
c2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFt
ZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2Fj
dGlvbiwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBhcmFtZXRl
cjMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMT4KLVJlZlB0cjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZv
aWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1
bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShUcmFuc2FjdGlv
bk9wZXJhdGlvbiYsIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgYXV0
byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rp
b24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxKTsKLSAgICByZXR1cm4g
YWRvcHRSZWYob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlv
bk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZv
cm0sIHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KLVJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlv
bj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCitSZWY8VHJhbnNhY3Rpb25PcGVyYXRpb24+
IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwKICAgICBJREJSZXF1ZXN0JiByZXF1ZXN0LAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9u
OjoqY29tcGxldGUpKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksCkBAIC0yNDcs
MTIgKzI0MiwxMSBAQCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBw
YXJhbWV0ZXIyKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9u
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGw8TVAx
LCBNUDI+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVy
MSwgcGFyYW1ldGVyMikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgot
UmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigK
K1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAg
ICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJlcXVlc3Qs
CiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0
IElEQlJlc3VsdERhdGEmKSwKQEAgLTI2MSw4ICsyNTUsNyBAQCBSZWZQdHI8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIGF1dG8gb3BlcmF0aW9u
ID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFuc2FjdGlv
biwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMiwgTVAzPih0cmFu
c2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIsIHBhcmFtZXRlcjMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKaW5k
ZXggMTRiYjk3NzUzNmJiZmJmZjJlYWM2MzA5MDY0MDk0NDBkYmZhM2NmYy4uM2FhNDNhOTlhZTA5
ODFjOGZjMGRmNTE2Y2JjZWE2ZmI0MTg3NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMTEwLDggKzExMCw3IEBA
IHZvaWQgTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgU3RyZWFtQ29uc3RyYWludHMm
IGNvbnN0cmFpbnRzLCBQcm9taXNlJiYKICAgICAgICAgdmlkZW9Db25zdHJhaW50cy5zZXREZWZh
dWx0VmlkZW9Db25zdHJhaW50cygpOwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUmVx
dWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5cGU6OlVzZXJN
ZWRpYSwgV1RGTW92ZShhdWRpb0NvbnN0cmFpbnRzKSwgV1RGTW92ZSh2aWRlb0NvbnN0cmFpbnRz
KSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVxdWVz
dC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuOwogfQpAQCAt
MTIzLDggKzEyMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhRGV2aWNlczo6Z2V0RGlzcGxh
eU1lZGlhKGNvbnN0IFN0cmVhbUNvbnN0cmFpbnRzJiBjb25zdHJhCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgYXV0byByZXF1ZXN0ID0gVXNl
ck1lZGlhUmVxdWVzdDo6Y3JlYXRlKCpkb2N1bWVudCwgeyBNZWRpYVN0cmVhbVJlcXVlc3Q6OlR5
cGU6OkRpc3BsYXlNZWRpYSwgeyB9LCBjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRz
LnZpZGVvKSB9LCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAg
cmVxdWVzdC0+c3RhcnQoKTsKKyAgICByZXF1ZXN0LT5zdGFydCgpOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGUxMGI5NmJjOTFkNmZlNThjYzBhYjllY2E2MTI2YWYy
YjM2ODE5M2MuLmExY2I3NGJhNjE5YmI3MjRlNGE2ZTA1N2I5ZDlmZGI5MzgwNzA5YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcApAQCAtNDksOSArNDksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBNZWRpYVN0cmVhbVJlcXVlc3QmJiByZXF1ZXN0LCBET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJiBwcm9taXNlKQorUmVmPFVzZXJNZWRpYVJl
cXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlh
U3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8
TWVkaWFTdHJlYW0+PiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZihu
ZXcgVXNlck1lZGlhUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShw
cm9taXNlKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBVc2VyTWVkaWFSZXF1
ZXN0KGRvY3VtZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAg
cmVzdWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
aAppbmRleCBkZTUxZmQ5ZmM0M2ViMjk3ZTVkMmEyN2U3NjRhYTRkMjdjMzBhNWYxLi42ZGU3ZTVj
OGQ3YmE0MTNlMjAzNjhlNTQwMjc4MDc1MTdiNzUxZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtNDgsNyAr
NDgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZWRpYVJlcXVlc3Q+LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0
ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURM
SW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4mJik7CisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFSZXF1
ZXN0PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYVN0cmVhbVJlcXVlc3QmJiwgRE9NUHJvbWlzZURl
ZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYpOwogICAgIHZpcnR1YWwgflVzZXJN
ZWRpYVJlcXVlc3QoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDBmZjBlMjA0MzgwZTdmZGRiYzAw
ODBiYzU0Y2FhODdhOTczZTA4ZWYuLjc1MDY4ZTE5MGExOWE0NDk0MDY1OWRiZGQzNzRkZjI3ODRk
OWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlRmluYWxW
YWx1ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMsIGJvCiAKICAgICAv
LyBOb3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhlciAodW5p
dHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KICAgICAvLyBOb3RlIHRoYXQgY29ubmVjdGlvbnMg
d291bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYgbmVjZXNz
YXJ5LgotICAgIFJlZlB0cjxBdWRpb0J1cz4gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
MSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsKKyAgICBhdXRvIHN1bW1pbmdCdXMgPSBBdWRpb0J1
czo6Y3JlYXRlKDEsIG51bWJlck9mVmFsdWVzLCBmYWxzZSk7CiAgICAgc3VtbWluZ0J1cy0+c2V0
Q2hhbm5lbE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoYXV0
byYgb3V0cHV0IDogbV9yZW5kZXJpbmdPdXRwdXRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA4OGFl
MDRhYmJlMzllNTE3MzRlYmIwMTdlMjBmMjYxZmJiMDQxZTU2Li5iOWNjMjBjZDJlNWFmYzc2MTFi
MzcwMzA2ZTEwNDEyODQ3YjIwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTg3LDggKzg3LDggQEAg
dm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAvLyBDcmVhdGUgZG91
YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAgICAvLyBU
aGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0
aHJlYWQgYnkgSmF2YVNjcmlwdC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytp
KSB7Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251bWJlck9m
SW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5l
bHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8QXVkaW9C
dWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVm
ZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBs
ZVJhdGUpIDogMDsKKyAgICAgICAgYXV0byBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENo
YW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVm
ZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CisgICAgICAgIGF1dG8gb3V0cHV0QnVmZmVyID0g
bV9udW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOwogCiAgICAgICAg
IG1faW5wdXRCdWZmZXJzLmFwcGVuZChpbnB1dEJ1ZmZlcik7CiAgICAgICAgIG1fb3V0cHV0QnVm
ZmVycy5hcHBlbmQob3V0cHV0QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCAwOTFhMzBhMjZmNTE5YmRjNjgz
OWQwYmM2N2YwNTg2NjNiNjc0YWQxLi43ZTEzZDA2MGIzNTE2ZDI1ZTBiMjNjOWRkNjQwNGY3YWIw
NjM1YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4
ZWN1dGUoRGF0YWJhc2UmIGRiKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFNRTFJl
c3VsdFNldD4gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJl
c3VsdFNldCA9IFNRTFJlc3VsdFNldDo6Y3JlYXRlKCk7CiAKICAgICAvLyBTdGVwIHNvIHdlIGNh
biBmZXRjaCB0aGUgY29sdW1uIG5hbWVzLgogICAgIHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7
CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2Um
IGRiKQogICAgIC8vIEZvciBub3csIHRoaXMgc2VlbXMgc3VmZmljaWVudAogICAgIHJlc3VsdFNl
dC0+c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLmxhc3RDaGFuZ2VzKCkpOwogCi0gICAgbV9yZXN1
bHRTZXQgPSByZXN1bHRTZXQ7CisgICAgbV9yZXN1bHRTZXQgPSBXVEZNb3ZlKHJlc3VsdFNldCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFUuY3BwCmluZGV4IDNkMTU0YWM1YTIxYWU2MWM2NTdhMzAwZmFkOTYzNmJhMGQ4M2Q5MDcuLjBk
YzQxMWFlMzAzZTRiMDg2ZWRiZjlmODY4Zjg1ZGI0ZDFhYzY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcApAQCAtNDAsMTAgKzQwLDcgQEAgUmVmPFdlYkdQVT4g
V2ViR1BVOjpjcmVhdGUoKQogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQ
VUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFwdGVyUHJvbWlzZSYmIGRl
ZmVycmVkKSBjb25zdAogewogICAgIGF1dG8gYWRhcHRlciA9IFdlYkdQVUFkYXB0ZXI6OmNyZWF0
ZShkZXNjcmlwdG9yKTsKLSAgICBpZiAoIWFkYXB0ZXIpCi0gICAgICAgIGRlZmVycmVkLnJlamVj
dCgpOwotCi0gICAgZGVmZXJyZWQucmVzb2x2ZSgqYWRhcHRlcik7CisgICAgZGVmZXJyZWQucmVz
b2x2ZShhZGFwdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRleCBlZWVj
NGRmNjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZlOWE4Li43N2Y5ZjQ5MWU0ZmMxNjE5ZTAw
ZGI5MjY3NDhlYWFiYWJiZDUxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShj
b25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxXZWJHUFVBZGFw
dGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvci4K
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOwogfQogCiBX
ZWJHUFVBZGFwdGVyOjpXZWJHUFVBZGFwdGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQWRhcHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlci5oCmluZGV4IDRiOGVmZjUyMTNiNmJmMmM5NTAyZTYxNjNlNmE0OGQ2ZDQ1YjNmZWMuLjhk
MDRlNTRiZjJhNjQwOGU5ZTg4MjU0YzgyMDRjZWM1NWMxNjgwODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3Ry
dWN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7
CisgICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRl
ckRlc2NyaXB0b3ImKTsKIAogICAgIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZURldmljZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcApp
bmRleCAzNDk0MWQwZWE1Zjc5MjUxY2I0OGRkZWJmNzQxMzQzZjllNGJhNzA5Li45MDlhNWM3NjQy
ZjI0YWY2NDI0OGQ5OTlkYzMxYzRlNDIwZjQwODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVCdWZmZXI6OmNyZWF0
ZShSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZl
cjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdQVUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogV2ViR1BVQnVmZmVy
OjpXZWJHUFVCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGUyNzY0MjViZDQyYjVkNjgyZmJl
MjQyOGE0MDA2ZTIzZjQ5MjM4NzUuLjUxYWViZjJlMmE3ODVhMTlkYTNiMGRiNjg2OGFkYWNkN2Ni
Y2IyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5o
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVQnVm
ZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQnVmZmVyPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOwogCiAgICAg
Y29uc3QgR1BVQnVmZmVyJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1h
bmRCdWZmZXIuY3BwCmluZGV4IGRiYjgwM2JlMjczMjFiOWJlNmNkZjU5ZDkxMWFmYmMwMzM4NDI5
NDIuLmI2ZWNhYWExNWU0MmFkYzhlMmU1MWE0NWUyN2E0ZDQ2ODRhMTJhNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
CkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFu
ZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpKTsKIH0KIAogV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihS
ZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC02NSw4ICs2NSw5IEBAIFJlZlB0cjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5SZW5kZXJQ
YXNzKFdlYkdQVVJlbmRlCiAgICAgICAgIGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0
YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIHsg
Y29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2htZW50LmNs
ZWFyQ29sb3IgfSk7CiAgICAgfQogCi0gICAgYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OmNyZWF0ZShtX2NvbW1hbmRCdWZmZXIuZ2V0KCksIFdURk1vdmUoZ3B1UmVuZGVyUGFz
c0Rlc2NyaXB0b3IpKTsKLSAgICByZXR1cm4gZW5jb2RlciA/IFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpjcmVhdGUoKnRoaXMsIGVuY29kZXIucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOwor
ICAgIGlmIChhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29t
bWFuZEJ1ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpKQorICAg
ICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDcyZGYzMTJmZjg4MGI3OGY3ZWNhMTE2OTMyNTI2Mzky
NDM3YmQxZWYuLjk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwog
CiBjbGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29t
bWFuZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1
ZmZlcj4gY3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CiAKICAg
ICBjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGU3ODQ1MWRkNTZiMDY5YjQ4YjIzZThiNmQyZmU2
ZDNmNTJjOTExMTguLjQ4MjBkNWUzZmEzYzBiZjVjYjNmYTcwNDhlYTAxOWNlMGFjNzYzZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAt
NDcsOCArNDcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxXZWJHUFVEZXZpY2U+
IFdlYkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCiB7Ci0g
ICAgYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFrZSBhZGFw
dGVyIGludG8gYWNjb3VudCB3aGVuIGNyZWF0aW5nIG1fZGV2aWNlLgotICAgIHJldHVybiBkZXZp
Y2UgPyBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5y
ZWxlYXNlTm9uTnVsbCgpKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURl
dmljZTo6Y3JlYXRlKCkpIC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4g
Y3JlYXRpbmcgbV9kZXZpY2UuCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVRGV2
aWNlKFdURk1vdmUoYWRhcHRlciksIGRldmljZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVB
ZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtNjEsOCArNjIs
OSBAQCBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZQogUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gV2ViR1BV
RGV2aWNlOjpjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFZhbGlkYXRpb24gb24gZGVzY3JpcHRvciBuZWVkZWQ/
Ci0gICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3IgeyBkZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSk7Ci0gICAgcmV0dXJu
IGJ1ZmZlciA/IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKSA6
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gYnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihH
UFVCdWZmZXJEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLnVzYWdlIH0p
KQorICAgICAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWY8V2ViR1BVQmluZEdyb3VwTGF5
b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChXZWJHUFVCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKQEAgLTc0LDggKzc2LDkgQEAgUmVm
PFdlYkdQVUJpbmRHcm91cExheW91dD4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoV2ViR1BVQmluZEdyb3VwTGEKIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURl
dmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXaGF0IGNhbiBiZSB2YWxpZGF0ZWQg
aGVyZT8KLSAgICBhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KTsKLSAgICByZXR1cm4g
bW9kdWxlID8gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9kdWxlLnJlbGVhc2VOb25OdWxs
KCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBtb2R1bGUgPSBtX2RldmljZS0+Y3JlYXRlU2hh
ZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLmNvZGUgfSkp
CisgICAgICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShtb2R1bGUucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxpZGF0ZUFuZENvbnZlcnRQaXBlbGlu
ZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpA
QCAtOTYsMTQgKzk5LDE2IEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2
aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gcGlwZWxpbmUgPSBtX2RldmljZS0+Y3JlYXRl
UmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZSgqdmVy
dGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwgZGVzY3JpcHRvci5wcmltaXRpdmVU
b3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pOwotICAgIHJldHVybiBwaXBlbGluZSA/
IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSkg
OiBudWxscHRyOworICAgIGlmIChhdXRvIHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRl
clBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUoKnZlcnRleFN0
YWdlKSwgV1RGTW92ZSgqZnJhZ21lbnRTdGFnZSksIGRlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xv
Z3ksIGRlc2NyaXB0b3IuaW5wdXRTdGF0ZSB9KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBpcGVsaW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVEZXZpY2U6
OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9
IG1fZGV2aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgcmV0dXJuIGNvbW1hbmRCdWZm
ZXIgPyBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNl
LT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCisgICAgICAgIHJldHVybiBXZWJHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZpY2U6OmdldFF1ZXVl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCAxYTFjNTJjYmM5NzUwY2I3NGE2ZGI3NjU3YjJjZTgx
ZDZhMDcwODFhLi5kYWYxYjA4MjI3ZDQ2NTYwMzljMzcyZDM1MzFjMGZmOTg2NDdiNGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxH
UFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVm
ZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVy
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RG
TW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlciks
IFdURk1vdmUoZW5jb2RlcikpKTsKIH0KIAogV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNyZWF0b3IsIFJl
ZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggMzEy
OTZlM2U5ZTgyOGUxMDQyMTBlZDQwNTk3OGUyZTJmMzFmYzA3Zi4uODdhN2VhZjE5ZjA5OTA3MWRi
N2QzYWYwYThkMTRhMDBlZTkyYTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC00MCw3ICs0MCw3IEBA
IGNsYXNzIFdlYkdQVUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgZmlu
YWwgOiBwdWJsaWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShSZWY8V2ViR1BV
Q29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CiAKICAgICAvLyBGSVhNRTog
TGFzdCBhcmd1bWVudCBzaG91bGQgYmUgVmVjdG9yPHVuc2lnbmVkIGxvbmc+LiBXaHkgaXMgdGhl
IGdlbmVyYXRlZCBjb2RlIGluY29ycmVjdGx5IGFzc3VtaW5nIHRoZSBJREwgd2FudHMgYSBzZXF1
ZW5jZTx1bnNpZ25lZCBpbnQ+PwogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBs
b25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYsIFZlY3Rvcjx1bnNpZ25lZD4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAKaW5kZXggM2NjZjNjMGRhMjY1NTZhZjM4Zjk3Mzg2MmE0ODhlYzBjMzFlYTlm
YS4uMTA2YzU3NjgwZDk3NTc5MWZmZjMzODFjMWY5ZDY2MTEzOTI4NjQ1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNw
cApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJH
UFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWY8R1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQ
VVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5l
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92
ZShwaXBlbGluZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQaXBl
bGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwogfQogCiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmgKaW5kZXggMmM4Yjg2NjhmYWY2YmUwOTE0OTQ1NTFmYzczY2FjZDkyMGY5N2QyMi4uMzkxN2Zh
ZDc2N2ZjY2IwZWQ3NWJkZWI3NGNhNmEwZGExM2NjOGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVy
UGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0
ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCiAgICAgUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmUuY29weVJlZigpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJN
b2R1bGUuY3BwCmluZGV4IGU4MjNiMDQ0YThmMDJjZDZiYzU5MjMwNDFjZjhlNTk2Yjg2MWI5OGUu
Ljk5NGMyZWNhMGE5OGJjNWY2ZDM2NGQ5MzYwOWRmOWNkMmExYzdmM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApAQCAt
MzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+
JiYgbW9kdWxlKQorUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpj
cmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOwogfQog
CiBXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNoYWRlck1vZHVsZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmIG1vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggNDIwMjk5NGQ0N2VjMjRhMWZlMDlhNmViNGM2Zjc0NTdh
MGFjNDE4ZC4uNjQ2NjBiMzFlNDU2ZmZhMDgwNTZkZWU1NWI2Y2FkNDViMzMzNzhmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHUFVTaGFk
ZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxHUFVT
aGFkZXJNb2R1bGU+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVh
dGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKICAgICBjb25zdCBHUFVTaGFkZXJNb2R1bGUq
IG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLnB0cigpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKaW5kZXggYzY3ODBlZjYx
YjAyOTlmZWUxOTVmMTI1ZjU2Y2U0ZDhlODYyYzcyNy4uOWQ5ZDdmOTYzYmQyZTkxNTdkODVjZGQz
N2MxODMwOWUyNjM2Y2FkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZS5jcHAKQEAgLTQ0LDggKzQ0LDkgQEAgV2ViR1BVVGV4dHVyZTo6V2ViR1BV
VGV4dHVyZShSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlKQogCiBSZWZQdHI8V2ViR1BVVGV4dHVy
ZVZpZXc+IFdlYkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCiB7Ci0gICAg
YXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsK
LSAgICByZXR1cm4gZ3B1VGV4dHVyZSA/IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoZ3B1VGV4
dHVyZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZ3B1VGV4dHVy
ZSA9IG1fdGV4dHVyZS0+Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkpCisgICAgICAgIHJldHVy
biBXZWJHUFVUZXh0dXJlVmlldzo6Y3JlYXRlKGdwdVRleHR1cmUucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcApp
bmRleCAwNDU5YTUzYTI4OGVjZjNiMjY4ZmMyYzA2NjQ1Yjc0YjEyMzQ2NTFjLi43MjY1OTQ1YTIz
ZTljMTBkMjZhNzAzZGZlNDQyZDBmNDdhYjBmMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCkBAIC0zMCw5ICszMCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBXZWJH
UFVUZXh0dXJlVmlldzo6Y3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCitSZWY8V2ViR1BV
VGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYg
dmlldykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVRleHR1cmVWaWV3KFdURk1v
dmUodmlldykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVUZXh0dXJlVmlldyhX
VEZNb3ZlKHZpZXcpKSk7CiB9CiAKIFdlYkdQVVRleHR1cmVWaWV3OjpXZWJHUFVUZXh0dXJlVmll
dyhSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKaW5kZXggNDBmZDgxNDkyYjA4MWRmY2RjOTFiZWY1
MzgyYWQzZjc5OGE5MzZmNy4uZmJlYjhiYzY2NTYwNDI3N2UwZGYzOTUwM2Y4NzkxYmVjYTA5MmFk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
Vmlldy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
R1BVVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlVmlldz4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IGNyZWF0ZShSZWY8
R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRl
KFJlZjxHUFVUZXh0dXJlPiYmKTsKIAogICAgIFJlZjxHUFVUZXh0dXJlPiB0ZXh0dXJlKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlLmNvcHlSZWYoKTsgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGYxMTRiYTk0OWIwYjMyZDBm
NmU2ODkyMTJkZmQ1MWYzZTEyMzE1YjIuLmY5NjJkYWE5ZGM3N2M4MTQ0YmI2YmY2NTdiN2ZkMGFj
MmEzMDBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcApAQCAtMTc5OSwxMyArMTc5OSwxMyBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2Fj
aGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoUmVmUHRyPFJhbmdlPiBvcmlnaW5hbFJhbgog
ICAgIGlmIChlbmRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgZW5kUG9zaXRpb24gPSBsYXN0
UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKCZvcmlnaW5hbFJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAg
ICAgCi0gICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1
bWVudCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwotICAgIGlmICghc2VhcmNoUmFuZ2Ug
fHwgc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQorICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICBp
ZiAoc2VhcmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBz
dGFydFBvc2l0aW9uLCBvcmlnaW5hbFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgIHVuc2ln
bmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCks
IHRydWUpOwotICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VhcmNoUmFuZ2UuZ2V0
KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxh
aW5UZXh0KHNlYXJjaFJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsK
IH0KIAogc3RhdGljIGJvb2wgaXNSZXBsYWNlZE5vZGVPckJSKE5vZGUqIG5vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3Bw
CmluZGV4IDZmZjY0NGNmNWYwZDBhMjk4MWI0Y2U3ZDhhYWI5MzM2NzZjZDA5ZjAuLmY3Y2QzYWE4
YWRkYTZhNGJjZmE0MTA5NGVkNDU4Y2JjMzdmMWZjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0zMzcsOCAr
MzM3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAgICAgICAgLy8gQ29uc2lkZXIgcHJl
dmlvdXMgdGV4dCBvYmplY3RzIHRoYXQgbWlnaHQgYmUgcHJlc2VudCBmb3IKICAgICAgICAgLy8g
dGhlIGN1cnJlbnQgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8gZW5zdXJlIHdlIGVtaXQgdGhlCiAg
ICAgICAgIC8vIHJpZ2h0IG9mZnNldCAoZS5nLiBtdWx0aWxpbmUgdGV4dCBhcmVhcykuCi0gICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLT5w
YXJlbnROb2RlKCksIDAsIG5vZGUsIDApOwotICAgICAgICBvZmZzZXRUb0VtaXQgPSBvZmZzZXQg
KyBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKKyAgICAgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgMCwgbm9k
ZSwgMCk7CisgICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UucHRyKCkpOwogICAgIH0KIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZSh3cmFwcGVyLCBkZXRhaWwuZGF0YSgpLCBvZmZzZXRUb0VtaXQsIHRleHRUb0VtaXQubGVuZ3Ro
KCksIHRleHRUb0VtaXQudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3Bw
CmluZGV4IGE2ZTk2M2RlYWJmN2QwMWY1MDc4OTNiMDI2MjMyMzRmNjA4ZGE2MDcuLmJjMTZlNGIy
OTAzMTEzOWRjNjRkNmMyMzY4OWFlZDk0Njc1MDQ3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxp
bmsuY3BwCkBAIC0yNjAsOCArMjYwLDggQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5
cGVybGlua0dldFN0YXJ0SW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQogICAgIGlmICghcGFyZW50
Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
cGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKSk7Ci0gICAgcmV0
dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLmdldCgpKTsKKyAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9k
ZShub2RlKSk7CisgICAgcmV0dXJuIGdldFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3Qs
IHJhbmdlLnB0cigpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUh5cGVybGlu
a0dldEVuZEluZGV4KEF0a0h5cGVybGluayogbGluaykKQEAgLTI4Niw4ICsyODYsOCBAQCBzdGF0
aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRrSHlwZXJsaW5r
KiBsaW5rKQogICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJz
dFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGxhc3RQb3NpdGlvbkluT3JBZnRl
ck5vZGUobm9kZSkpOwotICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2Jq
ZWN0LCByYW5nZS5nZXQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+
ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE5vZGUpLCBsYXN0
UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhG
b3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0lzVmFsaWQoQXRrSHlwZXJsaW5rKiBsaW5rKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDE4YzllOWI1Nzk3Yzk5MTZkMjYy
NWE5ZmI0MGM2N2ZmNjMxMDM3ZGUuLmRhNDAyZGEwYmUwY2ZjNDE1YjBlZWQ1N2I0NGZmMmQ3OWFi
Y2M4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTQwNiwxMyAr
NDA2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QoQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsCiAKICAgICAvLyBDYWxjdWxhdGUgcG9z
aXRpb24gb2YgdGhlIHNlbGVjdGVkIHJhbmdlIGluc2lkZSB0aGUgb2JqZWN0LgogICAgIFBvc2l0
aW9uIHBhcmVudEZpcnN0UG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShub2Rl
LT5kb2N1bWVudCgpLCBwYXJlbnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CisgICAg
YXV0byByYW5nZUluUGFyZW50ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBwYXJl
bnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAKICAgICAvLyBTZXQgdmFsdWVzIGZv
ciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGguCiAgICAg
Ly8gVGhlc2UgdmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNvdmVyIHNwZWNpYWwg
Y2FzZXMuCi0gICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9i
amVjdCwgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LmdldCgpLCB0cnVl
KSk7Ci0gICAgUmVmUHRyPFJhbmdlPiBub2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRv
Y3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAgIGludCByYW5nZUxl
bmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLmdldCgpLCB0cnVlKTsK
KyAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZzZXRUb0F0a09mZnNldChjb3JlT2JqZWN0LCBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlSW5QYXJlbnQucHRyKCksIHRydWUpKTsKKyAg
ICBhdXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJh
bmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CisgICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOwogCiAgICAgLy8gU3BlY2lh
bCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gd29ya2luZyB3aXRoICpfRU5EIGJv
dW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgpID09IFVQU1RSRUFNKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDhjN2IxY2YzOGI5Y2I4
OGRiNzhjNjk4ZTZhMDY3NjY0OWUyYzBlNzQuLjdmYjYyZjhlOWQwYTdkM2VjYWU3MDJhNDM5NTYy
ZmMxYzVjMDIzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBA
IC0yNDAxLDEyICsyNDAxLDEyIEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdl
ICopcmFuZ2UKICAgICBpZiAoJnJhbmdlLT5lbmRDb250YWluZXIoKSAhPSBzY29wZSAmJiAhcmFu
Z2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9mKHNjb3BlKSkKICAgICAgICAgcmV0dXJu
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCi0gICAgUmVmUHRyPFJhbmdlPiB0ZXN0UmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwgMCwgJnJhbmdlLT5z
dGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgYXV0byB0ZXN0UmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwgMCwgJnJhbmdlLT5z
dGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CiAgICAgQVNTRVJUKCZ0ZXN0
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gc2NvcGUpOwotICAgIGludCBzdGFydFBvc2l0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBz
dGFydFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UucHRyKCkp
OwogICAgIHRlc3RSYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgcmFuZ2UtPmVu
ZE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBz
Y29wZSk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0
ZXN0UmFuZ2UuZ2V0KCkpOworICAgIGludCBlbmRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgodGVzdFJhbmdlLnB0cigpKTsKICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uoc3RhcnRQ
b3NpdGlvbiwgZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5kZXgg
OWZjMzA2Y2NlMGZhM2U4YTg1YzdjZmVlMGRhMTM2Mzg4NTBkODcxNS4uMzU0NWQ1ZDUxMWZmODY4
MTk4YjE5MzUyYTA4ZDRlMWQyNTZhMzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC03OCw4ICs3OCw4IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxKU0ds
b2JhbE9iamVjdENhbGxiYWNrPiwKIEpTR2xvYmFsT2JqZWN0VGFzazo6SlNHbG9iYWxPYmplY3RU
YXNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFz
aykKICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyB9KQogewotICAgIFJlZlB0
cjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTR2xvYmFsT2JqZWN0Q2FsbGJh
Y2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIG1fdGFzayA9IFtj
YWxsYmFja10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgYXV0byBjYWxsYmFjayA9
IEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s6OmNyZWF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUodGFz
aykpOworICAgIG1fdGFzayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5k
ZXggZjJlYjJmNzhiZTZiZWU4MTViZDA1YTFmOGIwMGZkNTkxYTI4N2FhYi4uZTdkOTM3ZWVhNzRj
MTZiZjlkMWFmNjgzMTQ0ZjUzZDc0NWU5ZTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBKU0RP
TVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3Qs
IFJlZjxKU0M6Ok1pY3IKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCi0gICAgUmVmUHRyPEpTTWljcm90
YXNrQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNP
YmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3Vu
aXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFj
a10oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6
Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOworICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBj
YWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggMzgwYWQ1YmQxNTIw
MTNlODk2Yjg3YWI0MTY1NTU3NjIyZjdlMTZjZi4uZDgzMTYwNGNiYWViODdmMDdkMTJlYWRkYTRi
ZjA1MzFhNzBiYjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTMzLDkgKzEzMyw5IEBAIHZvaWQgSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0
JiBvYmplY3QsIFJlZjxKCiB7CiAgICAgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UmIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSY+KG9iamVjdCk7CiAKLSAg
ICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxi
YWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAgYXV0byBjYWxsYmFj
ayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2sp
KTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBt
aWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihj
b250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFja10oKSBtdXRhYmxlIHsK
KyAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7
CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyTWFjLm1tCmluZGV4IGNhNGY4NzE4OWNjMjk1MTk5NmM4OWQxMzhjMzU2NmEzMWMwY2My
NDkuLmRmOTQ3NmExNmJiM2ZiYzhjNDhjNmVjN2Q2OGIzYzJlYmQ2NWEzN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtODUs
MTAgKzg1LDEwIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gU2NyaXB0Q29udHJv
bGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoCiAgICAgICAgIE5QT2JqZWN0KiBu
cE9iamVjdCA9IFt3aWRnZXRWaWV3IGNyZWF0ZVBsdWdpblNjcmlwdGFibGVPYmplY3RdOwogICAg
ICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNy
ZWF0ZShucE9iamVjdCwgV1RGTW92ZShyb290T2JqZWN0KSk7CisgICAgICAgIGF1dG8gaW5zdGFu
Y2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShucE9iamVjdCwgV1RGTW92ZShy
b290T2JqZWN0KSk7CiAgICAgICAgIC8vIC1jcmVhdGVQbHVnaW5TY3JpcHRhYmxlT2JqZWN0IHJl
dHVybnMgYSByZXRhaW5lZCBOUE9iamVjdC4gIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gcmVs
ZWFzZSBpdC4KICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsKLSAgICAgICAg
cmV0dXJuIGluc3RhbmNlOworICAgICAgICByZXR1cm4gV1RGTW92ZShpbnN0YW5jZSk7CiAjZW5k
aWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiOGQ5YzA1MjhiYThjZWI5ODczY2I2ZjEzMzU5MzYz
NWJjM2ZhYTUuLjQyOWQ1ZTMwZWRjZGRkMWFlYzUxM2Q3OWVhZTM4MDVhNzAyYjY5YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjgyMyw3ICsyODIzLDcgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUod2lk
dGgsIGhlaWdodCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVuZ3RoIHx8IChpbWFn
ZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkgPD0gbGVuZ3RoKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlU2l6ZSk7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlU2l6ZSk7CiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgIGZhaWwoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMjk1OCw3ICsyOTU4LDcgQEAgY2xhc3Mg
Q2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSkpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9zaGFyZWRCdWZm
ZXJzLT5hdChpbmRleCkpKTsKICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0SlNWYWx1
ZShidWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hP
bk92ZXJmbG93KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzQ4NCw3
ICszNDg0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBh
cGlWYWx1ZSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWMsIHZhbHVlKTsKKyAgICBh
dXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVj
LCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIHNj
b3BlLmV4Y2VwdGlvbigpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UuaAppbmRleCA1ZjI4NWU5MWI4ZGY1ZDUxNWU1NTYwZDQ0OTY1ZGE2NDA0MTU0
ZWI0Li4xYjc4OTZiZTE5MDUwZTczYjUzZmQ5NTc1MmYyNTVmODNhOWMzMDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIE9iamNDbGFzczsKIAogY2xhc3MgT2JqY0luc3RhbmNlIDogcHVibGljIEluc3RhbmNlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE9iamNJbnN0YW5jZT4gY3JlYXRlKE9iamVjdFN0
cnVjdFB0ciwgUmVmUHRyPFJvb3RPYmplY3Q+JiYpOworICAgIHN0YXRpYyBSZWY8T2JqY0luc3Rh
bmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4mJik7CiAgICAg
dmlydHVhbCB+T2JqY0luc3RhbmNlKCk7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgc2V0R2xvYmFs
RXhjZXB0aW9uKE5TU3RyaW5nKiwgSlNHbG9iYWxPYmplY3QqIGV4Y2VwdGlvbkVudmlyb25tZW50
ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVudCBtZWFucyB0aGUgZXhjZXB0aW9u
IHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4IDBhZWMwY2VlYWY5YzZj
MmE2MmUyYjA4NWJhMGU3YmM0ZmY4ZWExY2QuLjA1MWRhY2FmZmM2NmFkZjcyNDJjYzQ2MDFjZDMy
YTVjMTE3ZmZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5j
ZS5tbQpAQCAtMTA0LDE2ICsxMDQsMTcgQEAgT2JqY0luc3RhbmNlOjpPYmpjSW5zdGFuY2UoaWQg
aW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCiB7CiB9CiAKLVJlZlB0
cjxPYmpjSW5zdGFuY2U+IE9iamNJbnN0YW5jZTo6Y3JlYXRlKGlkIGluc3RhbmNlLCBSZWZQdHI8
Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQorUmVmPE9iamNJbnN0YW5jZT4gT2JqY0luc3RhbmNl
OjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCiB7
CiAgICAgYXV0byByZXN1bHQgPSB3cmFwcGVyQ2FjaGUoKS5hZGQoKF9fYnJpZGdlIENGVHlwZVJl
ZilpbnN0YW5jZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IHdyYXBwZXIgPSBhZG9wdFJlZihuZXcgT2JqY0luc3Rh
bmNlKGluc3RhbmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7Ci0gICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSB3cmFwcGVyLmdldCgpOworICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dFJlZigqbmV3IE9iamNJbnN0YW5jZShpbnN0YW5jZSwgV1RGTW92ZShyb290T2JqZWN0KSkpOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gd3JhcHBlci5wdHIoKTsKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIHJldHVybiAqcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogT2JqY0luc3RhbmNlOjp+T2JqY0luc3RhbmNlKCkg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCmluZGV4IDY3Nzg0MTIwNmZiZTFlNGUzNzg5YTBmODAyYmRkMWMxZDMzNGI4ZWEuLjZjOTUw
NjY5NDFkNTNlNjVhZWU1ZmQxNWJjZjMwMGRjNDIxYWFhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC04MTIsNyArODEy
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnQKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIH0KIAotUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBDb2xvciYgY29s
b3IpIGNvbnN0CitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIGxv
b2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBjb21wdXRlZCBzdHlsZSBkb2Vzbid0
IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQpAQCAtNDIxNywxMiArNDIx
NywxMiBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6Y29weVByb3BlcnRpZXMoKQogICAgIHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGNvbXB1
dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKTsKIH0KIAotUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JT
aG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFu
ZCkKK1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxl
bmd0aCgpOyArK2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsK
LSAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmUHRy
PENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1
ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhh
bmQpCkBAIC00MjU0LDEyICs0MjU0LDEyIEBAIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhCiAgICAg
cmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCitSZWY8Q1NTVmFsdWVMaXN0PiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhh
bmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKQogICAgICAgICBsaXN0LT5h
cHBlbmQocHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0
ZUxheW91dCkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgcmV0dXJuIFdURk1vdmUobGlzdCk7Cisg
ICAgcmV0dXJuIGxpc3Q7CiB9CiAKIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQq
IHNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNDM1NCw4ICs0MzU0LDggQEAgUmVmPENTU1ZhbHVl
TGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVl
KCkKICAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNl
cGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIH07CiAKICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC0+YXBw
ZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFz
aFNlcGVyYXRvcikpKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFj
a2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3IpKSk7CisgICAgbGlzdC0+YXBw
ZW5kKGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0JlZm9yZVNsYXNo
U2VwZXJhdG9yKSkpOworICAgIGxpc3QtPmFwcGVuZChnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNo
b3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tn
cm91bmQsIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOwogICAgIHJldHVybiBsaXN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKaW5kZXggYmRmMzQzMjcyYTZhYTQxYjc2ZTMxZDJhMTlmZjcxMTc3MjM2N2Y3My4uYWZl
MjA0YmUxNjg4OWNhNzFkYzk1NDVjYjY3MTQ5Yjc2YWJlOTljZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAtODcsMTQgKzg3LDE0
IEBAIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgewogICAgIFJlbmRlckVsZW1lbnQqIHN0
eWxlZFJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN2Z1Byb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVl
PiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0Owor
ICAgIFJlZjxDU1NWYWx1ZT4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgY3VycmVu
dENvbG9yKSBjb25zdDsKICAgICBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhj
b25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmLCBBZGp1
c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7Ci0gICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OworICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3Qg
Q29sb3ImKSBjb25zdDsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
Jik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhh
bmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKICAgICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCYWNr
Z3JvdW5kU2hvcnRoYW5kVmFsdWUoKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYpOworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNo
b3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CiAKICAgICBSZWZQdHI8RWxl
bWVudD4gbV9lbGVtZW50OwogICAgIFBzZXVkb0lkIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDMzYTg1ODllMTc2
MWIwYTgxY2Q5YzQ1NDY1ZjU5YmVkNWIwZTBiYTkuLjA5NTI3ZjFiMTI2YzdjYjVmMmRkZGNiZGE0
MjFhMjg1ZTA1YWRmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cApAQCAtMTcwLDkgKzE3MCw4IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoQ1NTRm9u
dFNlbGVjdG9yKiBmb250U2VsZWN0b3IpCiAgICAgICAgIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkg
ewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNl
LT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgICAgICAg
ICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVD
dXN0b21Gb250RGF0YSgqYnVmZmVyLCBTdHJpbmcoKSwgd3JhcHBpbmcpOworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3Ry
aW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29s
PihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIG9yIG5vdCBm
b250Rm9yRmFtaWx5KCkgcmV0dXJucyBudWxsIG9yIG5vdC4gTHVja2lseSwgbm9uZSBvZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDFlY2M1YmEzNzA4NzkyZmE2MzdmMTZi
MTJjZDczZTExZWZiMDRhNjIuLjgyYjY1Zjg3MDg0OGYxNjcyOWI3MmZmMjhiM2Y1N2EyYWRmZWNl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI1OSwxMSArMjU5LDEx
IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMoKQogICAgIGlmICgh
Y2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gSUUgYmVo
YXZpb3IuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBydWxlTGlzdCA9IFN0YXRpY0NT
U1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxp
c3Q6OmNyZWF0ZSgpOwogICAgIHVuc2lnbmVkIHJ1bGVDb3VudCA9IGxlbmd0aCgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlQ291bnQ7ICsraSkKICAgICAgICAgcnVsZUxpc3Qt
PnJ1bGVzKCkuYXBwZW5kKGl0ZW0oaSkpOwotICAgIHJldHVybiBydWxlTGlzdDsKKyAgICByZXR1
cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5k
ZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCBhMjRhNTM2MjY4OTBhOGE5MWQxMTczOGNh
OWE1OGE0NTM3MWJiOGI4Li5lMzQ5MTcxMjg3ODkwYjk4NzRhNzA0YWI3YjQxYmY2OWNkYTU1YWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBTdHJpbmcgRm9u
dEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPnJhbmdlcygpLnNpemUoKSkKICAgICAgICAg
cmV0dXJuICJVKzAtMTBGRkZGIl9zOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIHJh
bmdlIDogbV9iYWNraW5nLT5yYW5nZXMoKSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTVW5p
Y29kZVJhbmdlVmFsdWU6OmNyZWF0ZShyYW5nZS5mcm9tLCByYW5nZS50bykpOwogICAgIHJldHVy
biB2YWx1ZXMtPmNzc1RleHQoKTsKQEAgLTM5MCw3ICszOTAsNyBAQCBTdHJpbmcgRm9udEZhY2U6
OmZlYXR1cmVTZXR0aW5ncygpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CiAgICAgaWYgKCFtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygpLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuICJub3JtYWwiX3M7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiBmZWF0
dXJlIDogbV9iYWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKSkKICAgICAgICAgbGlzdC0+YXBwZW5k
KENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0
dXJlLnZhbHVlKCkpKTsKICAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCmluZGV4IGZkYjhlM2FmNzlhYzYy
Yjc4OTU2MGI4M2MzN2ViNzQzYzhmZTYxMmYuLmJkZWZlYzRhN2ZhN2M0MGIzNjlhMGEzZDJmMGUz
ZDM2YjcyODc3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NP
TVdyYXBwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFw
cGVycy5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpj
b2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhTdHlsZVNoZWV0Q29udGVudHMqIHMKIHsKICAg
ICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hl
ZXQpOwotICAgIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBw
ZXIpOwotICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIuZ2V0KCkpOworICAgIGF1dG8gc3R5
bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoKnN0eWxlU2hlZXQpOworICAg
IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIuY29weVJl
ZigpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLnB0cigpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDMzMWU4MzYz
ZmFlODdhYjQ1M2ZjMWU3ZDU1MzllMDk4MDZmYjEzNTIuLmIzZTRiOWEwYzU0ZmI5MzY3ZTA0Njcx
NDIyNTk0OTdjYjIxNDFkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZh
bHVlKEdseXBoT3JpZW50CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29u
c3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgZGFzaGVzKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4g
c3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVl
PiYgZGFzaGVzKQogewogICAgIGlmIChkYXNoZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKQEAgLTYw
LDEwICs2MCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NT
U1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFk
anVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29s
b3IpIGNvbnN0CitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNW
R1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNv
bnN0CiB7CiAgICAgaWYgKHBhaW50VHlwZSA+PSBTVkdQYWludFR5cGU6OlVSSU5vbmUpIHsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh1cmwsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q1NTX1VSSSkp
OwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlwZTo6VVJJTm9uZSkKICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9uZSkpOwpAQCAtNzEsNyArNzEsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1BhaW50
VAogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShj
dXJyZW50Q29sb3IpKTsKICAgICAgICAgZWxzZSBpZiAocGFpbnRUeXBlID09IFNWR1BhaW50VHlw
ZTo6VVJJUkdCQ29sb3IpCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKGNvbG9yKSk7Ci0gICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHZhbHVlcyk7CiAgICAgfQogICAgIGlmIChwYWludFR5cGUgPT0gU1ZHUGFp
bnRUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCBkNWVlOTM0ZDIzMDFlOGIzMDE4MmRmZDk3ZDUwZDEwMjYyNmE0M2UxLi5iZmNjNjI0Mzk5
NGQwMDcxNDFhZGNhZjc5ZmVkNzA2MGZjOWI4MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC0xOTgwLDggKzE5ODAsOCBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZUZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdAog
ICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7
CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwog
Ci0gICAgICAgICAgICBSZWZQdHI8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24g
PSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQo
b3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFdURk1vdmUob3BlcmF0aW9u
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuY3BwCmluZGV4IDBkYzEwOThmNTRmODRiYmYyYmE3YmJhMzU5NzFiNjhkNWE5ZGJiZWMuLjFl
ZWZlYjhiZDEwYzI1NGI4MjRiYzA2Y2Q1YjhhZWYwNjYwMjE4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgc3RydWN0IFNhbWVTaXplQXNTdHlsZVJ1bGVC
YXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogCiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoU3R5bGVSdWxlQmFzZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTdHlsZVJ1bGVCYXNlKSwgU3R5
bGVSdWxlQmFzZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1
bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNv
bnN0CitSZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0
eWxlU2hlZXQqIHBhcmVudFNoZWV0KSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVDU1NPTVdy
YXBwZXIocGFyZW50U2hlZXQsIG51bGxwdHIpOwogfQogCi1SZWZQdHI8Q1NTUnVsZT4gU3R5bGVS
dWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitS
ZWY8Q1NTUnVsZT4gU3R5bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBh
cmVudFJ1bGUpIGNvbnN0CiB7IAogICAgIHJldHVybiBjcmVhdGVDU1NPTVdyYXBwZXIobnVsbHB0
ciwgcGFyZW50UnVsZSk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmPFN0eWxlUnVsZUJhc2U+
IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAogICAgIENSQVNIKCk7CiB9CiAKLVJlZlB0cjxD
U1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CitSZWY8Q1NTUnVsZT4gU3R5
bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0
LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NSdWxlPiBydWxl
OwogICAgIFN0eWxlUnVsZUJhc2UmIHNlbGYgPSBjb25zdF9jYXN0PFN0eWxlUnVsZUJhc2UmPigq
dGhpcyk7CkBAIC0xNjksMTEgKzE2OSwxMyBAQCBSZWZQdHI8Q1NTUnVsZT4gU3R5bGVSdWxlQmFz
ZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBDUwogICAg
IGNhc2UgQ2hhcnNldDoKICAgICBjYXNlIEtleWZyYW1lOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBBU1NFUlQocnVsZSk7CisKICAgICBpZiAocGFyZW50UnVsZSkKICAgICAgICAgcnVsZS0+
c2V0UGFyZW50UnVsZShwYXJlbnRSdWxlKTsKLSAgICByZXR1cm4gcnVsZTsKKyAgICByZXR1cm4g
cnVsZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiB1bnNpZ25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VT
aXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggNjgwNzE0MWZlZWE3MWIwNzZh
ZmE5YTRhNjlhM2NkMjZmYzUzMjI4OC4uNzE4MDUyMzEzODQ0MDMyZjc1YzljNmNkMWU1YWE5M2Ri
ZWRkNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtODQsOCArODQsOCBAQCBjbGFzcyBT
dHlsZVJ1bGVCYXNlIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgewogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG5lZWQgZm9yIHRoZSBudWxsIHBhcmVu
dCB2ZXJzaW9uLgotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBudWxscHRyKSBjb25zdDsKLSAgICBSZWZQdHI8Q1NTUnVs
ZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJl
ZjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQg
PSBudWxscHRyKSBjb25zdDsKKyAgICBSZWY8Q1NTUnVsZT4gY3JlYXRlQ1NTT01XcmFwcGVyKENT
U1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVSdWxlQmFz
ZShUeXBlIHR5cGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGZhbHNlKQpAQCAt
MTA4LDcgKzEwOCw3IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3Vu
dGVkQmFzZSB7CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgpOwog
ICAgIAotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0OworICAgIFJlZjxDU1NS
dWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1
bGUqIHBhcmVudFJ1bGUpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV90eXBlIDogNTsKICAgICAv
LyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0TWF0Y2hlZENTU1J1bGVzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IDBmZWU4
NGNkN2ViMjY3OTJlM2RmNmQ0NjdlOTBhNjJmMWZkMGNjNTQuLjgxNGQ0NmIwNWE2N2MxNTk5YTIz
MjhjMzgzMmZlNDBhZjViNjMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcjo6fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IoKQogICAgIGFjY3VtdWxhdG9y
TWFwKCkucmVtb3ZlKG1fdGFyZ2V0LnB0cigpKTsKIH0KIAotUmVmUHRyPENoaWxkTGlzdE11dGF0
aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRl
KENvbnRhaW5lck5vZGUmIHRhcmdldCkKK1JlZjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9y
PiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJOb2Rl
JiB0YXJnZXQpCiB7CiAgICAgQWNjdW11bGF0b3JNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBhY2N1
bXVsYXRvck1hcCgpLmFkZCgmdGFyZ2V0LCBudWxscHRyKTsKICAgICBSZWZQdHI8Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcj4gYWNjdW11bGF0b3I7CkBAIC03MCw3ICs3MCw4IEBAIFJlZlB0
cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yOjpnZXRPckNyZWF0ZShDCiAgICAgICAgIGFjY3VtdWxhdG9yID0gYWRvcHRSZWYobmV3IENo
aWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cDo6Y3JlYXRlRm9yQ2hpbGRMaXN0TXV0YXRpb24odGFyZ2V0KSkpOwogICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWNjdW11bGF0b3IuZ2V0KCk7CiAgICAgfQotICAgIHJl
dHVybiBhY2N1bXVsYXRvcjsKKyAgICBBU1NFUlQoYWNjdW11bGF0b3IpOworICAgIHJldHVybiBh
Y2N1bXVsYXRvci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiBpbmxpbmUgYm9vbCBDaGlsZExpc3RN
dXRhdGlvbkFjY3VtdWxhdG9yOjppc0FkZGVkTm9kZUluT3JkZXIoTm9kZSYgY2hpbGQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaAppbmRleCA5Yjk0MzcxNmRi
Yzg0YzkzYjI2ZjI5MzFiZWE4M2U3ZDExM2FlYTU4Li4yOTY2NzY3NzY4ZjBkNzE0NzQyZTM2YmNl
NWI2MTA4Njk3N2Y5MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlv
blNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA7CiAvLyBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yIGlzIG5vdCBtZWFudCB0byBi
ZSB1c2VkIGRpcmVjdGx5OyBDaGlsZExpc3RNdXRhdGlvblNjb3BlIGlzIHRoZSBwdWJsaWMgaW50
ZXJmYWNlLgogY2xhc3MgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvciA6IHB1YmxpYyBSZWZD
b3VudGVkPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IGdldE9yQ3JlYXRlKENvbnRh
aW5lck5vZGUmKTsKKyAgICBzdGF0aWMgUmVmPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+
IGdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmKTsKICAgICB+Q2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcigpOwogCiAgICAgdm9pZCBjaGlsZEFkZGVkKE5vZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggZDU1YzU2ZjEzNjkz
MjU4YjcyZGZjYmRhNTQ2YmJjN2M2Zjg5YTMwMi4uNWIwODYzMGMzMzAwYjlhNzkwMmZhN2JjYmUy
MmQ2ZTFjMmM2NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAKQEAgLTE2MSw5ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZW5k
ZXJlZFJlY3RzRm9yTWFya2VyKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciwgTm9kZSYg
bgogICAgIEFTU0VSVCghbm9kZS5kb2N1bWVudCgpLnZpZXcoKSB8fCAhbm9kZS5kb2N1bWVudCgp
LnZpZXcoKS0+bmVlZHNMYXlvdXQoKSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlZmFj
dG9yIHRoaXMgc28gdGhhdCB3ZSBkb24ndCB1c2UgUmFuZ2UgKGJlY2F1c2Ugd2Ugb25seSBoYXZl
IG9uZSBOb2RlKSwgYnV0IHN0aWxsIHNoYXJlIGNvZGUgd2l0aCBhYnNvbHV0ZVRleHRRdWFkcygp
LgotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9j
dW1lbnQoKSwgJm5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCAmbm9kZSwgbWFya2VyLmVuZE9m
ZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgYXV0
byBtYXJrZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCAmbm9kZSwgbWFy
a2VyLnN0YXJ0T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOwogICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IGFic29sdXRlTWFya2VyUXVhZHM7CiAgICAgbWFya2VyUmFuZ2UtPmFic29s
dXRlVGV4dFF1YWRzKGFic29sdXRlTWFya2VyUXVhZHMsIHRydWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDEwOWY3MjRjNTgzMTYwYTcx
OGNiNTg3NGQwZWZmODRlYWE0ZmZmYmQuLmE5ZDYyOGM2OGQyODRiNzcwMzU1ZGM0ZTBhNmQxYzI3
NTQwMGU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0
T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3Jl
YXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGlmICgh
Y29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU3R5bGUoZG9jdW1lbnQudXJsKCksIG1f
c3RhcnRUZXh0UG9zaXRpb24ubV9saW5lLCB0ZXh0LCBoYXNLbm93bk5vbmNlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcmllcyA9IE1lZGlh
UXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVu
dCkpOworICAgIGF1dG8gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVk
aWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CiAKICAgICBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiJfcywgdHJ1ZSk7CiAgICAgTWVkaWFRdWVyeUV2
YWx1YXRvciBwcmludEV2YWwoInByaW50Il9zLCB0cnVlKTsKICAgICBMT0coTWVkaWFRdWVyaWVz
LCAiSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldCBldmFsdWF0aW5nIHF1ZXJpZXMi
KTsKLSAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVhdGUoKm1lZGlhUXVlcmllcykgJiYgIXByaW50
RXZhbC5ldmFsdWF0ZSgqbWVkaWFRdWVyaWVzKSkKKyAgICBpZiAoIXNjcmVlbkV2YWwuZXZhbHVh
dGUobWVkaWFRdWVyaWVzLmdldCgpKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRlKG1lZGlhUXVlcmll
cy5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0eWxlU2NvcGUpCkBAIC0x
ODgsNyArMTg4LDcgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAgaWYgKGF1dG8qIGNh
Y2hlZFNoZWV0ID0gaW5saW5lU3R5bGVTaGVldENhY2hlKCkuZ2V0KCpjYWNoZUtleSkpIHsKICAg
ICAgICAgICAgIEFTU0VSVChjYWNoZWRTaGVldC0+aXNDYWNoZWFibGUoKSk7CiAgICAgICAgICAg
ICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKCpjYWNoZWRTaGVldCwgZWxl
bWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRp
YVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgbV9z
aGVldC0+c2V0TWVkaWFRdWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAgICAgICAg
ICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgICAgICAgICBtX3NoZWV0
LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBJ
bmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFN0cmluZyYgdGV4dCkKICAgICBhdXRvIGNvbnRlbnRzID0gU3R5bGVTaGVldENvbnRlbnRzOjpj
cmVhdGUoU3RyaW5nKCksIHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpKTsKIAogICAg
IG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoY29udGVudHMuZ2V0KCksIGVs
ZW1lbnQsIG1fc3RhcnRUZXh0UG9zaXRpb24pOwotICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmll
cyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAgbV9zaGVldC0+c2V0TWVkaWFR
dWVyaWVzKFdURk1vdmUobWVkaWFRdWVyaWVzKSk7CiAgICAgaWYgKCFlbGVtZW50LmlzSW5TaGFk
b3dUcmVlKCkpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQudGl0bGUoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb2ludGVyRXZlbnQuaAppbmRleCBjZjA5MTQzMTI4YzllMmIxMzkyZWE5ZmM5
N2RjOGUwMDVkYWI0ZmZhLi5kZjJhZThiYmQ4MTkzMmJjNDZjMzY2YzA3Y2RlN2I4MDk4ZmQyYThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFBv
aW50ZXJFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKICAgICAgICAgYm9vbCBpc1By
aW1hcnkgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmUHRyPFBvaW50ZXJFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyKQor
ICAgIHN0YXRpYyBSZWY8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQb2ludGVyRXZlbnQodHlwZSwgV1RGTW92ZShpbml0aWFsaXplcikpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmluZGV4IGNmOGUzOTNiODYz
ZjdlNDk5M2NkMjBhMjNmOWFlODU1MjUzOWU3Y2EuLjBkZTg0NjkwNTJiNWNiMzEwYTlhMjZlZGQ0
M2U4MzhiMDUzMTMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oCkBAIC00Niw5ICs0Niw5IEBAIGVudW0gY2xhc3MgVXNlckdlc3R1cmVUeXBlIHsgRXNjYXBl
S2V5LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuIDogcHVibGljIFJlZkNvdW50
ZWQ8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VXNlckdl
c3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBVc2Vy
R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCisgICAgc3RhdGljIFJlZjxVc2VyR2VzdHVyZVRva2Vu
PiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJlVHlw
ZSBnZXN0dXJlVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlckdl
c3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVyZVR5cGUpKTsKICAgICB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVUb2tlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggNTgyYmUw
ZGU1OTMyYzVjYmU0OWM1MWYwYzgxYjhkYzk4MDcxN2QxZS4uOThhYmM3MzZkNzUwNjg0M2YzMjFj
MGQ2YzQyNDkwOWM4MDdjYTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dFRvUmFuZ2UoY29u
c3QgUmFuZ2UmIHJhbmdlLAogICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBv
ZiB0aGUgY29udGFpbmluZyBwYXJhZ3JhcGguIFdlIHVzZSBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJ
blBhcmFncmFwaAogICAgIC8vIHRvIHN0b3JlIHRoaXMgdmFsdWUuIEluIG9yZGVyIHRvIG9idGFp
biB0aGlzIG9mZnNldCwgd2UgbmVlZCB0byBmaXJzdCBjcmVhdGUgYSByYW5nZQogICAgIC8vIHdo
aWNoIHNwYW5zIGZyb20gdGhlIHN0YXJ0IG9mIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgcG9zaXRp
b24gb2YgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUuCi0gICAgUmVmUHRyPFJhbmdlPiBjb3JyZWN0aW9u
U3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFy
YWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3Jh
cGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOworICAgIFJlZjxS
YW5nZT4gY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFydENvbnRhaW5lcigp
LmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlv
bigpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb25PZlJhbmdlV2l0aEFsdGVybmF0aXZl
ID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOwogICAgIGlmICghc3RhcnRQb3NpdGlvbk9mUmFuZ2VX
aXRoQWx0ZXJuYXRpdmUuY29udGFpbmVyTm9kZSgpKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHRUb1JhbmdlKGNv
bnN0IFJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGFrZSBub3RlIG9m
IHRoZSBsb2NhdGlvbiBvZiBhdXRvY29ycmVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgbWFya2Vy
IGFmdGVyIHRoZSByZXBsYWNlbWVudCB0b29rIHBsYWNlLgotICAgIGludCBjb3JyZWN0aW9uU3Rh
cnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVjdGlv
blN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLmdldCgpKTsKKyAgICBpbnQgY29ycmVjdGlv
blN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvcnJl
Y3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZS5wdHIoKSk7CiAKICAgICAvLyBDbG9u
ZSB0aGUgcmFuZ2UsIHNpbmNlIHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbWF5IHdhbnQgdG8g
a2VlcCB0aGUgb3JpZ2luYWwgcmFuZ2UgYXJvdW5kLgogICAgIGF1dG8gcmFuZ2VXaXRoQWx0ZXJu
YXRpdmUgPSByYW5nZS5jbG9uZVJhbmdlKCk7CkBAIC0yNjYsMTIgKzI2NiwxMiBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlv
bihjb25zdCBWaXNpYmxlUwogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0ZWQsIEZyYW1lU2VsZWN0aW9uOjpk
ZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgRnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVj
dGlvblRyaWdnZXJlZCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
Km1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
ZW5kKCkpOwogCiAgICAgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyJiBtYXJrZXJzID0gbV9mcmFt
ZS5kb2N1bWVudCgpLT5tYXJrZXJzKCk7Ci0gICAgbWFya2Vycy5yZW1vdmVNYXJrZXJzKHJhbmdl
LmdldCgpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+IHsgRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCB9LCBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKLSAg
ICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50KTsKLSAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5n
ZS5wdHIoKSwgT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiB7IERvY3VtZW50
TWFya2VyOjpTcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQgfSwgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjpSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7Cisg
ICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCk7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2Vy
OjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjp0aW1lckZpcmVkKCkKQEAgLTQ0MywxMiArNDQzLDEwIEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENv
bXBvc2l0aW9uCiB7CiAgICAgaWYgKCFjb21tYW5kLT53YXNDcmVhdGVMaW5rQ29tbWFuZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
Km1fZnJhbWUuZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgp
LCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKLSAgICBpZiAoIXJhbmdlKQot
ICAgICAgICByZXR1cm47CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUu
ZG9jdW1lbnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBjb21tYW5k
LT5zdGFydGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJrZXJz
LmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKLSAg
ICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hl
Y2tpbmdFeGVtcHRpb24pOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0cigpLCBEb2N1
bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOworICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLnB0
cigpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKIEFsdGVy
bmF0aXZlVGV4dENsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCkKQEAgLTUyNiwxNSArNTI0LDE1IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25B
CiAgICAgaWYgKGVuZE9mU2VsZWN0aW9uID09IHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHByZWNlZGluZ0NoYXJhY3RlclJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBwcmVjZWRpbmdDaGFyYWN0
ZXJQb3NpdGlvbiwgZW5kT2ZTZWxlY3Rpb24pOwotICAgIFN0cmluZyBzdHJpbmcgPSBwbGFpblRl
eHQocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcHJlY2VkaW5nQ2hh
cmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIHByZWNlZGlu
Z0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7CisgICAgU3RyaW5nIHN0cmluZyA9
IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIoKSk7CiAgICAgaWYgKHN0cmlu
Zy5pc0VtcHR5KCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHN0cmluZ1tzdHJp
bmcubGVuZ3RoKCkgLSAxXSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE1hcmsgdGhpcyB3
aGl0ZXNwYWNlIHRvIGluZGljYXRlIHdlIGhhdmUgZGVsZXRlZCBhbiBhdXRvY29ycmVjdGlvbiBm
b2xsb3dpbmcgdGhpcwogICAgIC8vIHdoaXRlc3BhY2UuIFNvIGlmIHRoZSB1c2VyIHR5cGVzIHRo
ZSBzYW1lIG9yaWdpbmFsIHdvcmQgYWdhaW4gYXQgdGhpcyBwb3NpdGlvbiwgd2UKICAgICAvLyB3
b24ndCBhdXRvY29ycmVjdCBpdCBhZ2Fpbi4KLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtl
cnMoKS5hZGRNYXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVsZXRl
ZEF1dG9jb3JyZWN0aW9uKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5hZGRN
YXJrZXIocHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpEZWxl
dGVkQXV0b2NvcnJlY3Rpb24sIG1fb3JpZ2luYWxTdHJpbmdGb3JMYXN0RGVsZXRlZEF1dG9jb3Jy
ZWN0aW9uKTsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpwcm9jZXNzTWFy
a2Vyc09uVGV4dFRvQmVSZXBsYWNlZEJ5UmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYg
cmVzdWx0LCBSYW5nZSYgcmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIGNvbnN0IFN0cmluZyYgc3RyaW5n
VG9CZVJlcGxhY2VkKQpAQCAtNTc1LDIxICs1NzMsMTkgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtl
ciYKICAgICBpZiAoIXNob3VsZFN0YXJ0VGltZXJGb3IobWFya2VyLCBlbmRPZldvcmRQb3NpdGlv
bi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBO
b2RlKiBub2RlID0gZW5kT2ZXb3JkUG9zaXRpb24uY29udGFpbmVyTm9kZSgpOwotICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBu
b2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKLSAg
ICBpZiAoIXdvcmRSYW5nZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBjdXJy
ZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gd29yZFJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBub2RlLCBtYXJrZXIuc3RhcnRP
ZmZzZXQoKSwgbm9kZSwgbWFya2VyLmVuZE9mZnNldCgpKTsKKyAgICBTdHJpbmcgY3VycmVudFdv
cmQgPSBwbGFpblRleHQod29yZFJhbmdlLnB0cigpKTsKICAgICBpZiAoIWN1cnJlbnRXb3JkLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9vcmlnaW5hbFRleHQgPSBjdXJy
ZW50V29yZDsKICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKCkpIHsKICAgICBjYXNlIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZzoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRS
YW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdl
KTsKICAgICAgICAgbV9kZXRhaWxzID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25z
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQ6
Ci0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSB3b3JkUmFuZ2U7CisgICAgICAgIG1f
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CiAgICAgICAgIG1fZGV0
YWlscyA9IG1hcmtlci5kZXNjcmlwdGlvbigpOwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4
dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbik7CiAgICAgICAgIGJyZWFrOwpA
QCAtNTk5LDcgKzU5NSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9u
ZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAgICAgICAgIGF1dG8m
IG1hcmtlckRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uRGF0YT4obWFy
a2VyLmRhdGEoKSk7CiAgICAgICAgIGlmIChjdXJyZW50V29yZCAhPSBtYXJrZXJEYXRhLm9yaWdp
bmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9yYW5nZVdpdGhB
bHRlcm5hdGl2ZSA9IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9
IFdURk1vdmUod29yZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gbWFya2VyRGF0YS5jb250
ZXh0OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0
VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjM2Q4MTRhZDFkM2ZkYTZhZjg2OTY4OGJm
YzJjYTFiNzljOTVjNmEzLi43YTNhMTYwMGZiYTkzN2RhZDc0MjZmNzRiNjAzNjk3MWZjOGNlMjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAt
MjUwLDEwICsyNTAsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxl
KEVkaXRpbmdTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUp
LCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkp
OwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJh
bmdlLmdldCgpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGVuZFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxl
U3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAg
YXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbklu
Tm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7CisgICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOwogCiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSk7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFydChlbmRPZlBhcmFncmFwaChwYXJh
Z3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NCwxMCArMjg0LDEyIEBAIHZvaWQgQXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlKQogICAgICAgICBu
ZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgp
OwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgZW5kUmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJ
bmRleCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCi0gICAgICAg
IHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgeworICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB0
cnVlKTsKKyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgaWYgKHN0
YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCisgICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJh
bmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgIH0K
IH0KIAogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5U3R5bGVPckNyZWF0
ZUVtcHR5KGNvbnN0IFN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMDUxLDkgKzEwNTMsOSBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShF
ZGl0aW5nU3R5bGUmIHN0eWxlLCBOb2RlKgogICAgICAgICAgICAgZWxlbWVudHNUb1B1c2hEb3du
LmFwcGVuZCgqc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworICAg
ICAgICBhdXRvIHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAg
ICAgIGlmIChpczxIVE1MRWxlbWVudD4oKmN1cnJlbnQpKQotICAgICAgICAgICAgcmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpjdXJyZW50
KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICBy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2FzdDxIVE1MRWxlbWVudD4o
KmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLnB0cigpKTsKIAogICAg
ICAgICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91Z2ggY2hpbGRyZW4gb24gZWFjaCBs
ZXZlbAogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFnZ3JlZ2F0ZSBpbmxpbmUgY2hpbGQg
ZWxlbWVudHMgdG9nZXRoZXIgc28gdGhhdCB3ZSBkb24ndCB3cmFwIGVhY2ggY2hpbGQgc2VwYXJh
dGVseS4KQEAgLTEwNzIsNyArMTA3NCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hE
b3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIE5vZGUqCiAgICAg
ICAgICAgICAvLyBBcHBseSBzdHlsZSB0byBhbGwgbm9kZXMgY29udGFpbmluZyB0YXJnZXROb2Rl
IGFuZCB0aGVpciBzaWJsaW5ncyBidXQgTk9UIHRvIHRhcmdldE5vZGUKICAgICAgICAgICAgIC8v
IEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQgdGhlbiBhbHdheXMgYXBwbHkgdGhl
IHN0eWxlLgogICAgICAgICAgICAgaWYgKCZjaGlsZCAhPSB0YXJnZXROb2RlIHx8IHN0eWxlZEVs
ZW1lbnQpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQs
IHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVTdHls
ZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5wdHIoKSk7CiAKICAgICAgICAgICAg
IC8vIFdlIGZvdW5kIHRoZSBuZXh0IG5vZGUgZm9yIHRoZSBvdXRlciBsb29wIChjb250YWlucyB0
YXJnZXROb2RlKQogICAgICAgICAgICAgLy8gV2hlbiByZWFjaGVkIHRhcmdldE5vZGUsIHN0b3Ag
dGhlIG91dGVyIGxvb3AgdXBvbiB0aGUgY29tcGxldGlvbiBvZiB0aGUgY3VycmVudCBpbm5lciBs
b29wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CmluZGV4IGFjMWYyNzEwZGM3MTE4NDRiMWIzMTM3YTkzNDI2NGNiNWMxZGIwODMuLjMwYjM3MmZi
NTRlYWU5Yjk1ZGY4Y2U3ZjY0NWE0Y2UzZWIzNGUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0zODIsOCArMzgyLDcgQEAgVmVj
dG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5n
ZXMoKSBjb25zdAogICAgIGlmICghZmlyc3RSYW5nZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIFJlZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJh
bmdlKCpmaXJzdFJhbmdlKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVybiB7
IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2UpIH07CiB9CiAKIFZl
Y3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFu
Z2VzRm9yQmluZGluZ3MoKSBjb25zdApAQCAtNzY4LDE1ICs3NjcsMTUgQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2VycyhUZXh0JiBu
b2RlLCB1bnNpZ24KICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlckNvbnRyb2xs
ZXIgPSBkb2N1bWVudCgpLm1hcmtlcnMoKTsKICAgICBhdXRvIG1hcmtlcnMgPSBjb3B5TWFya2Vy
cyhtYXJrZXJDb250cm9sbGVyLm1hcmtlcnNJblJhbmdlKFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIGNvdW50KSwgRG9jdW1lbnRNYXJrZXI6
OmFsbE1hcmtlcnMoKSkpOwogICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUsIG9mZnNldCwgY291
bnQsIHJlcGxhY2VtZW50VGV4dCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIHJlcGxh
Y2VtZW50VGV4dC5sZW5ndGgoKSk7CisgICAgYXV0byBuZXdSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgJm5vZGUsIG9mZnNldCwgJm5vZGUsIG9mZnNldCArIHJlcGxhY2VtZW50VGV4
dC5sZW5ndGgoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBtYXJrZXIgOiBtYXJrZXJzKSB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1hcmtlci5pc0RpY3RhdGlvbigp
KSB7Ci0gICAgICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5nZXQo
KSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCksIG1hcmtlci5hbHRlcm5hdGl2
ZXMoKSwgbWFya2VyLm1ldGFkYXRhKCkpOworICAgICAgICAgICAgbWFya2VyQ29udHJvbGxlci5h
ZGRNYXJrZXIobmV3UmFuZ2UucHRyKCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlv
bigpLCBtYXJrZXIuYWx0ZXJuYXRpdmVzKCksIG1hcmtlci5tZXRhZGF0YSgpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgbWFya2VyQ29udHJvbGxl
ci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0KCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlw
dGlvbigpKTsKKyAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UucHRy
KCksIG1hcmtlci50eXBlKCksIG1hcmtlci5kZXNjcmlwdGlvbigpKTsKICAgICB9CiB9CiAKQEAg
LTE0MTQsMTQgKzE0MTMsMTQgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFn
cmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgICAg
IAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc3RhcnRJblBh
cmFncmFwaCkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAgICAgc3Rh
cnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQoKSwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZW5kSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGVuZEluUGFy
YWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIGVuZEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOworICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNDM3LDE0ICsxNDM2LDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAg
Ly8gc3RhcnQgYW5kIGVuZCBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IHRvIGNyZWF0ZSBhIFJhbmdl
OyB0aGV5IGFyZSAiZWRpdGluZyBwb3NpdGlvbnMiCiAgICAgUG9zaXRpb24gc3RhcnRSYW5nZUNv
bXBsaWFudCA9IHN0YXJ0LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9u
IGVuZFJhbmdlQ29tcGxpYW50ID0gZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0UmFu
Z2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBl
bmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50LmRlcHJl
Y2F0ZWROb2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSwgZW5kUmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kUmFuZ2VDb21wbGlhbnQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbiBp
bmVmZmljaWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4gdGhlIHBhcmFncmFw
aCB0byBtb3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0ZXIgdGhvdWdoLCBzaW5jZSBtb3Zl
ZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBzbWFsbC4KICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CiAgICAgLy8gVGhpcyB1c2VkIHRvIHVzZSBhIHRlcm5h
cnkgZm9yIGluaXRpYWxpemF0aW9uLCBidXQgdGhhdCBjb25mdXNlZCBzb21lIHZlcnNpb25zIG9m
IEdDQywgc2VlIGJ1ZyAzNzkxMgogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlICE9IGVu
ZE9mUGFyYWdyYXBoVG9Nb3ZlKQotICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZSgq
cmFuZ2UsIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tz
VG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3Vh
bEFwcGVhcmFuY2UocmFuZ2UuZ2V0KCksIG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6
Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpZZXMpLCBlbXB0eVN0cmluZygpKTsKIAogICAg
IC8vIEEgbm9uLWVtcHR5IHBhcmFncmFwaCdzIHN0eWxlIGlzIG1vdmVkIHdoZW4gd2UgY29weSBh
bmQgbW92ZSBpdC4gIFdlIGRvbid0IG1vdmUgCiAgICAgLy8gYW55dGhpbmcgaWYgd2UncmUgZ2l2
ZW4gYW4gZW1wdHkgcGFyYWdyYXBoLCBidXQgYW4gZW1wdHkgcGFyYWdyYXBoIGNhbiBoYXZlIHN0
eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCAxYmM5YjQwZTZmZTljYTc5N2NiZjY3ZTc2ZDZlNjY1NWViMDk3NWE2Li5hNmQx
NzYwYzJiMGNmOTRmOTgyMTMzZTIxMmRlNDVjMTlkZGY1MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTY5Myw5ICs2OTMs
OSBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURl
c3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1l
cmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSk7Ci0gICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQorICAgIGF1
dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01v
dmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kT2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7
CisgICAgYXV0byByYW5nZVRvQmVSZXBsYWNlZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
bWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOworICAgIGlmICghZnJhbWUoKS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92
ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UucHRyKCksIHJhbmdlVG9CZVJlcGxhY2VkLnB0cigpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQYXJhZ3JhcGhzIHdpbGwgaW5zZXJ0
IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0aGF0IHdvdWxkIHJlcXVpcmUgdGhl
aXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4
IGNjYTRlZGUxYmE0NGMyMzNhNjM4MTg3N2VhY2E1ODE1ODc0ZWVlNWMuLjg2ZDAyMWQxOGE0Nzkx
M2VlYTBiNzY2NDhlZjlmZjljZjA0MmQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNw
cApAQCAtMTExNyw5ICsxMTE3LDkgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
ckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiBub2RlLCBpbnQgaW4KICAgICBpZiAo
aW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJuIHsgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KCZub2RlKSwgRE9XTlNUUkVBTSB9OwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUobm9kZS5kb2N1bWVudCgpKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShub2RlLmRvY3VtZW50KCkpOwogICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7
Ci0gICAgQ2hhcmFjdGVySXRlcmF0b3IgaXQoKnJhbmdlKTsKKyAgICBDaGFyYWN0ZXJJdGVyYXRv
ciBpdChyYW5nZS5nZXQoKSk7CiAgICAgaXQuYWR2YW5jZShpbmRleCAtIDEpOwogICAgIHJldHVy
biB7IGl0LmF0RW5kKCkgPyByYW5nZS0+ZW5kUG9zaXRpb24oKSA6IGl0LnJhbmdlKCktPmVuZFBv
c2l0aW9uKCksIFVQU1RSRUFNIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKaW5kZXggNjQyMTZjOTg2MDY0YjY3ZWUzOTk1ZTAwMTM4OWQxYzhhZGI0NzM4YS4uYjM4
YzE1MDllZTk3OWJlOWU0MGZlM2JhZDI5MGQ0NzQyNjYwMDA2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgRWRpdGluZ1N0
eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJl
bnRTdHlsZSA9IGNvcHlQcm9wZXJ0aWVzRnJvbUNvbXB1dGVkU3R5bGUobm9kZS5wYXJlbnROb2Rl
KCksIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+
IG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZub2RlLCBFZGl0aW5nUHJvcGVydGll
c0luRWZmZWN0KTsKKyAgICBhdXRvIG5vZGVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZu
b2RlLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBub2RlU3R5bGUtPnJlbW92ZUVx
dWl2YWxlbnRQcm9wZXJ0aWVzKCpwYXJlbnRTdHlsZSk7CiAKICAgICBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzKiBzdHlsZSA9IG5vZGVTdHlsZS0+c3R5bGUoKTsKQEAgLTgyOCw4ICs4MjgsOCBAQCBi
b29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxl
ZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIGJvb2wgc2hvdWxkUmVtb3ZlU3RyaWtlVGhyb3Vn
aCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVjb3JhdGlvbkNoYW5nZTo6UmVtb3Zl
OwogICAgIGlmIChzaG91bGRSZW1vdmVVbmRlcmxpbmUgfHwgc2hvdWxkUmVtb3ZlU3RyaWtlVGhy
b3VnaCkgewogICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVMaXN0ID0gdGV4
dERlY29yYXRpb25WYWx1ZUxpc3QoKmlubGluZVN0eWxlKSkgewotICAgICAgICAgICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5KCk7Ci0gICAgICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBleHRyYWN0ZWRWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlTGlz
dCA9IHZhbHVlTGlzdC0+Y29weSgpOworICAgICAgICAgICAgYXV0byBleHRyYWN0ZWRWYWx1ZUxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAKICAgICAgICAgICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpOwogICAgICAgICAg
ICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSAmJiB2YWx1ZUxpc3QtPmhhc1ZhbHVlKHVuZGVy
bGluZS5wdHIoKSkpIHsKQEAgLTg1MCw3ICs4NTAsNyBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29u
ZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJl
ZgogICAgICAgICAgICAgaWYgKGV4dHJhY3RlZFZhbHVlTGlzdC0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgICAgICAgICBjb25mbGljdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1
ZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgbmV3VmFsdWVMaXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24sIFdURk1vdmUobmV3VmFsdWVMaXN0KSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hv
dWxkUHJlc2VydmVXcml0CiAgICAgLy8gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0
eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24gb25seSByZW1vdmVzIHRoZSBl
ZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rpb24gd2FzIG1vZGlmaWVkIGluIHRo
ZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJvcGVydGllcywgdGhlbiBhZGQgYSBi
b29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hpY2ggb25lIG9mIGVkaXRpbmdTdHls
ZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxsZWQuCi0gICAgUmVmUHRyPEVkaXRp
bmdTdHlsZT4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBv
c2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKKyAgICBhdXRvIGVkaXRpbmdTdHls
ZUF0UG9zaXRpb24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbiwgRWRpdGluZ1Byb3Bl
cnRpZXNJbkVmZmVjdCk7CiAgICAgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZUF0UG9zaXRpb24gPSBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uLT5tX211dGFibGVTdHlsZS5nZXQoKTsKIAogICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBzdGF0aWMgUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJhY3RFZGl0aW5nUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcgogCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVBbmRJbXBsaWNp
dFN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5T3ZlcnJp
ZGVNb2RlIG1vZGUsIFByb3BlcnRpZXNUb0luY2x1ZGUgcHJvcGVydGllc1RvSW5jbHVkZSkKIHsK
LSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZUZyb21SdWxlcyA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZUZyb21SdWxlcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KCk7CiAgICAgc3R5bGVGcm9tUnVsZXMtPm1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0
aW9uKGVsZW1lbnQpOwogCiAgICAgaWYgKGVsZW1lbnQuaW5saW5lU3R5bGUoKSkKQEAgLTEyODgs
NyArMTI4OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2Vy
aWFsaXphdGlvbihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIFRoZSBwcm9wZXJ0eSB2
YWx1ZSwgaWYgaXQncyBhIHBlcmNlbnRhZ2UsIG1heSBub3QgcmVmbGVjdCB0aGUgYWN0dWFsIGNv
bXB1dGVkIHZhbHVlLiAgCiAgICAgLy8gRm9yIGV4YW1wbGU6IHN0eWxlPSJoZWlnaHQ6IDElOyBv
dmVyZmxvdzogdmlzaWJsZTsiIGluIHF1aXJrc21vZGUKICAgICAvLyBGSVhNRTogVGhlcmUgYXJl
IG90aGVycyBsaWtlIHRoaXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTE5NTEyMz4gU2xhc2hkb3Qg
Y29weS9wYXN0ZSBmaWRlbGl0eSBwcm9ibGVtCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRl
KCk7CisgICAgYXV0byBmcm9tQ29tcHV0ZWRTdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6
OmNyZWF0ZSgpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgY29tcHV0ZWRTdHlsZSgmZWxl
bWVudCk7CiAKICAgICB7CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCYgZWxlbWVu
dCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBtX211dGFibGVTdHlsZS0+
bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoKmZyb21Db21wdXRlZFN0eWxlKTsKKyAgICBtX211
dGFibGVTdHlsZS0+bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoZnJvbUNvbXB1dGVkU3R5bGUu
Z2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5TdHlsZShNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzKiBzdHlsZVRvUmVtb3ZlUHJvcGVydGllc0Zyb20sIE11dGFibGVTdHls
ZVByb3BlcnRpZXMqIHN0eWxlKQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9pZCBFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50JiBlbGVtZW50
LCBOb2RlKgogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbigqbV9t
dXRhYmxlU3R5bGUsICpzdHlsZUZyb21NYXRjaGVkUnVsZXMpOwogCiAgICAgLy8gMi4gUmVtb3Zl
IHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92ZXJyaWRkZW4gYnkgbWF0Y2hlZCBy
dWxlcy4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0
eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CisgICAgYXV0
byBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ1By
b3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgaWYgKGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxl
KSB7CiAgICAgICAgIGlmICghY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKQogICAgICAgICAgICAgY29t
cHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKQEAgLTE4MDIsNyArMTgwMiw3IEBAIHN0
YXRpYyBib29sIGZvbnRXZWlnaHRJc0JvbGQoVCYgc3R5bGUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgogc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBleHRyYWN0UHJvcGVydGllc05v
dEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgVCYgYmFz
ZVN0eWxlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHJlc3VsdCA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCZzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzKTsK
ICAgICByZXN1bHQtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGJhc2VTdHlsZSk7CiAgICAg
QVNTRVJUKHJlc3VsdC0+c3R5bGUoKSk7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IG11dGFibGVTdHlsZSA9ICpyZXN1bHQtPnN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggZTVhZTcxMzM2ZmIxZmFkZjFmN2U2OWU4YmVjZGZjM2M5N2Q4YjNkMy4uNTlhNGI4
MWFhMTcxNzYxM2EyYTQ2Nzc1OGJmYjkwZTUxMjBmYmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMTc5NSw5ICsxNzk1LDkgQEAgdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpcmVjdGlvbiwgZGlyZWN0aW9uID09IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8g
Imx0ciIgOiBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQgPyAicnRs
IiA6ICJpbmhlcml0IiwgZmFsc2UpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlv
bihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgYXBw
bHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRX
cml0aW5nRGlyZWN0aW9uKTsKIH0KIAogV3JpdGluZ0RpcmVjdGlvbiBFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdApAQCAtMjAyMyw4ICsyMDIzLDgg
QEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KIAogICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQg
PSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uU3RhcnQsIGV4dGVudE9mZnNldCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgYmFzZU9m
ZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7Ci0gICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJhc2VOb2RlLT5kb2N1bWVudCgp
LCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwotICAgICAgICAgICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJF
QU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6Tm8pOworICAgICAgICAgICAg
YXV0byBzZWxlY3RlZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShiYXNlTm9kZS0+ZG9jdW1lbnQoKSwg
YmFzZU5vZGUsIHN0YXJ0LCBiYXNlTm9kZSwgZW5kKTsKKyAgICAgICAgICAgIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShzZWxlY3RlZFJhbmdlLnB0cigpLCBET1dOU1RSRUFN
LCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Ok5vKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNTZjYTVi
ZjBhN2Y4OTM0MGVjN2IyNDJmMDE1YjBlNTc4Y2MzOWQ1Ny4uOWZkYWMxZDYxMTk1MzhhY2UzZDRi
ZjhjMGVlMzE3OWY0N2M4YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5
bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdAogCiBz
dGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRv
ckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCiB7Ci0gICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3Jl
YXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgp
OwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlKTsKICAg
ICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJj
ZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChz
b3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgp
LCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlVG9T
ZWxlY3Rpb24oc3R5bGUucHRyKCksIGFjdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50
ZXJmYWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxl
LmdldCgpKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHls
ZS5wdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTU4MiwyNyArNTgyLDI3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVKdXN0aWZ5
UmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5p
Y29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5
bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZy
YW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRp
bmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsK
KyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlTm9ybWFs
KTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9u
OjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0
eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJp
Z2h0VG9MZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZVJ0bCk7Ci0gICAgZnJhbWUuZWRpdG9y
KCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlv
bik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIoKSwgRWRpdEFjdGlv
bjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAppbmRleCA2ZjUzMjA4ZmU2
YzIxNDhhMDI1NjM3YjYxMGViMzJhZGM2ZjAxODcyLi5lNDM2YzdmZGUyMWRiYjIwMzRiNTljNWI5
NTI4OWZhM2NmZWQ3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1h
dEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9j
a0NvbW1hbmQuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgdm9pZCBGb3JtYXRCbG9ja0NvbW1hbmQ6
OmZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwK
ICAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFydC5kZXByZWNhdGVkTm9kZSgpID09
IG5vZGVUb1NwbGl0VG8pID8gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA6IHNwbGl0VHJlZVRvTm9k
ZSgqc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSwgKm5vZGVUb1NwbGl0VG8pOwogICAgIFJlZlB0cjxO
b2RlPiBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbiA9IG91dGVyQmxvY2s7CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydCwgZW5kT2ZT
ZWxlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0
YXJ0LCBlbmRPZlNlbGVjdGlvbik7CiAgICAgRWxlbWVudCogcmVmTm9kZSA9IGVuY2xvc2luZ0Js
b2NrRmxvd0VsZW1lbnQoZW5kKTsKICAgICBFbGVtZW50KiByb290ID0gZWRpdGFibGVSb290Rm9y
UG9zaXRpb24oc3RhcnQpOwogICAgIC8vIFJvb3QgaXMgbnVsbCBmb3IgZWxlbWVudHMgd2l0aCBj
b250ZW50ZWRpdGFibGU9ZmFsc2UuCiAgICAgaWYgKCFyb290IHx8ICFyZWZOb2RlKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHJlZk5vZGUtPnRhZ1FO
YW1lKCkpICYmIHN0YXJ0ID09IHN0YXJ0T2ZCbG9jayhzdGFydCkKLSAgICAgICAgJiYgKGVuZCA9
PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9k
ZSwgKnJhbmdlKSkKKyAgICAgICAgJiYgKGVuZCA9PSBlbmRPZkJsb2NrKGVuZCkgfHwgaXNOb2Rl
VmlzaWJseUNvbnRhaW5lZFdpdGhpbigqcmVmTm9kZSwgcmFuZ2UuZ2V0KCkpKQogICAgICAgICAm
JiByZWZOb2RlICE9IHJvb3QgJiYgIXJvb3QtPmlzRGVzY2VuZGFudE9mKCpyZWZOb2RlKSkgewog
ICAgICAgICAvLyBBbHJlYWR5IGluIGEgYmxvY2sgZWxlbWVudCB0aGF0IG9ubHkgY29udGFpbnMg
dGhlIGN1cnJlbnQgcGFyYWdyYXBoCiAgICAgICAgIGlmIChyZWZOb2RlLT5oYXNUYWdOYW1lKHRh
Z05hbWUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1h
dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcAppbmRleCBjMTliNzc0YWQ2YjMwM2IzOTUwYzZhMTE1NzQwNWY5NDhiYWNjYWMyLi40ZWMw
YjRlNTVjM2VhZjY0MDhmMjUwNTk5NmNhMWRjZGFhNWYyMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKQEAgLTgzLDEzICs4MywxMyBAQCB2
b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIEdldCB0aGUgZGVmYXVs
dCBzdHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdzIHRoZSBzdHlsZSB0aGF0IHdlJ2xs
IGdpdmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3JlIG9wZXJhdGluZyBvbi4KICAgICBO
b2RlKiByb290ID0gZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IGRlZmF1bHRTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KHJvb3QpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocm9v
dCk7CiAKICAgICAvLyBXZSB3YW50IHRvIHJlbW92ZSBldmVyeXRoaW5nIGJ1dCB0cmFuc3BhcmVu
dCBiYWNrZ3JvdW5kLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYWNjZXNzIHN0eWxlKCku
CiAgICAgZGVmYXVsdFN0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgQ1NTVmFsdWVUcmFuc3BhcmVudCk7CiAKLSAgICBhcHBseUNvbW1hbmRUb0Nv
bXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHls
ZS5nZXQoKSwgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRpdGluZ0FjdGlvbigp
KSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0
ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUucHRyKCksIGlzRWxlbWVudEZvclJlbW92ZUZvcm1h
dENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXggNTAy
YmMwNGQzNTNiMjgzZTE4OTJlZGUyNDhjOGJlMDY2NWRmNzA5MS4uMDQxZjlkMTE3ZDZhMDFlYjJj
NTg1YThiMjE0ZDMzZGNlOGQ4ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODksOCArODksNyBAQCBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZl
bnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gUmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogewotICAgIFJl
ZlB0cjxTdGF0aWNSYW5nZT4gcmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKCpt
X3JhbmdlVG9CZVJlcGxhY2VkKTsKLSAgICByZXR1cm4geyAxLCByYW5nZSB9OworICAgIHJldHVy
biB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKm1fcmFuZ2VUb0JlUmVwbGFjZWQp
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggNDgwNGU5MGE4ZTIyOWNi
OTg0ZDZmNGM3NjUxYzJmOTE4YjVlYzU2NS4uZjgyMzlkMmFhNzFmZmMxZjcxNTE3NmVhMGY1MzY2
YTI2MGQ5N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKElu
c2VydAogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxl
bWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxp
bmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5n
U3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUp
OworICAgICAgICBhdXRvIG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOwogICAgICAgICBpZiAoaW5saW5lU3R5bGUpIHsKICAgICAgICAgICAgIGlmIChp
czxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFF1YWxp
ZmllZE5hbWU+IGF0dHJpYnV0ZXM7CkBAIC03NjYsNyArNzY2LDcgQEAgc3RhdGljIGJvb2wgaGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNlbWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTm9kZSogd3JhcHBpbmdTdHls
ZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlQXRJbnNlcnRp
b25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOworICAgIGF1dG8gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKGluc2VydGlvblBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAg
U3RyaW5nIHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Qb3MtPnN0eWxlKCktPmFzVGV4dCgp
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RyaW5nIGNvbXBhcmlzb24gaXMgYSBuYWl2ZSB3YXkg
b2YgY29tcGFyaW5nIHR3byBzdHlsZXMuCkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJbnNlcnRlZE5vZGVzJiBpbnNlcnRl
ZE5vZGVzKQogICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUod3Jh
cHBpbmdTdHlsZVNwYW4tPmlubGluZVN0eWxlKCkpOworICAgIGF1dG8gc3R5bGUgPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUoKSk7CiAgICAgQ29u
dGFpbmVyTm9kZSogY29udGV4dCA9IHdyYXBwaW5nU3R5bGVTcGFuLT5wYXJlbnROb2RlKCk7CiAK
ICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3aXRoIGEgUGFzdGUgYXMgUXVvdGF0
aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5nIGludG8gYSBxdW90ZWQgcmVnaW9u
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZC5jcHAKaW5kZXggYzEwOWRiMDRiN2U3MGQ4MGYxYTQ4Zjg1OGRmNGRiYzM2YWYzNzgzYi4u
N2RiM2Y5YjQ1ZDhiM2Y3Njc2ZTMwZjk3ZTA3NmE1ZWE5ODM4MjM3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCkBAIC0x
MjQsOCArMTI0LDcgQEAgU3RyaW5nIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZl
bnREYXRhKCkgY29uc3QKIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IFNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFN0YXRp
Y1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UobV9yYW5nZVRvQmVD
b3JyZWN0ZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07CisgICAgcmV0dXJuIHsgMSwgU3Rh
dGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZShtX3JhbmdlVG9CZUNvcnJlY3RlZCkgfTsKIH0KIAog
UmVmUHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVu
dERhdGFUcmFuc2ZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAKaW5kZXggMDBhMjU3ZjA3YzY2NzFiNzY4M2FiM2U0NzJmMWE5ZjM1N2Fk
NzczYS4uZTg5ZTg3MGE1NmI3MDk0NmM3YWQ3ZWJiYzFjZTk1MTQwYzUyMGU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMzM3LDggKzMz
Nyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JC
YWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgIGlmIChpblNhbWVQYXJhZ3Jh
cGgocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9yYW5nZS0+ZW5kUG9zaXRpb24o
KSkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9t
IHRoZSBlbmQgb2YgdGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBw
YXJhZ3JhcGgsCiAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3aWxsIHdhbnQgdG8gaWdub3JlIHJl
c3VsdHMgaW4gdGhpcyBhcmVhLgotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmRPZmZzZXRB
c1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBtX3JhbmdlLT5lbmRQ
b3NpdGlvbigpKTsKLSAgICAgICAgICAgIGN1cnJlbnRFbmRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBl
bmRPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250
YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBtX3Jh
bmdlLT5lbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGN1cnJlbnRFbmRPZmZzZXQgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZE9mZnNldEFzUmFuZ2UucHRyKCkpOwogICAgICAgICAg
ICAgbGFzdEl0ZXJhdGlvbiA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnRT
dGFydE9mZnNldCA8IGN1cnJlbnRFbmRPZmZzZXQpIHsKQEAgLTM5Nyw4ICszOTcsOCBAQCBTdHJp
bmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihi
b29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQu
aXNFbXB0eSgpICYmICghY2hlY2tHcmFtbWFyIHx8IGJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgp
IHx8IHNwZWxsaW5nTG9jYXRpb24gPD0gZ3JhbW1hckRldGFpbExvY2F0aW9uKSkgewogICAgICAg
ICAgICAgICAgICAgICBpbnQgc3BlbGxpbmdPZmZzZXQgPSBzcGVsbGluZ0xvY2F0aW9uIC0gY3Vy
cmVudFN0YXJ0T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0SXRlcmF0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaE9mZnNl
dEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigp
LmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNldCAr
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UuZ2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0g
UmFuZ2U6OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgp
LCBtX3JhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxpbmdPZmZzZXQgKz0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBvdXRJc1NwZWxsaW5nID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IHNwZWxsaW5nT2Zmc2V0
OwpAQCAtNDA4LDggKzQwOCw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAg
ICAgICAgaWYgKGNoZWNrR3JhbW1hciAmJiAhYmFkR3JhbW1hclBocmFzZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBncmFtbWFyUGhy
YXNlTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBw
YXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGdyYW1tYXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3Jh
cGhPZmZzZXRBc1JhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcGFy
YWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1t
YXJQaHJhc2VPZmZzZXQgKz0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChwYXJhZ3JhcGhPZmZz
ZXRBc1JhbmdlLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBvdXRJc1NwZWxsaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG91dEZpcnN0
Rm91bmRPZmZzZXQgPSBncmFtbWFyUGhyYXNlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHAKaW5kZXggNzliNDNjZWIyODM2N2Y4ODVlYWI1ZWRjYTk4YTIyY2U1
YTJhOGQ2MS4uNjcwNjNlZTE1NjJhZTMxZjIyMDI1YjM1ODUxMWZkZjRkOTk4YTU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0yNjUsOCArMjY1LDggQEAg
dm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZlB0cjxUeXBpbmdDb21tYW5kPiBjbWQgPSBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQs
IEluc2VydFRleHQsIG5ld1RleHQsIG9wdGlvbnMsIGNvbXBvc2l0aW9uVHlwZSk7Ci0gICAgYXBw
bHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgKmNtZCwgc2VsZWN0aW9uRm9ySW5z
ZXJ0aW9uLCBjdXJyZW50U2VsZWN0aW9uKTsKKyAgICBhdXRvIGNtZCA9IFR5cGluZ0NvbW1hbmQ6
OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9ucywgY29tcG9zaXRp
b25UeXBlKTsKKyAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1lLmdldCgpLCBjbWQu
Z2V0KCksIHNlbGVjdGlvbkZvckluc2VydGlvbiwgY3VycmVudFNlbGVjdGlvbik7CiB9CiAKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zKQpAQCAtNDk5LDggKzQ5OSw3IEBAIGJvb2wgVHlwaW5nQ29tbWFuZDo6d2ls
bEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRH
CiAgICAgaWYgKCFyYW5nZSB8fCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCiAgICAg
ICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpKTsKIAotICAgIFJlZlB0
cjxTdGF0aWNSYW5nZT4gc3RhdGljUmFuZ2UgPSBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdl
KCpyYW5nZSk7Ci0gICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygq
dGhpcywgeyAxLCBzdGF0aWNSYW5nZSB9KTsKKyAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53
aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIFN0YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2Uo
KnJhbmdlKSB9KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNv
bW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAzOTUwMzYxYmJhZDU5MTRkZGRkMzIz
NDNiYTc4OGIzMDE3NDc5YzQxLi43ZGI3MmM4ZjA3ZmM4MDE0MWZhZWNlNTBkNzE5Yzk2MmNkZmFj
NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0xODkzLDEw
ICsxODkzLDEwIEBAIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvCiAgICAgYm9vbCB0aGlzSXNTdGFy
dCA9ICh2cCA8IG90aGVyKTsKIAogICAgIC8vIFN0YXJ0IG11c3QgY29tZSBmaXJzdCBpbiB0aGUg
UmFuZ2UgY29uc3RydWN0b3IuCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLAorICAg
IGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHZwLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRl
ZE5vZGUoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodGhpc0lzU3RhcnQgPyB2cCA6IG90aGVyKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodGhpc0lzU3RhcnQgPyBvdGhlciA6IHZwKSk7Ci0gICAgaW50IGRp
c3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CisgICAgaW50
IGRpc3RhbmNlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSk7CiAKICAg
ICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDogZGlzdGFuY2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggNWNjZjQ0NjI0MDk2
ODEzZTg2OTI3ZWIzMDM5MzI0ODlmZjAyOWI5MS4uNWRlNzE2ZmExYWM0YTliNjljODVmMDk2NmJh
MjkzYmZhYmIyNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBh
c3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewotICAgIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9mcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAppbmRleCA3NWY1NGEx
MzEwNGEzNGYzOGQxZDY4NGEzN2YyZWE4OTYzNDIxZDE4Li4yYzRiNjBkMDE0MzMxMTE1Y2I5MTJj
NzBlZDlmY2M1YjI1MzRmM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIERpY3RhdGlv
bkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogICAgIEVsZW1lbnQqIHJvb3QgPSBhZnRlclJlc3VsdHMu
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogCiAgICAgLy8gRklYTUU6IEFkZCB0aGUgcmVzdWx0IG1h
cmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUgcmVzdWx0cyBhcmUgaW5zZXJ0ZWQs
IGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3JzLgotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgp
KTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9F
bmQuZ2V0KCksIHRydWUpOworICAgIGF1dG8gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9j
dW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFm
dGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCksIHRydWUpOwogICAgIGludCBzdGFy
dEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CiAKICAgICBpZiAoc3RhcnRJbmRleCA+
PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggZjM3ZmRl
N2ZmNDVkYmI1NWE1NTYwMjk4MmVlZjJjODljYzRlNGM3Ny4uMjMwZjVlM2I0MTczMmIxZTYyODQ1
MDlkMTQ0NTU4N2RhM2RmMjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNo
YW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIC8vIElm
IHRoZSB0ZXh0IGhhcyBsZWZ0IG9yIHJpZ2h0IGFsaWdubWVudCwgZmxpcCBsZWZ0LT5yaWdodCBh
bmQgcmlnaHQtPmxlZnQuIAogICAgIC8vIE90aGVyd2lzZSwgZG8gbm90aGluZy4KIAotICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0
U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgYXV0
byBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogICAgIGlmICghc2VsZWN0aW9uU3R5bGUg
fHwgIXNlbGVjdGlvblN0eWxlLT5zdHlsZSgpKQogICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzgs
MTcgKzEzOCwxNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNl
V3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgbmV3VmFsdWUpOwotICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0
KCkpOworICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUucHRyKCkpOwogfQogCiB2b2lkIEVk
aXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHJlbW92ZXMgc3R5bGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IG1vZGlmeSBieSBhcHBseWluZyB0
aGVpciBkZWZhdWx0IHZhbHVlcy4KICAgICAKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBlZGl0
aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmJvZHlP
ckZyYW1lc2V0KCkpOwotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBkZWZhdWx0
U3R5bGUgPSBlZGl0aW5nU3R5bGUuZ2V0KCktPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CisgICAg
YXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50
KCktPmJvZHlPckZyYW1lc2V0KCkpOworICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0
eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBp
bXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIg
Ym9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgogICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
MCkiKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxl
U3R5bGVzKCkKICAgICBkZWZhdWx0U3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOyAvLyBpbXBsZW1lbnRzIHVuZGVybGluZQogCiAg
ICAgLy8gRklYTUUgYWRkIEVkaXRBY3Rpb246Ok1hdGNoU3RseWUgPHJkYXI6Ly9wcm9ibGVtLzkx
NTY1MDc+IFVuZG8gcmljaCB0ZXh0J3MgcGFzdGUgJiBtYXRjaCBzdHlsZSBzaG91bGQgc2F5ICJV
bmRvIE1hdGNoIFN0eWxlIgotICAgIGFwcGx5U3R5bGVUb1NlbGVjdGlvbihkZWZhdWx0U3R5bGUu
Z2V0KCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMpOworICAgIGFwcGx5U3R5bGVUb1Nl
bGVjdGlvbihkZWZhdWx0U3R5bGUucHRyKCksIEVkaXRBY3Rpb246OkNoYW5nZUF0dHJpYnV0ZXMp
OwogfQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVsZW1lbnQsIFJlZlB0
cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdlKQpAQCAtMjA5LDggKzIw
OSw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAKICAgICBQb3NpdGlvbiBiZWZvcmVJbWFn
ZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9y
KTsKICAgICBQb3NpdGlvbiBhZnRlckltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRp
b246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7Ci0gICAgUmVmUHRyPFJhbmdlPiBpbWFnZVJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKSwgYmVmb3JlSW1hZ2VQb3Np
dGlvbiwgYWZ0ZXJJbWFnZVBvc2l0aW9uKTsKLSAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShpbWFnZVJhbmdlLmdldCgpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50
VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhKTsKKyAgICBhdXRvIGltYWdlUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBiZWZvcmVJbWFnZVBvc2l0
aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UucHRyKCksIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRU
eXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwogCiAgICAgcGFzdGVib2FyZC53cml0
ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IDQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3ZTc5YmUxZDY5MmYyNWYuLjNmZTZm
NGU3ZTQ1MjEyNWI1MWZhMWZjN2Q0ODA2MWMyYzQ2YmI3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lkIEVkaXRvcjo6cmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2Zy
YW1lKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciks
IFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSks
IEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJBbmNob3IpKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwog
CiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsKIApAQCAtMTc2LDkg
KzE3Niw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKICAgICBib29sIGNob3NlUGxhaW5UZXh0OwotICAgIGlmIChSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQo
cGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKKyAgICBpZiAoUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJk
KHBhc3RlYm9hcmQsIHJhbmdlLmdldCgpLCB0cnVlLCBjaG9zZVBsYWluVGV4dCkpIHsKICAgICAg
ICAgbWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KCpub2RlLCAqZnJhZ21lbnQpOwot
ICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJhZ21lbnQoKmZyYWdtZW50LCByYW5nZS5nZXQoKSwg
RWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQorICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0RnJh
Z21lbnQoKmZyYWdtZW50LCByYW5nZS5wdHIoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQp
KQogICAgICAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCks
IGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJs
b2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSk7CiAgICAgfQogCkBAIC0xODcsNyAr
MTg3LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9k
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7
Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKKyAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
aW5kZXggNzk1YjEyZDBlNjNiMDE1YTlmNTU5YWM3MmY4YjYxYWFiZGExOTgzNC4uYjgzZGFjZDBj
MmIyODYzYWEyMmI2ZGYzOTM1NGJjZmFmM2NlZmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcApAQCAtNzY0LDkgKzc2NCw5IEBAIHN0YXRpYyBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHls
ZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKE5vZGUmIG5vZGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihu
b2RlKTsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CisgICAgYXV0byBzdHlsZSA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKGVsZW1lbnQuaW5saW5lU3R5bGUoKSk7CiAgICAgc3R5bGUtPm1lcmdlU3R5bGVG
cm9tUnVsZXMoZWxlbWVudCk7Ci0gICAgcmV0dXJuIHN0eWxlOworICAgIHJldHVybiBXVEZNb3Zl
KHN0eWxlKTsKIH0KIAogc3RhdGljIGJvb2wgaXNFbGVtZW50UHJlc2VudGF0aW9uYWwoY29uc3Qg
Tm9kZSogbm9kZSkKQEAgLTEyMTEsOCArMTIxMSw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERv
CiAgICAgICAgIC8vIEJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIEkgY2FuIGZpbmQsIGl0IGxv
b2tzIGxpa2Ugd2Ugd2FudCB0byBzdGFydCBwYXJzaW5nIHRoZSBmcmFnbWVudCBpbiB0aGUgSW5C
b2R5IGluc2VydGlvbiBtb2RlLgogICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGF0J3MgYW4g
aW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBwYXJzZXIuCiAgICAgICAgIC8vIFdlIGFjaGll
dmUgdGhhdCBlZmZlY3QgaGVyZSBieSBwYXNzaW5nIGluIGEgZmFrZSBib2R5IGVsZW1lbnQgYXMg
Y29udGV4dCBmb3IgdGhlIGZyYWdtZW50LgotICAgICAgICBSZWZQdHI8SFRNTEJvZHlFbGVtZW50
PiBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKG91dHB1dERvYyk7Ci0gICAgICAg
IGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBmYWtlQm9keS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gZmFrZUJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShvdXRwdXREb2MpOwor
ICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgZmFrZUJvZHkucHRyKCkp
OwogICAgIH0gZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAg
ICBmcmFnbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291
cmNlU3RyaW5nKSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmNwcAppbmRleCAwNDM0MTI5MDJhNDBmZTQxNzFiNzY1MmQ5OGIwYTNlMmUyOGQ1
MTU3Li44OTcxNTVhMTIyOTFkYzRlNTM1MjM0ZTA4OGE4YzQyZWZhMDliNWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKQEAgLTIxNyw5ICsyMTcsNyBA
QCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcpCiB7CiAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGggJiYgbV90b3RhbEJ5
dGVzID4gbV9ieXRlc0xvYWRlZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0Rh
dGEgPSBtX3Jhd0RhdGEtPnNsaWNlKDAsIG1fYnl0ZXNMb2FkZWQpOwotCi0gICAgICAgIG1fcmF3
RGF0YSA9IG5ld0RhdGE7CisgICAgICAgIG1fcmF3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwg
bV9ieXRlc0xvYWRlZCk7CiAgICAgICAgIG1fdG90YWxCeXRlcyA9IG1fYnl0ZXNMb2FkZWQ7CiAg
ICAgfQogICAgIGNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKaW5kZXggZDdlMmI3NWE0NTMxMjBiMDJkN2M3NDJkNDYwZjQ2YTRkZDU5OTQ4
ZS4uZDc4MTEwY2M5ZWRiOWRhMDA0ZDQxNTg0YWM0OWRiYWUwMDI0ZTlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI4MSw3ICsyODEsNyBA
QCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUo
Y29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0
aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMGRjYzg4OTA1MDYzZDJlYjI3MDll
NjJlMzRlOTVlYTA3M2IyODhhNC4uMTgxMGU3MjVlMTgzNDlhYjM2NjU2OGVlMTg1MGNkYmJiZWY5
OWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMDI5
LDcgKzEwMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291
cmNlQnVmZmVyc0NoYW5nZWQoY29uc3QgTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0g
ICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6
Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKTsKKyAgICBhdXRvIGV2ZW50
ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQs
IHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJG
aXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBp
ZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KQEAgLTY0NDUsNyAr
NjQ0NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBS
ZWZQdHI8TWVkaWFDb250cm9scz4gbWVkaWFDb250cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0
ZShkb2N1bWVudCgpKTsKKyAgICBhdXRvIG1lZGlhQ29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpj
cmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4
IGZmOTZmNGYyNDM1YjA5OGUwNjY2MmYzM2NjMjA1ZTAwMGIzNzkxNmQuLjIyNDgwN2EyNjM0ZjAx
ZTkzMzQ5ZTc3YTkzY2Y0NTAxZGFmZDFlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcApAQCAtNDczLDkgKzQ3Myw5IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxC
b3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4g
Tm9Cb3JkZXJzOwogfQogCi1SZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50
OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxl
RWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsK
KyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKICAg
ICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIHN3
aXRjaCAoY2VsbEJvcmRlcnMoKSkgewpAQCAtNTExLDcgKzUxMSw3IEBAIFJlZlB0cjxTdHlsZVBy
b3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCiAgICAg
aWYgKG1fcGFkZGluZykKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5UGFk
ZGluZywgY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKG1fcGFkZGluZywgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCkpOwogCi0gICAgcmV0dXJuIHN0eWxlOworICAgIHJldHVybiBXVEZNb3ZlKHN0
eWxlKTsKIH0KIAogY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVFbGVtZW50OjphZGRp
dGlvbmFsQ2VsbFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKaW5k
ZXggOTEwMzVmMjdjYTRkNDM0MzBhODc5M2FlZDk3YTE5ODFhMzk5MTNiMC4uYTdiN2Y4MWVlNGJj
ZjA3MWY4ODI1ZTNiYjY3NGRjOTUyMWU5M2NhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgSFRNTFRhYmxlRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAKICAgICBDZWxsQm9yZGVycyBjZWxsQm9yZGVycygp
IGNvbnN0OwogCi0gICAgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0
eWxlKCk7CisgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gY3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCk7
CiAKICAgICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogbGFzdEJvZHkoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCmluZGV4IDY1NmFiZmJkYTBiZGJjZTM5M2I4OGNjNTIzNDRiOWNkNjE2
ZTc2ZTkuLjNhOGQ1NDEzZjkzMTQ4ZTEzZjQ5Zjk2ODU1MDYyOWY0YzA5YzM0MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFV0aWxzLmgKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5nIFVSTFV0aWxzPFQ+Ojp0b0pT
T04oKSBjb25zdAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBTdHJpbmcgVVJMVXRpbHM8VD46Om9y
aWdpbigpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYoKSk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGhyZWYoKSk7CiAgICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCmluZGV4IGFjYTUxYTc3ZjAzMTUzMzkyNjYyZjQwYzNkNGUyNTc5YmRkZDA0YjIuLmUy
YjQzZGQ1ZTNiMTU5OWZlZGY4NDA0NWIyZjI4MWYwNmQwMzE2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTY3Miw3
ICs2NzIsNyBAQCBSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhU
TUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZgogICAgIC8vIGh0dHA6Ly93d3cud2hh
dHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RyZWUtY29uc3Ry
dWN0aW9uLmh0bWwjY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10b2tlbgogICAgIERvY3VtZW50
JiBvd25lckRvY3VtZW50ID0gb3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCk7CiAgICAgYm9v
bCBpbnNpZGVUZW1wbGF0ZUVsZW1lbnQgPSAhb3duZXJEb2N1bWVudC5mcmFtZSgpOwotICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVs
ZW1lbnQobG9jYWxOYW1lLCBvd25lckRvY3VtZW50LCBpbnNpZGVUZW1wbGF0ZUVsZW1lbnQgPyBu
dWxscHRyIDogZm9ybSgpLCB0cnVlKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBIVE1MRWxlbWVudEZh
Y3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGluc2lk
ZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOwogICAgIGlmIChVTkxJ
S0VMWSghZWxlbWVudCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSBm
aW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShvd25lckRvY3VtZW50LCBsb2NhbE5hbWUpKSB7CiAg
ICAgICAgICAgICBpZiAoIW1faXNQYXJzaW5nRnJhZ21lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4
IDA4YzZlNTBiNTg1NDhkYzg3NzEzZTIwYzIwODQwOTY2NDJhMTNmYTQuLmUxMTkyYWZmNzBhZTk3
YjAzZTFiN2MyNmMxYzA1NDFhMDJkMjQ2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTIyLDcgKzEy
Miw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlCiAgICAgICAgIC8vIFNldCAiZmxleC1iYXNp
czogMWVtIi4gTm90ZSB0aGF0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KCkg
b25seSBuZWVkcyB0aGUgZWxlbWVudCdzCiAgICAgICAgIC8vIHN0eWxlIHRvIGNhbGN1bGF0ZSBl
bSBsZW5ndGhzLiBTaW5jZSB0aGUgZWxlbWVudCBtaWdodCBub3QgYmUgaW4gYSBkb2N1bWVudCwg
anVzdCBwYXNzIG51bGxwdHIKICAgICAgICAgLy8gZm9yIHRoZSByb290IGVsZW1lbnQgc3R5bGUg
YW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBl
bVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRU1TKTsKKyAgICAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KDEsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKTsKICAgICAgICAgaW50IHBpeGVscyA9IGVt
U2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgeyBuZXdT
dHlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSB9KTsKICAgICAgICAgbmV3
U3R5bGUtPnNldEZsZXhCYXNpcyhMZW5ndGggeyBwaXhlbHMsIEZpeGVkIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAxMTIyN2E3ZWE0
NDNhYjBkYmY5MmNjZTExYjJjM2I2MTdlMjA5MGQ4Li4zNWMyOTMyOTJlYjAxOTM1MDc2NzBiODkw
YTQyNjIwMmQ4OWU1ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCkBAIC01MDIsMTQgKzUwMiwxNCBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gV2ViVlRU
UGFyc2VyOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50RnJvbUN1ZVRleHQoRG9jdW1lbnQmCiAKIHZv
aWQgV2ViVlRUUGFyc2VyOjpjcmVhdGVOZXdDdWUoKQogewotICAgIFJlZlB0cjxXZWJWVFRDdWVE
YXRhPiBjdWUgPSBXZWJWVFRDdWVEYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGN1ZSA9IFdlYlZU
VEN1ZURhdGE6OmNyZWF0ZSgpOwogICAgIGN1ZS0+c2V0U3RhcnRUaW1lKG1fY3VycmVudFN0YXJ0
VGltZSk7CiAgICAgY3VlLT5zZXRFbmRUaW1lKG1fY3VycmVudEVuZFRpbWUpOwogICAgIGN1ZS0+
c2V0Q29udGVudChtX2N1cnJlbnRDb250ZW50LnRvU3RyaW5nKCkpOwogICAgIGN1ZS0+c2V0SWQo
bV9jdXJyZW50SWQpOwogICAgIGN1ZS0+c2V0U2V0dGluZ3MobV9jdXJyZW50U2V0dGluZ3MpOwog
Ci0gICAgbV9jdWVsaXN0LmFwcGVuZChjdWUpOworICAgIG1fY3VlbGlzdC5hcHBlbmQoV1RGTW92
ZShjdWUpKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5uZXdDdWVzUGFy
c2VkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CmluZGV4IDY0M2ZkZDc5YTVmZTE4MmUzZjNjOTFkMjk0MmJlODc2YzM5MzkwYjMuLmM4ZGJhMDIz
MWViMTU1MzFlMzkwN2M5YjU5NmVjMTFjMjIyN2IwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgRXhjZXB0aW9u
T3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgbWFya3VwKQogCiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gbm9kZS5wcmV2aW91
c1NpYmxpbmcoKTsKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCB1c2Ugb25lIG9mIGNy
ZWF0ZUZyYWdtZW50KiBpbiBtYXJrdXAuaAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBhdXRv
IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgIGlm
IChtX2RvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhU
TUwobWFya3VwLCBub2RlLnBhcmVudEVsZW1lbnQoKSA/IG5vZGUucGFyZW50RWxlbWVudCgpIDog
bV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSk7CiAgICAgZWxzZQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEV4Y2VwdGlvbk9yPE5vZGUqPiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBu
b2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCkKIAogICAgIGlmIChpbm5lclBhdGNoQ2hpbGRyZW4o
KnBhcmVudE5vZGUsIG9sZExpc3QsIG5ld0xpc3QpLmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IC8vIEZhbGwgYmFjayB0byB0b3RhbCByZXBsYWNlLgotICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
ZG9tRWRpdG9yLnJlcGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgKmZyYWdtZW50LCBub2RlKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBtX2RvbUVkaXRvci5yZXBsYWNlQ2hpbGQoKnBhcmVudE5vZGUs
IGZyYWdtZW50LmdldCgpLCBub2RlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggMWYz
OGFhMjAwNGIyNTczNDg4YjE2MGQ3MzljZmU5NjMzZWZjNmVjNS4uYzBlYzNmOGI3MjU4NTUxOTU3
M2IyYmM0Y2UwZGVhZWZlNzAyYTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0
aWFsUwogICAgIGlmIChpczxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCkpIHsK
ICAgICAgICAgYXV0byYgY29udGV4dDJkID0gZG93bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPihtX2NvbnRleHQpOwogICAgICAgICBmb3IgKGF1dG8mIHN0YXRlIDogY29udGV4dDJkLnN0
YXRlU3RhY2soKSkgewotICAgICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gc3RhdGVQYXls
b2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGVQYXls
b2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKIAogICAgICAgICAgICAgc3RhdGVQYXlsb2Fk
LT5zZXRBcnJheShzdHJpbmdJbmRleEZvcktleSgic2V0VHJhbnNmb3JtIl9zKSwgYnVpbGRBcnJh
eUZvckFmZmluZVRyYW5zZm9ybShzdGF0ZS50cmFuc2Zvcm0pKTsKICAgICAgICAgICAgIHN0YXRl
UGF5bG9hZC0+c2V0RG91YmxlKHN0cmluZ0luZGV4Rm9yS2V5KCJnbG9iYWxBbHBoYSJfcyksIGNv
bnRleHQyZC5nbG9iYWxBbHBoYSgpKTsKQEAgLTUzMyw3ICs1MzMsNyBAQCBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRJbml0aWFsUwogICAgIGVsc2UgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KG1f
Y29udGV4dCkpIHsKICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dFdl
YkdMQmFzZSA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KG1fY29udGV4dCk7
CiAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IHdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0V2ViR0xCYXNlLmdldENvbnRleHRBdHRyaWJ1dGVz
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHdlYkdMQ29udGV4dEF0dHJp
YnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGF1dG8g
d2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldEJvb2xlYW4oImFs
cGhhIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzLT5hbHBoYSk7CiAgICAgICAgICAgICB3ZWJH
TENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiZGVwdGgiX3MsIHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMtPmRlcHRoKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4dEF0dHJpYnV0
ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJzdGVuY2lsIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVz
LT5zdGVuY2lsKTsKQEAgLTY0Myw4ICs2NDMsOCBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpW
YWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLAog
ICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRlcnNEYXRhKSk7CiAgICAgYWN0aW9u
LT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVzKSk7CiAKLSAgICBSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0
YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxT
dGFja1NpemVUb0NhcHR1cmUpOwotICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZvckRhdGEoV1RG
TW92ZSh0cmFjZSkpKTsKKyAgICBhdXRvIHRyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRD
YWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAgYWN0aW9uLT5hZGRJdGVt
KGluZGV4Rm9yRGF0YSh0cmFjZS5wdHIoKSkpOwogCiAgICAgcmV0dXJuIGFjdGlvbjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcAppbmRleCA4ZTFjNDgyOWRmZjViZWFjMWQ2ZmMwMzIwOWNlYmZkMGM0NTA1
Nzc0Li5hMGMzODg3YTZlZmMyYTA1MWMzYTM1MzE0N2Q3MTM2Y2Y4YWM4YWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgRnJhbWVMb2FkUmVx
dWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2JsYW5rIl9zLCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlciwgQWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIEluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duIH07CiAKICAgICBib29sIGNyZWF0ZWQ7Ci0gICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1haW5GcmFtZSwg
V1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKKyAgICBhdXRvIGZyYW1l
ID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCmluZGV4IDNjZGVjODUwNTFlZDBjMzE0ZTdlNDJjNDliZmJhMDg1NTU1Mzc3Yzcu
Ljk0OThlNzYwYmQ5NjQyYTk3ZDY1ZTNlOWM1YTMzNDAzNDIxMTk2NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ0MCw3ICs0
NDAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1N0eWxl
U2hlZXQqIHN0eWxlU2hlZXQpCiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gbGlzdCA9IFN0YXRpY0NT
U1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6
Y3JlYXRlKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4mIGxpc3RSdWxlcyA9IGxpc3Qt
PnJ1bGVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHN0eWxlU2hlZXQtPmxl
bmd0aCgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBsaXN0UnVsZXMuYXBwZW5kKHN0eWxlU2hl
ZXQtPml0ZW0oaSkpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNv
CiAKICAgICAgICAgYXV0byBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKIAotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQorICAgICAgICBhdXRvIHByb3Bl
cnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKICAg
ICAgICAgICAgIC5zZXROYW1lKG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSkKICAgICAg
ICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKQogICAgICAgICAgICAgLnJlbGVh
c2UoKTsKQEAgLTY5NiwxMSArNjk2LDExIEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9w
ZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9Q
cmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5
LmNvcHlSZWYoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSW5hY3RpdmF0ZSkgewog
ICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25p
Y2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBw
cm9wZXJ0eS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpbXBsaWNpdCA9IG1fc3R5bGUtPmlzUHJvcGVydHlJ
bXBsaWNpdChuYW1lKTsKQEAgLTEzMzIsMTIgKzEzMzIsMTIgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldC0+
aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8U3R5bGVTaGVl
dENvbnRlbnRzPiBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsK
KyAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwog
ICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFyc2Vy
Q29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkpOwog
ICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCks
IG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1bHQu
Z2V0KCkpOwotICAgIENTU1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihjb250ZXh0LCBu
ZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgaGFuZGxlcik7
CisgICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQsIG5ld1N0eWxl
U2hlZXQucHRyKCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVyKTsKICAgICBt
X3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEoV1RGTW92ZShydWxlU291cmNlRGF0YVJl
c3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1NvdXJjZURhdGEoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZjJlZDVlZjg3NjZkMDQ3OWFlNDdkMGQyMzM0ZGQ5N2E0
OTAzMGU5ZC4uY2FkNjY2OTNhN2U3NTM4ZjI5Y2MyMWE5OTlmYzE2NzJjNzUxMTMyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleAog
CiAgICAgY29udGV4dC5jYW52YXNCYXNlKCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOwogCi0gICAgUmVm
UHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpj
cmVhdGUoY29udGV4dCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGlu
c3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMpOworICAgIGF1dG8g
aW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoY29udGV4dCk7CisgICAg
bV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3BlY3RvckNhbnZhcy0+aWRlbnRp
ZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKIAogICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdD
b250ZXgKICAgICBpZiAobV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQpIHsKICAgICAg
ICAgUmVjb3JkaW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwogICAgICAgICByZWNvcmRpbmdP
cHRpb25zLmZyYW1lQ291bnQgPSBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudC52YWx1
ZSgpOwotICAgICAgICBzdGFydFJlY29yZGluZygqaW5zcGVjdG9yQ2FudmFzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdURk1vdmUocmVj
b3JkaW5nT3B0aW9ucykpOworICAgICAgICBzdGFydFJlY29yZGluZyhpbnNwZWN0b3JDYW52YXMu
Z2V0KCksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhdG9yOjpBdXRvQ2Fw
dHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCmluZGV4IGFlM2FjYWZkMDkwYjBhYzE1YzdlZmQ2ZmViODk1OTQ2NDhkODk5NTAu
LmRlYTVjOWEzMWQ0YzkyOGJiMzRlMThjYmRkNDU0OTRhZWIxYWJmMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCkBAIC0xNzYsMTQgKzE3NiwxNCBAQCBzdGF0aWMgUmVmUHRyPEtleVBhdGg+IGtl
eVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBpZAog
ICAgICAgICByZXR1cm4gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpO
dWxsKS5yZWxlYXNlKCk7CiAKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFtd
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRo
ID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpTdHJpbmcpLnJlbGVh
c2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShL
ZXlQYXRoOjpUeXBlOjpTdHJpbmcpLnJlbGVhc2UoKTsKICAgICAgICAga2V5UGF0aC0+c2V0U3Ry
aW5nKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0sIFtdKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB2ZWN0b3IpIHsKICAgICAgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5
T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyaW5nIDogdmVjdG9y
KQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKLSAgICAgICAgUmVmUHRyPEtl
eVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6
OkFycmF5KS5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0
ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVhc2UoKTsKICAgICAgICAga2V5
UGF0aC0+c2V0QXJyYXkoV1RGTW92ZShhcnJheSkpOwogICAgICAgICByZXR1cm4ga2V5UGF0aDsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBlZTQ0ZWFjYWJkZTVhYTEwNzMyNDU1OTQ4MjVjYTc2
ZGQyMzExN2Q1Li5jMGVjM2VmNjhiYmU3YzEyOWQ5NmEwMjFlZGM0OGI1NjI0MTFkNzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFy
Y2hpdmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCiB7CiAjaWYgRU5B
QkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCiAgICAgRnJhbWUmIGZyYW1lID0gbWFpbkZyYW1l
KCk7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkNvdWxkIG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1haW4gZnJhbWUiX3M7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggOWY2
NWFlYmM5ZGY2YTY1YmQyZmY0ODdkZmEzNjdiN2MzZWRmYjk2Mi4uNTYwYzNhNTA2MGNhZTYyZTAw
YzYyODRlMjU5NzM3ODIxMDM5ZWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTM4MywxNCArMzgzLDE0IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiAgICAgfTsK
IAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJsaWMgU3RvcmFn
ZU5hbWVzcGFjZSB7Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0
eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQ
YWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2Up
OyB9CisgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVh
KTsgfQorICAgICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikgZmluYWwgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CiAgICAgfTsKIAot
ICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQp
IGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpIGZp
bmFsOwogfTsKIAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFVzZXJDb250ZW50UHJvdmlkZXIgewpAQCAtNTEzLDIyICs1MTMsMjIgQEAgdm9pZCBFbXB0eUVk
aXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYpCiB7CiB9CiAKLVJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1w
dHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJh
bExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU1MzU0NzkxMTQ3ZTU4OGEwOTRlYjZjYmFjMWI0
MjdhMTdlZmRkYWUuLmE4NzNiMWQwZWFjNzI4ZDhmZWY2ZDBiMjU4MGUyZjg1NGU3MzRhYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTMzOCw3ICsxMzM4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVx
dWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChuZXdV
UkwpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBy
ZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVy
KTsKKyAgICAgICAgYXV0byByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHJlZmVycmVyKTsKICAgICAgICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVl
c3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsKICAgICB9CiAgICAgaWYgKCZtX2ZyYW1l
LnRyZWUoKS50b3AoKSAhPSAmbV9mcmFtZSkKQEAgLTM0ODksNyArMzQ4OSw3IEBAIGJvb2wgRnJh
bWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmlu
ZyYgY29udGVudCwgY29uCiAKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBY
RnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAgICAgICAgYXV0byBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgICAgIGlmICghb3JpZ2luLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBh
cmVudCgpKSB7CkBAIC0zNjM5LDcgKzM2MzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlm
ZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQog
ICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUENv
bnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwotICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoaXRlbS5yZWZlcnJlcigpKTsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVmZXJyZXIoKSk7CiAgICAgICAgIGFk
ZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7
CiAgICAgICAgIGFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lmTmVlZGVkKHJlcXVlc3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggZTFkNjBlYjkwZTdiNzM0OTdjMWFhZGMxYjM0ZWQ3YzM1YzQ2YWU2ZS4uNGJhZDE4
M2UwODU0OGM0N2RkZDk4MjI5ZWU5ZTYyYjRlYjQ5YjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlcgogICAgIFN0cmluZyBtb2RlID0gbG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5j
cmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4g
bG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3Bl
LCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKKyAg
ICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9i
YWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmco
KSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNz
YWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVz
c2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUo
Jndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA1ZmQzOWJlN2JkMTQwYmVlNDJi
OTFhMjhhZjg2ZGY3NGE3ZTc0ZDcyLi5jM2I1ZTNlMWYyMjkzNDEwNjY2MjYwOWI0YTAxMDM5YzIw
ZTkxMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCkBAIC0xMzEsMTYgKzEzMSwxNiBAQCB2b2lkIE1IVE1MUGFyc2VyOjph
ZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJlc291cmNlLCBNSFRNTEFyY2hp
dmUqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBz
dWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdWJmcmFtZSA9IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CiAgICAgc3ViZnJhbWUtPnNldE1haW5SZXNvdXJjZSgqcmVz
b3VyY2UpOwotICAgIG1fZnJhbWVzLmFwcGVuZChzdWJmcmFtZSk7CisgICAgbV9mcmFtZXMuYXBw
ZW5kKFdURk1vdmUoc3ViZnJhbWUpKTsKIH0KIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwgY29u
c3QgU3RyaW5nJiBlbmRPZlBhcnRCb3VuZGFyeSwgY29uc3QgU3RyaW5nJiBlbmRPZkRvY3VtZW50
Qm91bmRhcnksIGJvb2wmIGVuZE9mQXJjaGl2ZVJlYWNoZWQpCiB7CiAgICAgQVNTRVJUKGVuZE9m
UGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgp
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
Y29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsK
ICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMjEx
LDcgKzIxMSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhl
IFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNv
bHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVz
b2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUK
ICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNv
bHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
aW5kZXggZWU5N2IyYmQ0ZmQwNzIyYjViYTNiZDVmYWVlMWJjNmRmYzE2NjYyMC4uZjg2MzEzNTJj
MjIwZGQxZmI1NDU4MTI1N2JlNTY4NTk4ZjNmNmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMTYsMTEgKzIxNiw4IEBAIGJvb2wgTWVtb3J5
Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIHJlbW92ZUltYWdlRnJvbUNhY2hlKHVybCwgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50cnkgaWYgaXQgYWxyZWFk
eSBleGlzdHMuCiAKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0gICAgaWYgKCFiaXRtYXBJ
bWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0KCksIHNlc3Np
b25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKKyAgICBhdXRvIGNh
Y2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFn
ZS5wdHIoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAKICAgICBjYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVk
SW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKQEAgLTU0
MSw3ICs1MzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9y
aWdpbi5hcHBlbmQoJnJlc291cmNlKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb3VyY2VPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVybCgpKTsKKyAgICAgICAgICAg
IGF1dG8gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVy
bCgpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9yaWdpbi0+ZXF1YWwoJm9yaWdpbikpCiAg
ICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDI3NzI5NTA0NTRiMzBiODUy
Mjg0ZDZjZWI1MTU2MjI3YjZhOTdkZTIuLjdkNDM1NzAxNmJiY2EzNmQyODI5M2YyZDgxNTY4NTlj
MTQ3OTZkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0ODQsNyArMTQ4NCw3
IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAKICAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW4g
PSBmcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNE
aXNhYmxlZCgpOwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBydWxlTGlzdCA9IFN0
YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVMaXN0ID0gU3RhdGljQ1NT
UnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcnVsZSA6IG1hdGNoZWRSdWxlcykg
ewogICAgICAgICBpZiAoIWFsbG93Q3Jvc3NPcmlnaW4gJiYgIXJ1bGUtPmhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQ5NCw3ICsxNDk0LDcg
QEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKICAgICBpZiAocnVsZUxpc3QtPnJ1bGVzKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBydWxlTGlzdDsK
KyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIFJlZlB0cjxXZWJLaXRQb2ludD4g
RE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShOb2RlKiBub2RlLCBj
b25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKQEAgLTIyNDUsNyArMjI0NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUg
bG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCiAg
ICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMgYSBmcmFtZSBy
ZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsKLSAgICBSZWZQ
dHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3RpdmVGcmFtZSwg
b3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBj
cmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICByZXR1cm4gUmVm
UHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDZkMTQxZWFmZGFmYWNhNzIzNzhhMWUzNGNjOWI4ZWViMjUzMWMxZDMuLjUxYmE4OTFm
ZTE3MzMzOTZiN2U4MGY3OWU4MTAxYjE3MWNlODllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0Ugog
CiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBv
c2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
c3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFy
dCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIo
KSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGFjNDBiODBlMmM5NThhN2Y2ZmE3YmU1NjNiOTgwN2NlMWUyM2Fj
MDkuLjNhNDY4YjZjNDZlMTM4NzQwZjFiNjhmZDA0MzlmYjMyODUzODNkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5
bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZp
bmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0
aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQg
d2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CmluZGV4IGI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQuLmI0MjhlNTIy
MWFmZTFiMmI3NGQwMmYxYWQ0ZjJiMjU5MGFkNjUwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE5MSwx
MSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3ApOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGlkZW50
aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IFdURk1vdmUo
aWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IFdU
Rk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4ODAwZTczODE2
NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3ZjdlNDNiY2M1NzAyYjAyNjFm
YTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSwxNCArODEsMTQg
QEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBz
dHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmluaXRGb3JTeW50aGVzaXpl
ZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkb2N1bWVudCA9IEhU
TUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlzLCB1cmwpOworICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQodGhp
cywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21w
YXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50LT5jcmVhdGVE
T01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgc2V0RG9jdW1lbnQo
ZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRtbEVs
ZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRt
bEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGJvZHkgPSBIVE1M
Qm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAoIXN0eWxlLmlzRW1wdHko
KSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBzdHls
ZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlv
bnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDogZG9j
dW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFya2VyOjpEaWN0
YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAgICAgLy8gRmlyc3QsIGFk
ZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAgICAgaWYgKHByZWNlZGlu
Z1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBw
cmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdU
ZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtl
ci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVjZWRpbmdUZXh0
ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVj
ZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBwcmVjZWRp
bmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVjZWRpbmdUZXh0KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwgY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsKLSAgICAgICAg
ICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5nZUZvck1hcmtl
ci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0
ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+
c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXIt
PmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIg
PSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAgICAgICAgc2l6ZV90IGlu
dGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0ZXJuYXRpdmVz
KCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50ZXJw
cmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0ZXh0
IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0aGUgdmlzaWJs
ZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAgTlNBcnJheSAqRnJhbWU6
OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICB9CiAKICAgICAvLyBG
aW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgotICAgIFJlZlB0cjxS
YW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJv
b3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBw
bGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gYWZ0ZXJMYXN0
TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENv
dW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJM
YXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1hcmtlci5pc0Vt
cHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0
aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFmdGVyTGFzdE1h
cmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVkZjk1MzgwYWM5MjFiMTVm
MGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJmYmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0K
QEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hs
aWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFs
c2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29j
b2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJD
QT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhp
Z2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRvIHBsYXRmb3JtQW5pbWF0
aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsK
KyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigp
LT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3JtQW5pbWF0aW9u
LmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6
OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWluZWRTZWxmLT5kaWRGaW5p
c2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNy
ZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5
ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdo
dE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAg
ZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRk
QW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0
KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUwMDk0OGY1MmE1MDA4OWQz
Nzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2VmOTE5YzJkNjBhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTE5LDcgKzExOSw3
IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxl
IHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUgeCAlbHVcbiIsIHNpemUo
KSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGY2NWNkZTNjMWFm
ZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3ZTk4Yjk1NmEwYzBjNWIw
NDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBIUlRGRWxldmF0aW9uOjpj
YWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZh
dGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVuc2lnbmVkIHN0YXJ0RnJh
bWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2lnbmVkIHN0b3BGcmFtZSA9
IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQdHI8QXVkaW9CdXM+IHBy
ZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9t
UmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJlZlB0cjxBdWRpb0J1cz4g
cmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVTYW1w
bGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKKyAgICBh
dXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVCdWZm
ZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOworICAgIGF1dG8gcmVzcG9u
c2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVTYW1wbGVSYXRl
Q29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKICAgICBBdWRpb0No
YW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1
czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1bHNlUmVzcG9u
c2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4
IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEuLjg5NzdmMzk4NjlkNmI2
NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTaW5j
UmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9m
U291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV3JhcCB0aGUgcHJv
dmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJjZSBwcm92aWRl
ci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVy
T2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
MSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8vIEZJWE1FOiBGaW5kIGEg
d2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgogICAgIGJ1cy0+c2V0Q2hh
bm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNkZDUxMDE1YzE2Mjc4NGNk
MjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5NTNmZTlmNGJhYTlhNWI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTM1Miw3ICsz
NTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0
IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1ZSk7CisgICAg
YXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6
ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsKIAog
ICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExlZnRCdWZmZXJz
LmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDJhZjUx
OGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0MTE1YWMyOTZlODJmMzNi
ZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0xODAsNyArMTgwLDcg
QEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1w
bGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENvdW50ID0gbWl4
VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMg
d2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxBdWRpb0J1cz4g
YXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFt
ZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3Vu
dCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKSk7IC8vIHNhdmUg
Zm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUgbWl4VG9Nb25vIGNhc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCAxZmRmZWNkYTcxYzYw
NGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3ZTUwYjQwNGNmZDI2MzRm
ZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBA
IC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiB7CiAg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNv
bikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBSZWY8
SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEljb24oaElj
b24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDllZDJkZjI5YTguLjEzZjE4
Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBU
cmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAgICAgV2ViVlRUCiAgICAg
fTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShDdWVG
b3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gY3Jl
YXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRUcmFja1ByaXZh
dGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBjbGll
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBkZDY5NC4uYWYwYTdjYzc3
YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0x
ODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAgICAvLyBDcmVh
dGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8gWzQg
Ynl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAgICAg
IHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwot
ICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3
PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29w
eVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBp
bml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUsIDEpOwor
ICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
ICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAK
ICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAtMTkwOCw4ICsxOTA4LDgg
QEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFz
c2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYKIAotICAgIFJlZlB0cjxX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOwotICAgIG1fb3duZXItPm1f
cmVzb3VyY2VMb2FkZXJNYXAuYWRkKGF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIpOworICAgIGF1
dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9v
d25lciwgYXZSZXF1ZXN0KTsKKyAgICBtX293bmVyLT5tX3Jlc291cmNlTG9hZGVyTWFwLmFkZChh
dlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXIt
PnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhhMzA2MTFhOS4uMWE0YjE4
MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwgOiBwdWJsaWMg
QXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJhY2sg
KnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAgIHN0YXRpYyBS
ZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFzc2V0VHJh
Y2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAK
ICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCBkMDU3ODVjYWUzNjE2ZGZmYmU5OTM5ZTAzZGE1MTkzYzY5MTQ5NTRmLi4zMTA3ODBjM2Fj
YWJkODE1NTVjM2QwMTllM2I0OGM2Y2Y3NzdhOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aEtleURh
dGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3QsIEFyCiAKICAgICAgICAg
QVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgICAg
ICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwotICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBrZXlEYXRhLT5zbGljZShz
dGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihlbmQpKTsKKyAgICAgICAg
YXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nhc3Q8aW50Pihz
dGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVxdWVzdGVk
S2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5ieXRlTGVuZ3RoKCldKTsK
ICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0RhdGEuZ2V0KCldOwogICAg
IH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAjZW5kaWYK
ICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VM
b2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBhdlJlcXVlc3Qp
OwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYXZSZXF1
ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAgbV9yZXNvdXJj
ZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJlc291cmNlTG9h
ZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEyYTEyMTllYjNjNDM1OGNj
YTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0YzkxODFkYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgK
QEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBj
bGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhU291cmNl
UHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwg
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTA4NGM5MGQ1
ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2RmZWFiNDY1ZjExZjdhNTA3
ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQorUmVmPE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQcml2YXRlQW5kT3Blbigq
bWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0
UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVudCkpOworICAg
IGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2YXRlLmNvcHlSZWYoKSk7
CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBN
ZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjph
ZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
bmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3RhbmNlLmdldCgpKTsKICNl
bmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7CisgICAgb3V0UHJpdmF0ZSA9
IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChX
VEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9rOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggODMw
MGRjM2I2ZTM5ZThjYWIxNDVhZWJhMjE3NmU5ODExZGZjOTg3MS4uZjE3NjI2MjM0YjliNWEwYWRl
OGMyNzU0N2E0NDY1N2E0ODJhY2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBjbGFzcyBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKik7CiAg
ICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsKIAogICAgIHZvaWQgY2xl
YXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXgg
YTk5ZmViN2Y2NTNjOTkxMTZkMGYzMzllYzM3NzVmYzIwY2VmMGJlZC4uMWM1NjYzNjYwZDlhZWRj
Yzg5ZTZiNTIzM2I4ZmM0YWIzZDZlZDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQzMCw3ICs0MzAsNyBAQCB1
c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNrKSk7IH0KKyAg
ICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNr
KiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyh0
cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMoKSB7IH0KIAog
ICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29kZWM7
IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25zdW1lZENhbGxi
YWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwgQ0ZTdAogICAgICAgICBz
b3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQog
CiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAg
ICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiB2aWRl
b1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFj
aywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjazsKLSAgICAgICAg
ICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAgICAgICAgICAgYXV0byB2
aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0
cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjay5jb3B5UmVm
KCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKHZpZGVvVHJhY2sp
KTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2Jq
Qzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5k
KGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVkaW9U
cmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1ZGlvVHJhY2spOworICAg
ICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gYXVk
aW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZChXVEZN
b3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQuYXVk
aW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApp
bmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmLi41ZGQ3ZTYyMzBm
ZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM7CiBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBWaWRl
b1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayogdHJh
Y2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRUcmFjayog
dHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAogICAg
IGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA4MGNmYzRm
YWMzNDVjOTJlY2Q2MTczN2ZjOTI1NGRjZDhiNzU1YmY4Li45MWRiNjU0MWM0YjEyM2FlYjM0NmVh
MzkyYWUwNDM4NDBkMjQzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgaW50
IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gKG1f
bWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxlR3JpZCgpLnNjYWxlKCk7
CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVUaWxl
TGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQorUmVmPFBsYXRm
b3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VG
cm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllciwg
JmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9IG1fdGlsZUNhY2hlTGF5
ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Quc2l6ZSgpKTsK
IAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbGF5ZXIt
PnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKaW5kZXggYWUxOWI4YzUx
NzFmZDU3NDFhNTUxNWY3NmE2OTg4NjY2MmZhZjA3Yy4uZGI5ZDQ1MzEwN2JkNDkwMDUxNjUyMGQ1
YTA2NzUyMGFjMjY2YTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgVGls
ZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAgIHZvaWQgdXBk
YXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVh
dGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CisgICAgUmVmPFBsYXRmb3Jt
Q0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3JpZCYpOwogCiAg
ICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUdyaWQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkxYWUxYzc4ZDFkNzM1Y2U0
OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMzYzBjNDU1YTFkOWI2ZWUw
ODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9v
bCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiAg
ICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVmUHRyPENBQ0ZMYXllclRy
ZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gaG9z
dCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlmICghaG9zdCkgewogICAg
ICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8Q0FDRkxh
eWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQogewogICAgIGlmICghYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmlld0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4iKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KaW5kZXggNDA2
ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNjMjc2ZGJlMTQyOTUzODFi
NDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpAQCAtNTUs
MTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3JpcHRvci5zaXpl
LCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUsIFtdICh2b2lk
KiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigpOwotICAgIEFycmF5QnVm
ZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0KCk7CisgICAgQXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5wdHIoKTsKICAgICAvLyBG
SVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAgICBQbGF0Zm9ybUJ1ZmZl
clNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpCiAg
ICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZlci0+ZGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDk0NzY4
ZGMxYTkyYTJmNjRiZjJjZTIxMjY4ODE0YWEyOWEwOWY2Y2YuLmRlNzhkYjYwN2ZhMTFmN2E1OGRl
ZmY0YTk4MjQyM2JiOGJhOGRkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAgICBDUkVBVEVfVFJBQ0so
dmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZUEVf
VEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAg
ICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywg
c3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrKTsK
LSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAgICAgICAgICAg
IGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4
dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3Ry
ZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRy
YWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEdT
VF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVh
bUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0
cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRo
aXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAgICAgIEFTU0VS
VChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0
cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNrKCp0cmFjayk7
CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5UmVmKCkpOwor
ICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAg
ICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVhbXMpOwpAQCAtOTY4LDcg
Kzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJP
ZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAgYXV0byB0cmFj
ayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIoKnRoaXMp
LCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlkKCkpOwogICAg
ICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwogICAgICAgICBtX3BsYXll
ci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5LDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwotICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgIGF1dG8gdHJhY2sg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAg
bV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJ
bnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAgICAgICBpZiAo
Z3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKICAgICAgICAgICAgIGlm
IChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrPiBtaXNz
aW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMy
X3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFj
ayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgYXV0byBtaXNzaW5n
UGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnND
YWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0odWludDMyX3Qg
cmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYg
bWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJnb3QgbWlzc2luZyBwbHVn
aW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxheWVyIHdpdGggcmVzdWx0
ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMTMs
MTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1l
c3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMt
PmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCk7CiAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2luQ2FsbGJhY2tz
LmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAgICAgICAgIG1fbWlzc2lu
Z1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNvcHlSZWYoKSk7
CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21pc3NpbmdfcGx1
Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAgICAgICAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1Z2luX21lc3Nh
Z2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBtX3BsYXllci0+
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRl
dGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCAqbWlzc2lu
Z1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVx
dWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSks
IFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1Z2luQ2FsbGJh
Y2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbihHc3RNcGVn
dHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RNcGVndHNQTVRTdHJlYW0q
IHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSo+KGdfcHRyX2Fy
cmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAgaWYgKHN0cmVhbS0+c3Ry
ZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49IDB4ODApIHsKICAgICAg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1iZXIoc3RyZWFtLT5waWQp
OwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGF0
YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4yIFNvdXJjaW5nIGluLWJh
bmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgVVJMIG5ld1VybCA9IFVS
TChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRUb0ludGVybmFsUHJvdG9j
b2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAgICAgIGF1dG8gc2VjdXJp
dHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAgICAgaWYgKHNl
Y3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAgICAgICAgIEdTVF9JTkZP
X09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5YmRkZjJiNzc4
Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5YzhhNTUzZmRjNjY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
CkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAobV9y
ZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1h
Z2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKKyAgICBhdXRvIGdzdElt
YWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBp
ZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKaW5kZXggMDI2YTIwNTczZWMzMmFkYjJhM2JjOGE2ODYwMjNlYTgwYWQ4MzEwOC4u
ZDA5MjkyMGMyNmJkNjBlOTgzYmZhMTQzNjZkNTYzOWVmZmZjZTQ1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGVuZFBpcGVs
aW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gbWVk
aWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUo
c2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOworICAgIGF1dG8gbWVkaWFT
YW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoc2Ft
cGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAgICAgR1NUX1RSQUNFKCJh
cHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJlc2VudGF0aW9uU2l6ZT0l
LjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lu
a05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAgIG1lZGlhU2Ft
cGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwogICAgIH0KIAotICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgqbWVkaWFTYW1wbGUpOwor
ICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZShtZWRpYVNhbXBsZS5n
ZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5ZGY4ZGFiZGI1NDVkMDdl
Li42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApAQCAtNDQsOSAr
NDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2Uo
RGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZlci0+c2xpY2Uob2Zmc2V0
LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5yZXNpemUoMTYpOwpAQCAt
NjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6
cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgICAgICAgICAgYXV0byYg
Y3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAgICAgY3VycmVudEtleUlE
LnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlEID0gYnVmZmVyLT5zbGlj
ZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICghcGFyc2VkS2V5SUQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgb2Zmc2V0ICs9IDE2Owog
ICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBhcnNlZEtleUlELT5kYXRh
KCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29sIElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCA8IGRhdGFTaXplKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRhID0gYnVmZmVyLT5zbGlj
ZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBhcnNlZERhdGEpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6ZTsKIAogICAgIG1fZGF0
YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAppbmRleCA1N2E1
Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0ZjRkM2NjMWI3NjE3NWQ5
MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcApAQCAt
NjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcm
IHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1
dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgMTYpOwotICAg
IGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCAr
PSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdmYzg2MWEyN2VjODQwNmJl
MDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0ZmY5ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMg
RmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVudGl0eU9wID0g
UGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHBy
b2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJh
dGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChm
cm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3ApKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0NWM1MDYxMWJiMjZkYzQ0
MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNkZTVkMWRlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02
MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAgIGF1dG8gdGV4
dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6
ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUpLmNvcHlGcm9t
RXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0
dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJ
RCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdhNThlMmFkZGRiMmRhMTky
NWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5Y2UzMWY0ZTZkMmVjN2Iz
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtODcsMTEgKzg3
LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1h
dGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlmIChibGVuZGVkT3BlcmF0
aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wZXJh
dGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9uID0gSWRlbnRpdHlUcmFu
c2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3BlcmF0aW9u
ID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlvbiA6IFdURk1v
dmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlv
biA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRp
dHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCA4NjBkYTM4NjM4ZWY1MmE5MGVkMWZkODliNTJkZWU5NjU0MzAxNTNjLi4wNmMw
YTE5ZjMwZDM5ZDE5MTlkMmI0Y2ZkNDFkNDQ3ZWMwNTQyMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBO
RyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4K
ICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBh
YmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGly
RW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9m
ZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKCpwbmdEYXRhLCBpc0Fs
bERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgp
IC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNl
dERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKIHZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2NDU3YzIzMjg5NzE4MTRj
ZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJkNDczNzZiOGQyNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
Qm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0lu
aXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNpemVfdCBvZmZzZXQgPSAx
NjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7Ci0gICAgICAgIGlmIChN
b2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgp
KQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAg
IGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9IE1vY2tUcmFja0JveDo6
dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNr
Qm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJC
dWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3RoKCk7CiAgICAg
ICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAyYThiMjRiZDJmOTIxZTFjMWYzNTAwMjIyNzdhODMz
ODdlYzM3YWZlLi40MjU4ODk3YmU2YmUzOTExZTYwYmVkYWMxMDFmMzNlMDk5YmNkMTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBA
IFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29w
eSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIE1l
ZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja01lZGlhRGVz
Y3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2Nr
TWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CiAgICAgdmlydHVh
bCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBdG9taWNTdHJpbmcg
Y29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CkBAIC0xMTgs
OSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgTWVk
aWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94OwogfTsKIAotUmVmUHRyPE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRl
KiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKQEAgLTE0Miwx
NyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFw
cGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNj
ZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkgewotICAgICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZl
ci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0
aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVm
ZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVu
Z3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVM
ZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0cmluZyB0eXBlID0gTW9j
a0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2Nr
Qm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBNb2NrSW5p
dGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0aW9u
Qm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9u
Qm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTW9ja1NhbXBsZUJv
eDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1vY2tT
YW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxl
Qm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2
ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9
IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYjNmOGFmNDJhMmY0MmFlYjllZGVjZTZhYjMzYjVl
ODdhNTI3MjUyOS4uMTU3NjAwNTNjYmYwZjA1Mjk0MzM4YzQ3ZjI2MTE1MjNiYTk4MjRjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgZmlu
YWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZh
dGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBjcmVhdGUoTW9j
a01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBu
dWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkwZDZiODMwZmJlMGI2MDNm
ZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRjNjllMjIwMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Ry
YWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYWNrUHJpdmF0ZSA6IHB1
YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQcml2YXRlIDog
cHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAg
c3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0Jv
eCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkp
OyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KQEAgLTcy
LDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBW
aWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9U
cmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0YXRpYyBSZWY8
TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAg
dmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZDdjMWU1ZmFhMGRlNTA3ODNiZmI0
NzcyNGJmNTk5MTlhYjY2ZjkxZC4uYzQ5ZjQyMTc4MTIwYTRjM2QyYjRkMzAyNjg0YjJkODNhZjFm
NDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAt
MzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRl
KCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3YXlzU3RyZWFtKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAgUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRleCA2MjRjY2M1ZTEyODA3
MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUwZDFlZTY2NDViZGNiOWEz
MjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9ic2VydmVyPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNyZWF0ZShOU0hU
VFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2llU3RvcmFnZU9ic2VydmVy
PiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29raWVTdG9yYWdlT2JzZXJ2
ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3RvcmFnZU9ic2VydmVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcxYzZiMDcwN2FhMDgwMGU5
YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3MDM2MjE2ZTM3NzkxNjcy
ZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0LDkgKzc0LDkgQEAgQGVu
ZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+
IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tp
ZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVTdG9yYWdlT2JzZXJ2
ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIoY29va2llU3Rv
cmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tpZVN0b3JhZ2VPYnNlcnZl
cihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEwMTY1MGM0ODguLjBmNmVh
MTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFwcGVuZEVuY29kZWRCbG9i
SXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwKICAgICAgICAg
aWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0
aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKS0+
c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgp
KSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKICAgICAgICAgICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtODIs
NyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2VCb2R5KFNv
dXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAgICAgICBib2R5U2l6ZSAr
PSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5k
KHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYnl0ZXMu
ZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZdIChjb25zdCBGb3JtRGF0
YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmls
ZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhl
bi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAxNjE4NTU4YjYwZTFmMzA0
ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFmMDZiYjQ4Yjdh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlw
aGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsxNjksMTQgQEAgY2xhc3Mg
SHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8SHlwaGVuYXRpb25EaWN0
aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rpb25hcnkoKSA9IGRlZmF1
bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlTnVs
bCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZU51bGwoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnko
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeSgp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3Jl
YXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBSZWY8SHlwaGVuYXRpb25E
aWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0UGF0aCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25hcnkoZGljdFBh
dGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5EaWN0aW9uYXJ5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0OTE4ZDQzZGI3Ni4uOGU3
NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTI3LDEzICsy
NywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1cE1lbnVXaW46OlNlYXJj
aFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRv
cHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYo
Km5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9w
dXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAg
IHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEzY2QxOTU2NTExZS4uOWE3
YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsKICAg
ICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1l
bnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA1MmI0ZDc0
NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2ODMxY2Y2NDk3YzA0ZGYz
YjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0
Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gmIGJveCkKIHN0
YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9
IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuNSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBkb2N1bWVudC5mcmFtZSgp
LT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3go
MCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3LDEyIEBAIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkg
KyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0g
R3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICBh
dXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJI
ZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29s
b3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29u
dGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQpKTsK
IAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpKTsKIApAQCAt
OTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBwYWludEluZm8u
Y29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRl
ZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywg
cm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9
IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJl
Y3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAt
IDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAgICAgdXBwZXJHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7CiAgICAgdXBw
ZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEpKTsKLSAg
ICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkp
OworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJHcmFkaWVudCkpOwog
CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwogCkBAIC05
NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAvLyAyKSBE
cmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8o
cmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAgICAgICBkb3VibGUgYmFy
V2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgUmVmUHRyPEdyYWRpZW50
PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxv
YXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFy
SGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3Jl
YXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxS
ZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAgICAgICBiYXJH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcsIDI0NykpOwogICAgICAg
ICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDExOCwgMTY0LCAyMjgpKTsK
ICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigxMTgsIDE2NCwg
MjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYs
IDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29s
b3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQo
YmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBSZWZQdHI8R3JhZGllbnQ+
IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJI
ZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAgICAgIGJhclN0
cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAxODMpKTsKICAg
ICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUsIENvbG9yKDY2LCAxMDYs
IDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVu
dChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50KSk7CiAKICAgICAgICAg
UGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgpOwpAQCAtMTAyNSw3ICsx
MDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNv
bHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5bGUgdG8gY2Fs
Y3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJl
IGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0
eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMg
PSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZz
dHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAgIHN0eWxlLnNldFBhZGRp
bmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAKQEAgLTE3NDMsMTEgKzE3
NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWljb25JbWFnZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29u
UmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmlj
b24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25JbWFnZS5nZXQoKSwgaW5m
by5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmlu
ZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5NGMuLjE1NTc0NGQzZmRk
YjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNDIzLDggKzQyMyw4
IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8ICJcbiI7CiAgICAgICAg
IC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUg
YnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAgICAgICAgUmVmUHRyPFNW
R0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0o
KSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChh
dXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1teUZpbHRlcikpIHsKKyAg
ICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmluZVRyYW5zZm9y
bSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYg
KGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVtbXlGaWx0ZXIuZ2V0KCkp
KSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7
CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBidWlsZGVyLT5s
YXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA1Njg3MjM4ODky
NzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0NmJlZWJkNmEwYmVkOTFh
OGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTM3LDE3
ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdlPiBTdG9yYWdl
OjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdl
QXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJl
ZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAotU3RvcmFnZTo6
U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VB
cmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0b3JhZ2VBcmVh
PiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRvdykKICAgICAs
IG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAgICAgQVNTRVJUKGZyYW1l
KCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1fc3RvcmFnZUFyZWEtPmlu
Y3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCmluZGV4IDgz
NjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4M2U4NWE2MmE4NjRjN2E3
MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBTdG9yYWdlIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01X
aW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlPiBjcmVhdGUo
RE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYpOwogICAgIH5TdG9yYWdl
KCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUwLDEyICs1MCwxMiBAQCBj
bGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEmIGFyZWEoKSBjb25zdCB7
IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVhJiBhcmVhKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFN0b3JhZ2Uo
RE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBTdG9yYWdlKERPTVdpbmRv
dyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQdHI8U3RvcmFnZUFyZWE+
IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVhPiBtX3N0b3JhZ2VBcmVh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3ZDE4YTExOTc2ZDliYjJm
ZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
dG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VB
cmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBh
Z2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRl
eCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmLi41OTM5YWZmZDNlYjJm
OGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZv
aWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiAgICAg
bV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCitS
ZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJl
YShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBhZ2UsCiAgICAgLy8gc28g
dGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBhZ2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRl
eCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZmLi5kZDdmOWE0NmJkODQ3
OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFz
cyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5z
aWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKSA9
IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQm
KTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmKTsKIAog
ICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKQEAg
LTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAgU3RvcmFnZU5hbWVzcGFj
ZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5hbWVzcGFjZSYgdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwg
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBIYXNoU2V0PFBh
Z2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMDI1Yjk2YmJj
YjQ0NDg2MTFjNzM0NWIwY2RmYzdhMTBkOTZjZTUwNi4uODVmNmZmMTJmMzg1NWU3MmYzNTE1Y2Yz
MjdiNTM5YjVmM2QwMjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTAxNiw3
ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBTVkdFbGVtZW50OjpnZXRQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlmICghYXR0cmlidXRlKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsK
KyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKFNWR0F0dHJp
YnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SWRG
b3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICBhdXRvIGNzc1ZhbHVl
ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIxNjBjNDJlZWQ2NDAyOWMy
N2EyY2I2NDkxZDFhNTZiLi4xNjdhNTQ3YWM2ZDJjNDRhNjk5N2E3MDE1MTYyZDdhNzU0Mzc5OGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTExMiwxMiAr
MTEyLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlu
cHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOworICAgIGF1dG8gZWZm
ZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRF
ZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0
MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKLSAgICByZXR1cm4gZWZm
ZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDUxNWQzMmZmYmNkN2U1
M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjM2ZTY2OThiMmM0Yjc1ZDJjYWI2YTlkMjM4NGZk
MGM4NTg3NjNmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBm
aWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZp
bHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1v
dmUoZWZmZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggNTdm
YWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4uMDIzNzk5NTJiZGNiNjE2YThm
MDgzZmI0MTM1N2EzMTU2MGFjODQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04OSw5ICs4OSw5IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0PFNWR0ZFRnVu
Y0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KICAgICAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUo
ZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgYXV0byBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4g
ZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggYTEwZTNhNzIxY2ZlYWJk
NDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uYTdhNzY4Mjk2ZDM0ZTQyN2U1MDA5ZGFlMmE3OGM0
OTljNmYwYjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlCiAgICAg
aWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwg
c3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAgYXV0byBlZmZlY3Qg
PSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwg
azMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2FwYWNpdHkoMik7
CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAgIGlucHV0RWZmZWN0cy5hcHBl
bmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShl
ZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3ZWNjZGQwNzc3NDlkMjcyNTky
M2QyYmZkMDQuLmQ5ZGIwYWNlYjdmM2UwNDQyODUyNjczZjdiODJhZGMxOTAwMzQ0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CkBAIC0xODksOSArMTg5LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAogICAgIENvbG9y
IGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVu
ZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsKKyAgICBh
dXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJu
ZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVy
biBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1ZmM3MDFkZjYwN2NmMGIwYmQ5
NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMmI0MmYzNDQwODI4OWVmOWIwOTAzYThhNmJhNWFjMzI0ZWMz
NTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5jcHAKQEAgLTEyNywxMiArMTI3LDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
CiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9yKCksIHNjYWxl
KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShmaWx0ZXIs
IHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKICAgICBG
aWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7
CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMu
YXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKLSAg
ICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1NTBm
NjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi42OThhNDg1NGMxYjE1NGUyOTM1
OGE5YjJiNDliM2Y2ZWUyNjhmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIs
IHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3Bh
Y2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShmaWx0ZXIsIHN0
ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xvciwgb3BhY2l0
eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1
cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggOTMzMTg3
ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uOTU0NzJkYjcxODYzOTc1MDE3MDc3
YTY5MzE5NjUzNDVjNDEyZjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw5ICsxMjQsOSBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0ZERldmlhdGlvblkoKSA8
IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwg
c3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFR2F1c3Np
YW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSwg
ZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsK
LSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IDUwMmE5OTE5M2M4
OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmVmYTc3ZGUyYzFiYmQ1ODYyNWU1NmY4NGFj
M2U1M2JmNGQwZjkzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNw
cApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZlY3QgPSBGRU1l
cmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIG1lcmdlSW5wdXRz
ID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYgbWVyZ2VOb2RlIDog
Y2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsKQEAgLTU5LDcg
KzU5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAobWVyZ2VJbnB1dHMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBlZmZlY3Q7Cisg
ICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGZjYmM2M2I2MmU2ZTEwNmViYjVkNTYy
MDllM2Y1Mjk5ZDhiMGI2ZmMuLjdhNGNkMDgyZDU0MTU5YWFmNTI1MDAyZGE5NDYwZWJhMWQ5ZWYx
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAK
QEAgLTE0NSw5ICsxNDUsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAgIGlmICh4UmFk
aXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIs
IHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVN
b3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVzLCB5UmFkaXVz
KTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVy
biBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRl
eCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3MDQxYWFkYmQwMjIyLi44ODUyNzExYTVhNmE2
ZDQ0MzMzYzRlNzFlNmUzYjIxM2EwYTU3ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcApAQCAtOTIsOSArOTIsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
CiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5
KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIsIGR4KCksIGR5
KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0
dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5k
ZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2ZlNy4uODFlZjQ1NzY4Njk3
MTdhNjllOWRlYjZlNjQ5NWRhNTExNzRjYzJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDkgKzE5OCw5IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJl
ci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5z
dmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNl
U2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVu
aXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2UpKTsK
KyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29s
b3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQo
KSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdo
dFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0g
ICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggM2YzODc5ZDdlNjZhOGMx
ZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uZTNjZjVhZGNmNGY2NDk3ZDczNmJjZGI3YjZjMmVi
ZWFmMWYwZThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAt
ODEsOSArODEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaQogICAgIGlmICghaW5wdXQxKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZlY3QgPSBGRVRpbGU6OmNy
ZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7
Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4IDg2ZDk1OGY1NzYwNTFi
ODA3ZTA1MWMxNWFlYTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgwNDc1ZTNkZjU0MDMwNzRh
NWE3Y2Q4NjQ3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCkBAIC0z
NSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NPYnNlcnZhdGlvbiBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+IHsKIHB1YmxpYzoKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdDT2JzZXJ2YXRpb24+IGNy
ZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0
aWMgUmVmPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NPYnNlcnZhdGlvbihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAKICAgICBib29sIHdhc0NvbGxl
Y3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2YTRlY2Y4ZjQzNWZkZjJj
M2I4NDVmLi45OTAxN2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIwMTdjOTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVmPERvY3Vt
ZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3VsdC5jb3B5UmVm
KCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKKyAgICBhdXRvIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5cGUpOwogICAg
IGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/IFVURjhFbmNv
ZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4dFJlc291cmNlRGVjb2Rl
cjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNldERlY29kZXIoV1RGTW92
ZShkZWNvZGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3NWUwZjQ5MGJhYTYwODg1
Zi4uYjQyNTBhMDJjZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2OSw3ICsy
NjksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29u
c3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IFhNTERvY3VtZW50
UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9s
aWN5KTsKKyAgICBhdXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21l
bnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBib29sIHdlbGxG
b3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsKICAgICAvLyBEbyBu
b3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGltcGxlbWVudGF0aW9u
cyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4gY2F1c2UgY3Jhc2hl
cyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgpOyAvLyBBbGxvd3Mg
fkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVmb3JlIGRlc3RydWN0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKaW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3OGQwYmE1YzliOWNlZGI3
Zi4uMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgSVBDOjpD
b25uZWN0aW9uKiBjdXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMzIxYTA4Mzg2
OTM4NmM0ZmJmNWYyOGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3OWUzMzE3ZDM3NzI2OGY4
ZTY5MDI0ZWEyZDYyY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVh
dGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nl
c3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKICAgICB2
aXJ0dWFsIH5XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQppbmRleCBi
OWZjODk1MGZhMzNjYTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5jNzY0OTZiNzMxMjQ2N2Mz
NjYwNjJmYWVlYzQ3NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsxMDMsOCBAQCAtICh2b2lk
KXNldERlbGVnYXRlOihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAKIC0gKHZv
aWQpc2VuZE1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSBib2R5OihpZClt
ZXNzYWdlQm9keQogewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaD4gd2tNZXNz
YWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOwot
ICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJv
ZHkuZ2V0KCkpOworICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3Nh
Z2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwogfQogCiAtIChXZWJLaXQ6Oldl
YkNvbm5lY3Rpb24mKV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5ZjY1ZjJlZTdhMzI3OTFjZTI1YTYwNWNmYjI4MTdm
MGMzZWQ0NDFmLi4yMmYxZmU4ZWYxNDA1NTMyNzdkODQxMDc4ZjFmYzhhMTY2NjMzNmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEx
MzQsNyArMTEzNCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdL
U25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGF1dG8g
Yml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VDR0ltYWdlKCkg
OiBudWxscHRyOwogICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9IGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBzaXplOk5TTWFr
ZVNpemUoc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAgICAgIGhhbmRsZXIobnNJ
bWFnZS5nZXQoKSwgbmlsKTsKQEAgLTIwNjMsOCArMjA2Myw4IEBAIC0gKFJlZlB0cjxXZWJLaXQ6
OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBIQVZFKElPU1VSRkFDRV9BQ0NF
TEVSQVRPUikKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVzc2VkRm9ybWF0
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAoV2ViQ29yZTo6
SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25hcHNob3RGb3Jt
YXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFw
c2hvdD4gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZShudWxscHRy
KTsKLSAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoV1RGTW92ZShz
dXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hv
dF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkg
eworICAgICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBzaG90OjpjcmVh
dGUobnVsbHB0cik7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0
KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjIsIFt2
aWV3U25hcHNob3QgPSB2aWV3U25hcHNob3QuY29weVJlZigpXShzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAgICAgICAgICBpZiAoY29u
dmVydGVkU3VyZmFjZSkKICAgICAgICAgICAgICAgICB2aWV3U25hcHNob3QtPnNldFN1cmZhY2Uo
V1RGTW92ZShjb252ZXJ0ZWRTdXJmYWNlKSk7CiAgICAgICAgIH0pOwpAQCAtNTkwOCw3ICs1OTA4
LDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVz
IGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0g
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBiaXRtYXAgPSBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICghYml0bWFwKSB7
CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIy
NWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBXZWJLaXRHZW9s
b2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91
YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7
IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNj
dXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKICAgICBjb3Jl
UG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgUmVmUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2NhdGlvbk1hbmFn
ZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOworICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9z
aXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3Np
dGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
cjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICovKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMzLi5iY2U4MDU4
ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTQ1NSw4
ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2NlcnRpZmljYXRl
X2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVybl9pZl9mYWls
KEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1cm5faWZfZmFp
bChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNlcnRpZmljYXRl
SW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApKSk7Ci0g
ICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmlj
YXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJvbVVURjgoaG9z
dCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpj
cmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0aWNfY2FzdDxH
VGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9v
bC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRpZmljYXRlSW5m
by5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8v
V2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggZjE1YmE2OGQxZGZkY2EwMDU2Y2M2
Y2RkZjI3Y2Y2ZDcyZDExNjFkMS4uNmEwZDY1YmYwMTgxMjVhNWY1YzkwM2EyNTcxNjU4YzUwZjZi
ODQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0z
NSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2Nv
YS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDY3ZjEy
MjJhNzQ2YzY3MmM2ODdkMmFmYmQyNzhjMWRiNTM4OThiY2IuLmM1MjI0NWI1ZjA5ZTFlODI4MDRl
MTg5MWZkNTQ5OTIwZjhkN2I2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q29jb2EubW0KQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNl
NjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRh
SGFuZGxlKQogewotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShp
bWFnZURhdGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAg
IGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAppbmRleCBjODgzNjQyYjVkYzUwNmI2Mjc2NTEw
YjczNDg1ZmNkNDY2MmVmNDgxLi41ZmQ1YWY0OWI0Y2Q1N2FlYWZmMTY4NmNhYWNlNGFlNTEzMmZi
OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0
ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUKG1fc2l6ZSA9PSB1cGRhdGVJbmZvLnZp
ZXdTaXplKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7CisgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSk7
CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGY1ZWU0ZGYxODA0M2Qz
YjVhNjRiMTBkNGMyZTYzNzQwZDk5Mzk3NzIuLjMxM2UxNDU3MzU1YWY5Nzk4NWQ2YjU2MGExNjc5
NmJhNGJiNGI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiBw
YQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0
ZW1wdGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwg
TlNFcnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBSZWZQdHI8QVBJOjpGcmFtZUhhbmRsZT4g
ZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUod2ViRnJhbWVQcm94eS5mcmFt
ZUlEKCkpOworICAgIGF1dG8gZnJhbWVIYW5kbGUgPSBBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUo
d2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOwogCi0gICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9
IGFkb3B0TlMoW1tXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5p
dFdpdGhXZWJWaWV3OndlYlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcigqZnJhbWVIYW5kbGUpIHVy
bFN0cmluZzpvcmlnaW5hbEVycm9yLnVzZXJJbmZvW05TVVJMRXJyb3JGYWlsaW5nVVJMU3RyaW5n
RXJyb3JLZXldXSk7CisgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1Jl
bG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcgZnJhbWVIYW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5nOm9y
aWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1d
KTsKIAogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpyZWNvdmVyeUF0dGVtcHRlci5nZXQoKSwgX1dL
UmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSwgbmlsXSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgK
aW5kZXggOWQ3NzQxMGMwOWMxYjcxMTVhNDA0MWQyOTdiYjQ1NjgzOGVhZTk2MC4uNjRhMzVmN2U4
NzlkYjAzZGMwYmY4NzcyMjE0NGMyMmJmZjNkOWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgK
QEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQgZmlu
YWw6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQwogCiBjbGFzcyBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdl
YlBhZ2VQcm94eSYpOworICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQppbmRleCA0YzhmY2JmOGVmNzJlMDUxZThhMjI5MWI1ZjRmMTZmZmRjMDI3MDY3Li44Njc3
YTA0MWM3MGQxMWI5NzY5OGM0N2VjMmI3OWFkZjMxZDkwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tCkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ6OnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKQogCiAjcHJhZ21h
IG1hcmsgLSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eT4gUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2Vi
UGFnZVByb3h5JiBwYWdlKQorUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4gUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KHBhZ2UpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFn
ZSkpOwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4
IGE5Mjk5ZjFiNzQ2OWIwM2FkMjM0NjI0YmNkMGIzNTZiYzkyOGI2OTIuLjI5N2Y5NjhiMzUyOWUw
YzM1NWNkNGRiMWE4OTljMjBlOGNjOTAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0x
MTksNyArMTE5LDcgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAK
IGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Jik7Cisg
ICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdl
UHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGE0MzhmZTcxYTg2ZDMyNzI4NWFlZjUyMTJmZjM1NjEy
NjQyNTZkMTYuLjRjZjMwYmYzMzFlNzk0MjFmMjM5Y2NhNTk2MzExMzkyZjhmNWE4MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTMxNCw5ICszMTQsOSBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogCiAjcHJhZ21hIG1h
cmsgLSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKIAotUmVmUHRyPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eSkKK1JlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+IFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSkpOwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSYgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzEw
ZGYxOWM0MjY1OGY2ZjU5YzdjMTgwNzc3MWFmMjJlMjIzZGMyLi4xZGFkNzA0ZWM5OTZiMWVmOWQ0
YzFhOTliMTcwYmY3NjIzZDM2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTU5LDggKzE1OSw4
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci0g
ICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNl
dEJ1ZmZlckZvclR5cGUoYnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgbmV3Q2hhbmdlQ291bnQg
PSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVm
ZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90
JiBudW1iZXJPZkZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCAxNTM2NTA4NDBhMDAzNmIzMzYwZDQwNzk0NDhlZTA3MDU5YTMxM2IyLi5j
NGI0NzQ0MjcyZTFiMDM4ZDcyZmYzZGNkOGNhM2NjODNkZGFhZTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDM3NCwxMCArNDM3NCwxMCBA
QCBSZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJWaWV3SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxW
aWV3U25hcHNob3Q+IHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZShzdXJm
YWNlKSk7CisgICAgYXV0byBzbmFwc2hvdCA9IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKFdURk1vdmUo
c3VyZmFjZSkpOwogICAgIHNuYXBzaG90LT5zZXRWb2xhdGlsZSh0cnVlKTsKIAotICAgIHJldHVy
biBzbmFwc2hvdDsKKyAgICByZXR1cm4gV1RGTW92ZShzbmFwc2hvdCk7CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW0oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCmluZGV4IDc1MDlkZGVkYjRjMDhlNmJlODU0YmI3Y2VmNzI1YTk3OWQ4MGRjZWUuLjg2ZGMw
OWMzNDFkYTdmNmVjNDFjNmE4MmEzNzFmMTcyNzFmNjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTQ2
LDEyICs0NiwxMiBAQCBEb3dubG9hZFByb3h5TWFwOjp+RG93bmxvYWRQcm94eU1hcCgpCiAKIERv
d25sb2FkUHJveHkqIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKIHsKLSAgICBSZWZQdHI8RG93bmxvYWRQcm94eT4gZG93bmxvYWRQcm94
eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVx
dWVzdCk7Ci0gICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwg
ZG93bmxvYWRQcm94eSk7CisgICAgYXV0byBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6
Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKKyAgICBtX2Rvd25s
b2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBkb3dubG9hZFByb3h5LmNvcHlS
ZWYoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93
bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9h
ZElEKCkuZG93bmxvYWRJRCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgZG93bmxvYWRQ
cm94eS5nZXQoKSk7CiAKLSAgICByZXR1cm4gZG93bmxvYWRQcm94eS5nZXQoKTsKKyAgICByZXR1
cm4gZG93bmxvYWRQcm94eS5wdHIoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNzk2NTg2OGJlMDQzMzllNzg0OWY0ZGQz
NDQyYzY0ZGM5NTZlNjY4Yy4uZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJkMjA1NzIwYmI4OTAxNzdm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTYsMTEg
Kzk2LDExIEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYg
dGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBk
aXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9u
SUQpCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2Jh
bE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywg
bGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29u
VVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7
CiAgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0g
c3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3Rp
ZmljYXRpb25JRFBhaXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQ
YWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKSk7
Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgKm5vdGlmaWNhdGlvbik7CisgICAgbV9u
b3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2Jh
bE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CisgICAgbV9wcm92aWRl
ci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDIzYjQ1MTQ4NGUxNmY0MGViZDA3OGNkY2Y4MDY0MWQxZWEzMzBjMDEuLjIx
Nzk3MDBhOWQ3NGQ5M2IxNzU0NmY4YmYzMWQ4N2Q2YmE3Yzc2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY1NCwxMCArMzY1NCwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCkKIAogICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlEKSk7CiAgICAgCi0g
ICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRl
KCp0aGlzLCBmcmFtZUlEKTsKKyAgICBhdXRvIHN1YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3Jl
YXRlKCp0aGlzLCBmcmFtZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nl
c3Mgd2lkZSBtYXAuCi0gICAgbV9wcm9jZXNzLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgKnN1YkZy
YW1lKTsKKyAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJh
bWVJRCwgR2xvYmFsV2luZG93SWRlbnRpZmllciYmIHdpbmRvd0lkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODI4MzBhNTNmNjE0OTRi
MTIwMjBkNDgxNTIwNzhhNWM5M2UyYTVjYS4uZTllMmMxMTBjMjVjMzFkYWJmZWQxZmQ2NjU4OTI2
ZTc0MGFhZTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGlj
cyh1aW50MzJfdCBzdGF0aXN0aWNzTWFzaywgRnVuY3Rpb248dm9pZCAoQVBJOjoKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4gcmVxdWVzdCA9
IFN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSkpOworICAgIGF1dG8gcmVxdWVzdCA9IFN0YXRpc3RpY3NS
ZXF1ZXN0OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSkpOwogCiAgICAgaWYgKHN0YXRpc3RpY3NNYXNrICYgU3RhdGlzdGljc1JlcXVl
c3RUeXBlV2ViQ29udGVudCkKICAgICAgICAgcmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKHJl
cXVlc3QuZ2V0KCkpOwpAQCAtMTcyMiwyMCArMTcyMiwyMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChB
UEk6OgogICAgICAgICByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhT
dGF0aXN0aWNzUmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RX
ZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAv
LyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFr
ZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KIH0K
IAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRp
c3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdE5ldHdv
cmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICgh
bV9uZXR3b3JrUHJvY2VzcykgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IE5l
dHdvcmtQcm9jZXNzIHN0YXRpc3RpY3MgYnV0IHRoZSBOZXR3b3JrUHJvY2VzcyBpcyB1bmF2YWls
YWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgcmVxdWVzdElE
ID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7Ci0gICAgbV9zdGF0aXN0aWNzUmVx
dWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgdWludDY0X3QgcmVxdWVzdElEID0g
cmVxdWVzdC5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKKyAgICBtX3N0YXRpc3RpY3NSZXF1ZXN0
cy5zZXQocmVxdWVzdElELCAmcmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhyZXF1
ZXN0SUQpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggMDYzNDMyNDliYWE3MjVhZmI2Y2I0NDRjNTUyMzI1M2QxN2UwODBiYy4uZTZiNDQ0ZTkx
NDI3Yjk2Y2FhODg0M2FlYjNmYTIyN2NkZDdiNTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00ODcsOCArNDg3LDggQEAgY2xhc3MgV2ViUHJvY2Vzc1Bv
b2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9j
ZXNzUG8KICAgICBXZWJQcm9jZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6
OklzUHJld2FybWVkOjpObyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKLSAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOwotICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CisgICAgdm9pZCByZXF1ZXN0
V2ViQ29udGVudFN0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVl
c3ROZXR3b3JraW5nU3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOwogCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nc3RyZWFt
ZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCmluZGV4IDVlM2ZiNjVjMjMwZGJkODRk
YWUzNzAyZGQ2ZGRmN2QyNTMyNDA4OWQuLmUzYWU1MTRiMDM3Y2U4Zjg4MDQ5OGFmZTEyYTFmOWVj
MzFiYTY2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEluc3RhbGxNaXNzaW5n
TWVkaWFQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbikKIHsKLSAgICBSZWZQdHI8SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9u
UmVxdWVzdD4gcmVxdWVzdCA9IEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3Q6OmNyZWF0ZSgqdGhpcywgZGV0YWlscywgZGVzY3JpcHRpb24pOwotICAgIGlmIChwYWdl
Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdCgqcmVxdWVzdCkpCisgICAgYXV0byByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNj
cmlwdGlvbik7CisgICAgaWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICByZXF1ZXN0LT5kZW55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRl
eCA4NTE2NDM3MGY3YjUxYmZiMDkxMGVhMDA0MWRiZTEwMTQ0MjdmODYzLi45MmVhZDA0NWU4Yjhm
YzJlNGI5OTM0NDI2YmQxMGE0YThlNTlmOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTUz
LDE4ICs1MywxOCBAQCBXZWJQYWdlUHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZp
ZXcpOwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZl
cmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1
dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0
Mi4iLCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxs
b3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxk
cyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRMb2dzUGFnZU1lc3Nh
Z2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCh0cnVlKTsKICNlbmRpZgotICAgIFJlZlB0cjxXZWJQ
YWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VH
cm91cElkZW50aWZpZXJGb3JQYWdlKG51bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKG51
bGxwdHIpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wo
Jmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3RvckxldmVsRm9yUGFnZShudWxscHRyKSkpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwog
ICAgIG1fd2ViVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoKnBhZ2VD
b25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2Vi
VmlldywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKGluc3BlY3RvclZpZXdEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1fd2ViVmlldyksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBiNjRlMzM1
OTI5MmIzZmVlY2Y3ZTcyZWFiMzBlMGE2YTcxOWZkMzRjLi5jYTE4N2E2NDIzNDExMmU4NTc5YmQ4
NjE2MmQ5YjgzZmI0MjljODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAg
ICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcp
OwogCi0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVu
Y2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8g
cHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cg
ZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3
aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogI2VuZGlmCiAg
ICAgcHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoewogICAgIH0pOwotICAg
IFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGlu
c3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSkpOworICAg
IGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3Vw
SWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CiAKICAgICBhdXRvIHBhZ2VDb25m
aWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0
aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVm
ZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdl
R3JvdXAuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVm
ZXJlbmNlcy5wdHIoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdl
R3JvdXAucHRyKCkpOwogICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGUoKnBhZ2VDb25maWd1cmF0aW9uLnB0cigpKSk7CiAgICAgZ19vYmplY3Rf
YWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9p
bnNwZWN0b3JWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3ll
ZCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYzFjZjU4NzU4ZWNiYTk4NTdhMGE2MWFkNDhk
NmJmYTNlMWMwZDdmMy4uOWE0N2UyNjQ5ZjY5M2NkMmIzYjU1Y2VjMjBlMTczYzJmYjRiMTNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCkBAIC0xODYsNyArMTg2LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25G
b3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7CiAgICAgICAgICAgICBVUkwgcmVxdWVz
dEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRh
aW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7Ci0gICAg
ICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVj
a2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxl
Z2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25G
b3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICAgICAgYXV0byBjaGVja2Vy
ID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0
ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JV
Ukw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3
RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CiAgICAgICAgICAgICBbdWlEZWxlZ2F0
ZSBfd2ViVmlldzp2aWV3RnJvbVJlcXVlc3QgcmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwgZnJhbWU6ZnJhbWVJbmZvLmdldCgpIGRlY2lzaW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDExMjM1YTEy
N2UyNzdhMDE4NzYwMzhjOTc0NmY3ZjhlZDJjY2JhMzEuLjlmZWZmZGRmNDEwNDEyZTc2ZDJjMGMz
ZGZkNjdiZjFlMWJkMmIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJl
YWJsZUJpdAogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJs
ZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKQogewotICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgYXV0byBpbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdl
QnVmZmVyKSwgdHJ1ZSk7Ci0gICAgbV9pbXBsLT5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFn
ZS5nZXQoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJj
aGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOworICAgIG1faW1wbC0+c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoaW1hZ2UucHRyKCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1
cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0K
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApp
bmRleCA5MWNmZjYxOWJiOWFmOWUzYWM1NGMzYjA1NjUyZTJiMzBlZTNkYjY5Li41YWZlYjgwOWYy
MDQ4MGZkZGQ3NjIxZTMyNTA5NDRkYjdkZWU2ZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIs
NyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250
ZW5kUGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBSZWZQdHI8
V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJp
bmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdl
YlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwog
I2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGlu
c3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcg
c2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1
ZSk7CkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogICAgIHByZWZlcmVuY2VzLT5z
ZXRKYXZhU2NyaXB0UnVudGltZUZsYWdzKHsgfSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRp
ZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQ
YWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNw
ZWN0ZWRQYWdlKCkpKTsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQ
b29sKCZpbnNwZWN0b3JQcm9jZXNzUG9vbChpbnNwZWN0aW9uTGV2ZWwoKSkpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Ci0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5wdHIoKSk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXAucHRyKCkpOwogCiAgICAgV0tQ
YWdlTmF2aWdhdGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQgPSB7CiAgICAgICAgIHsgMCwg
dGhpcyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KaW5kZXggODI1MDkwMTc5MDBmNDc4OTQ0
OWVjNWRlZmM3MTI4YTE3NWM2Njk5Ny4uOTMxMzQzZWIxYmI4NzMyZWE1ZDNiNTQyNGM1MzA2Yzg0
NjJlOWFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCkBAIC01MCw4ICs1MCw4IEBAIC0g
KGlkKV9pbml0V2l0aEltcGw6KFdlYkNvcmU6OlJhbmdlKilpbXBsCiAKIC0gKGlkKWluaXRXaXRo
RG9jdW1lbnQ6KFdLRE9NRG9jdW1lbnQgKilkb2N1bWVudAogewotICAgIFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvV2ViQ29y
ZURvY3VtZW50KGRvY3VtZW50KSk7Ci0gICAgc2VsZiA9IFtzZWxmIF9pbml0V2l0aEltcGw6cmFu
Z2UuZ2V0KCldOworICAgIGF1dG8gcmFuZ2UgPSBXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKCpXZWJL
aXQ6OnRvV2ViQ29yZURvY3VtZW50KGRvY3VtZW50KSk7CisgICAgc2VsZiA9IFtzZWxmIF9pbml0
V2l0aEltcGw6cmFuZ2UucHRyKCldOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5k
ZXggZTk5ZjM1NzBkMGUzMGJhZGZlMDFkYWNmZGIzZmFmNDUwZTdjYWU2Zi4uOGMyOTViYWViZmJh
MmUwNmI1Yjc2MTg1NWJmMmVkOTgyOTlmZWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgUmVmUHRyPFdlYklt
YWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0
aW9ucyBvcHRpb24KICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBwYWludFJlY3Quc2l6
ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoc2NhbGVGYWN0b3IpOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKKyAgICBhdXRvIGJhY2tpbmdTdG9y
ZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsg
fSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIx
YTMxMjMzZTZmYzllMjgxOGEyZmNmYTMwMTkxYTVmYTE1Nzg4YjUuLjk1MTIzMDJiMjgyZTQxZWQx
YjI0NzE5YTJkMDQ0OGRjNzQ3ZmZmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYg
cGFnZSwgUmEKICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5n
KCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlw
ZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7Ci0g
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudC5jcHAKaW5kZXggZWMwOTg2N2JmMDM4ZWU1OGM5ZmUyZDM4NzQwNjQ4OWQ2NjNiOGQ4ZS4u
NmUyODJkOWUwYjkwYjI5MGVhYTA4OTg3YTQyYjhmODk4Y2E5YjAwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC03OCwxMCArNzgsMTAgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFn
ZSogcGFnZSwgY29uc3QgSGkKICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVh
dGUoY29yZUhpdFRlc3RSZXN1bHQpOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvcmVIaXRUZXN0UmVzdWx0KTsKIAogICAgIFdL
VHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSht
b2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKGhp
dFRlc3RSZXN1bHQucHRyKCkpLCB0b0FQSShtb2RpZmllcnMpLCAmdXNlckRhdGFUb1Bhc3MsIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwo
dXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGM2YTUw
NjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAuLjg4YzBhMmQ5YzYzMTJkMmMwZWEw
NmE1NTdmNWEwMWUyYzM5YTRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc1MSw3
ICs3NTEsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNo
b3QoKQogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IG1fcGx1Z2luU2l6ZTsKICAgICBi
YWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9KTsKICAgICBhdXRv
IGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBhcHBseURldmljZVNjYWxlRmFjdG9yIGluc3RlYWQg
b2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAgY2FsbGluZyBpbnRvIFdLU0kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGMyY2Jh
MDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUzNTVjZDZmYzMyNjQuLjAxOTliODRmOGY0ZTI4Zjc2OWE3
NDIxOTUxODg5MTMxZGM4Nzc0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgUERGUGx1
Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQ
VmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
c3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGljYXRpb24vcGRmIiwg
U3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKKyAgICBhdXRvIHJlc291
cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9kYXRh
LmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5n
KCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKIH0KIApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gUERGUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0g
c2l6ZSgpOwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcik7
CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3IsIC1jb250
ZW50c1NjYWxlRmFjdG9yKSk7CkBAIC0xODUzLDExICsxODUzLDcgQEAgdm9pZCBQREZQbHVnaW46
OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5
ICppdGVtcywKICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5n
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpT
ZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0
U3RyaW5nLmdldCgpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKLQotICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFy
ZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDMxNDc5YWZjMjlhZGY0YWM4NTJi
YjNjZTNkODNjNDEyOTI0N2JmYzAuLjY1OGVjZDlkMjM3ODkwNGIzNDdkMGQzYTZmNDY3ZTk0NGQy
ZjA3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtODQsOCAr
ODQsOCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgIGlmICghSVBDOjpDb25uZWN0aW9u
OjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywg
cGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hy
b25vdXNJbml0aWFsaXphdGlvbik7Ci0gICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBw
ZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBhdXRvIHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9j
ZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY29weVJlZigpKTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKQEAgLTk0LDcgKzk0LDcgQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5z
ZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7
CisgICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLnB0cigpOwogfQogCiB2b2lkIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IDg4NWZjYTNlMTRjZjA2ZDA1Yzc0YjAzYmI5NGYzYWJiNmJjOTFkMTYuLjk3MGVhMWZlN2NhOTY0
NWRkOWM3NzdjY2Q1ZTM2MmE2NmRlYWQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTI0Nyw4ICsyNDcsNyBAQCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBQbHVnaW5Qcm94eTo6c25hcHNob3QoKQogICAgIGlmIChzbmFwc2hv
dFN0b3JlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoc25hcHNob3RTdG9yZUhhbmRsZSk7Ci0gICAgcmV0dXJuIHNuYXBzaG90QnVmZmVyOwor
ICAgIHJldHVybiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsK
IH0KIAogYm9vbCBQbHVnaW5Qcm94eTo6aXNUcmFuc3BhcmVudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQ0OTVjOTkxMTIyZDA4
NDNkYWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzguLjU5MmE0ODcxNTBlZDdhZjhlZWU4NTI3MDA2Y2Vl
YmM5YzM3MWU4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0xMTc0LDggKzExNzQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZv
cm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgfQogCiAgICAgLy8gVGhpcyBy
ZXF1ZXN0IGlzIHRvIGxvYWQgYSBVUkwgYW5kIGNyZWF0ZSBhIHN0cmVhbS4KLSAgICBSZWZQdHI8
U3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5WaWV3OjpTdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0
LT5yZXF1ZXN0SUQoKSwgcmVxdWVzdC0+cmVxdWVzdCgpKTsKLSAgICBhZGRTdHJlYW0oc3RyZWFt
LmdldCgpKTsKKyAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRo
aXMsIHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOworICAgIGFkZFN0
cmVhbShzdHJlYW0ucHRyKCkpOwogICAgIHN0cmVhbS0+c3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBiMzFiMTE3ZjBlZGFiMzk4YjI1MTI0MDY0ZTE2MjI3ZmFmNzg2MjU1
Li43OGU2NzM1NDA3MWIzNjU0NzAwZjE2ZjQwZWNhZmQ5OTU2ZTYxMTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAg
ICAgYXV0byBjdXJyZW50UXVvdGEgPSB0cmFja2VyLnF1b3RhKG9yaWdpbkRhdGEpOwogICAgIGF1
dG8gY3VycmVudE9yaWdpblVzYWdlID0gdHJhY2tlci51c2FnZShvcmlnaW5EYXRhKTsKICAgICB1
aW50NjRfdCBuZXdRdW90YSA9IDA7Ci0gICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EYXRhLmRhdGFiYXNlSWRlbnRpZmll
cigpKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgbmV3UXVvdGEgPSBtX3BhZ2UuaW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoJm1fcGFnZSwgc2VjdXJpdHlP
cmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50
UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpOworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlm
aWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVk
RGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5wdHIoKSwgZGF0YWJhc2VOYW1l
LCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdl
LCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CiAKICAg
ICBpZiAoIW5ld1F1b3RhKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKApAQCAtNzM3LDggKzczNyw4IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKIHsKLSAgICBSZWZQ
dHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi50b1N0cmluZygpKTsKLSAgICBpZiAobV9wYWdl
LmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSgmbV9wYWdlLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdG90YWxCeXRlc05lZWRlZCkpCisg
ICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOworICAgIGlmIChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVV
SUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNl
Y3VyaXR5T3JpZ2luLnB0cigpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byYgY2FjaGVTdG9yYWdlID0gbV9wYWdlLmNvcmVQYWdlKCktPmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkMDVm
Yzk5NmMxZDRlZDlmNzU2ZmM4ODVlOTNjZDY1YjJjNDVkMDJjLi4xZjkxZThjZmM0YTA1OWY5ZWY3
ODFlMTQ2MTEwOTg3M2EzNzEzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTc2NywxMCArNzY3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKKyAgICBhdXRvIGFj
dGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5h
dmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBj
bGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2Vy
RGF0YSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5wdHIoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2Vy
RGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsK
ICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY5YjBjZWVmOWNmMGJmYWYzNGY2
NGRhOGIzMTYwNzg0NzE0MmEwYTMuLjE2NTQyZmI5MDYxNWMzMjM3ZjE1NzdjMzYyOTk0MjNiN2Ni
OGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xOTUsNyArMTk1
LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QKICAgICAgICAgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGU6OlJlcGx5KHBhdGhuYW1l
cywgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSksIDApOwogICAgIEFTU0VSVChwYXRobmFt
ZXMuc2l6ZSgpID09IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24g
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5W2ldKSkpCisgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXlbaV0pKSkKICAg
ICAgICAgICAgIGV4dGVuc2lvbi0+Y29uc3VtZVBlcm1hbmVudGx5KCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODcxNjEyMGY3MWRjZjlhYzIzZDhkMTNl
YmRmOTNjNjdkZjMzZDg5Ni4uMTg2N2M5ODQ5MDVjOTIwMGUwMjJkZTM2YjhkMDY1ZWZmZjI0NGYy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFi
bGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50
U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0
bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIEFTU0VSVChncmFwaGljc0NvbnRl
eHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCBmZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJlLi5mODdkOTM0NDNm
N2M1OGE4MmM0MzYzZjAzNGEwMDYwMTNiNmFhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAg
ICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAotICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShlbGVtZW50KTsKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEzOGNkMmJmNjM3
OTRjOGU5ZjFkMjEyYTNlNzhiM2U4YzRlZjhjNmIuLjhjZTU2NWZiOTU2ZjM2Y2I3NTJlZjgxMWEx
MjQ1ZWI1NWRkY2Y5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTE2NCw3ICsxNjQsNyBAQCBEaWN0aW9u
YXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYg
ZnJhbWUsIFJhbmdlJiByYQogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCiAgICAg
ICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hv
dFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgCi0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+
IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIGlu
ZGljYXRvck9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIGF1dG8gdGV4dElu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5kaWNhdG9y
T3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9y
KSB7CiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA3ODI0
ZTVjZjcxYjQ3ZGIwOWVlYTM1YTc2OWZhNzY0MWE3MmQ3ZjMyLi42YTg2YjAwMmI4NmY0MmEwMWNm
NDhlNWRmNjkwMGFjZjU4ZjgzMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lk
IERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIElu
dFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBi
aXRtYXBTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiaXRtYXBT
aXplLCB7IH0pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYml0bWFwU2l6ZSwgeyB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKaW5kZXggOWZlZmRiY2ExMmNmNTllNmUzMjVjYzljMjRlYmU0ZjMwOTI5ZDFmMy4u
NjNjYzI4MzkyZTQ4MGRmYmQ1NDMyZDY5MDAwZmEzOGYyMmRlNjYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMzQz
LDcgKzM0Myw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQogCiBib29sIEZp
bmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBi
b29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKIHsKLSAgICBSZWZQdHI8
VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVj
dGlvbkluRnJhbWUoc2VsZWN0ZWRGcmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJn
aW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgc2hvdWxkQW5pbWF0ZSA/IFRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2UgOiBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSk7CisgICAgYXV0byBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpj
cmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0
aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0
b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKICAgICBpZiAoIWluZGljYXRvcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggODBiZDIxMzk1ODdiMzE1ZGYxNzZkNjIwYjQ1
ODlkYzM2NTk5YTJmNi4uNmFjNjAzOWFhMzE4NDk1ZTM3YmIxNTg5NDdhNmZkODJlZWE1NWJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKCkKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2lu
Z1N0b3JlRmx1c2hlcjsKIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQo
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hl
ciwgcGFnZUlEXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdT
dG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAg
ICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDE4OWQxYTE4OGIyNGI2NDQ2ZDA1
MjdkZjg2NTBmMGExYTM4NjgxMGIuLmU0NzM3MGVmYjVlMGY0MTU4OWIyMTRiNWFiNzE5Yjc5ODJj
MDJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRlckRldGFj
aGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkKIFJldGFpblB0
cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9u
IGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+ZG9jdW1l
bnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJvb2wgewor
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqY29yZUZyYW1lKCkt
PmRvY3VtZW50KCksIFt0aGlzLCBjYWxsYmFjaywgY29udGV4dF0oRnJhbWUmIGZyYW1lKSAtPiBi
b29sIHsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJl
NmJlZmI4MTQ3ODY1ZmMwZTgxZTgxMjIzYjZjNDk2YWI3ZjFiZDUuLmI0YjdkN2E3Y2M4NDVlNTUz
MmMzYjIwNmU3ZDljMGUyNWVhNTdkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDMyLDEwICsxNDMyLDEwIEBAIHZvaWQgV2ViUGFnZTo6
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIElu
dFBvaW50IGRvCiAgICAgY29uc3QgaW50IHNpbmdsZUNsaWNrID0gMTsKICAgICAvLyBGSVhNRTog
U2V0IG1vZGlmaWVyIGtleXMuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHNl
dCBJc1NpbXVsYXRlZDo6WWVzLgotICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0g
TW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6Olll
cywKKyAgICBhdXRvIG1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3co
KSwgbnVsbHB0ciwgc2luZ2xlQ2xpY2ssIHNjcmVlblBvaW50LCBkb2N1bWVudFBvaW50LCB7IH0s
IHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgV2ViQ29yZTo6Tm9UYXAsIG51bGxwdHIpOwogCi0gICAg
bWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+Y29tcGxl
dGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5nZXQoKSwgTG9ja0hpc3Rvcnk6
Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpNYXliZVNl
bmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
OworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1lbnQt
PmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucHRyKCksIExvY2tI
aXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIFNob3VsZFNlbmRSZWZlcnJlcjo6
TWF5YmVTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCkBAIC0zNzA1LDcgKzM3MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogCiAg
ICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVB
cnJheVtpXSkpKQorICAgICAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQog
ICAgICAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5hcHBl
bmQoZXh0ZW5zaW9uKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggMGM4NGY2
NGM4YzYzZWQxYmJkNjBiNzNmM2I1NjhhNGEyNzhjMWFkZi4uZmJhNWIwNTZhNGM5ZmFkMDE3MWMx
ODgzZjAwY2ViZjVhMzU3ZjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTQsNyArOTQsNyBA
QCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3Rl
ZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0
b3IgPSBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVk
RnJhbWUsIGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFs
VmVydGljYWxNYXJnaW4pKTsKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9y
OjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBmaW5kVGV4dEluZGlj
YXRvck9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBG
bG9hdFNpemUodG90YWxIb3Jpem9udGFsTWFyZ2luLCB0b3RhbFZlcnRpY2FsTWFyZ2luKSk7CiAg
ICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
OWRmNjE4YTRkOWFkOGU5YjFkNjMyMDZjNjAwNTFkYWZiNzZkYjIzNS4uMTAzZmVhMzNmZjFiMTEy
YzUzMGY1OWU2ZTU2Y2Q1OGViMzRmMWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE4MjAsMTQgKzE4MjAsMTQgQEAg
dm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwg
Y29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnByZXZp
b3VzKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICBwb3NpdGlvbiA9IHN0
YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnN0YXJ0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAK
LSAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKSAhPSBv
bGRUZXh0KQorICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UucHRy
KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2VsZWN0aW9uIGhhcyBjaGFuZ2VkIHVudGls
IHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRleHQuCiAgICAgZnJhbWUuZWRpdG9yKCku
c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UocmFuZ2UucHRyKCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0
VGV4dChuZXdUZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzKGZhbHNlKTsKIH0KQEAgLTIxMzYsMTcgKzIxMzYsMTUgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlua0VsZW1lbnQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmtSYW5nZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9h
dCBtYXJnaW5JblBvaW50cyA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWY8UmFuZ2U+
IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlua0VsZW1lbnQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgbWFyZ2lu
SW5Qb2ludHMgPSA0OwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2Uo
KmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwgVGV4dElu
ZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRC
YWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFs
bENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlv
biwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZSht
YXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRleHRJbmRpY2F0
b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UobGlua1JhbmdlLmdldCgpLCBUZXh0
SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUmVz
cGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwgVGV4
dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVudEZvckNvbXBs
ZXhSYW5nZXMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBkZXZp
Y2VTY2FsZUZhY3RvciwgbWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwogCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlua0luZGljYXRvciA9IHRleHRJbmRpY2F0b3It
PmRhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZXh0SW5kaWNhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8u
bGlua0luZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQpAQCAtMjE1Niw3ICsyMTU0LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0
YURldGVjdG9ySWRlbnRpZmllciA9IERhdGFEZXRlY3Rpb246OmRhdGFEZXRlY3RvcklkZW50aWZp
ZXIoKmVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRhRGV0ZWN0b3JS
ZXN1bHRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0
cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFEZXRlY3Rpb246OnJlcXVpcmVz
RXh0ZW5kZWRDb250ZXh0KCplbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoKmVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJl
YWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFy
eShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4
dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVo
YXZpb3IsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8udGV4dEFmdGVy
ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3Rl
cnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwgZGF0
YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCks
IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CkBAIC0yMTgxLDcgKzIxNzksNyBA
QCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3du
IHRvIG5lZWQgd2lkZSBnYW11dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShtX3BhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHNoYXJlZEJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJp
dG1hcENvbmZpZ3VyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUu
d2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZDI1NTVjMTk5MDhhYmE2NmEyNGMxYzFi
ZGQxNTZmMmQzZDI5MDQ4My4uNDdmYzNjMjkwZjY1MGUzNjdkYjk4ZDRjMzcxMzVmOTNmNjRlNDEx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtODUwLDcg
Kzg1MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNj
YWxlKTsKIAogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0
aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSIp
OwotICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uID0g
UGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdl
dCgpKTsKKyAgICBhdXRvIHJlbmRlclZpZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOwogICAgIHJlbmRlclZp
ZXdBbmltYXRpb24tPnNldFRvVmFsdWUodHJhbnNmb3JtKTsKIAogICAgIFJldGFpblB0cjxDQUxh
eWVyPiBzaGFkb3dDQUxheWVyOwpAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50CiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+YXBwbHlUcmFuc2llbnRab29tVG9QYWdl
KHNjYWxlLCBvcmlnaW4pOwogICAgIH1dOwogCi0gICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25G
b3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiLCAqcmVuZGVyVmlld0FuaW1hdGlvbik7CisgICAg
em9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVudFpvb21Db21taXQiLCByZW5k
ZXJWaWV3QW5pbWF0aW9uLmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dDQUxheWVyKSB7CiAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZHMgPSBzaGFkb3dMYXllckJvdW5kc0ZvckZyYW1lKGZy
YW1lVmlldywgc2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDgwNWZlOWU0Y2Ji
NWQ3MjZmZjIyNmZlZDU4ZDIwYTFkN2U5ZGJiMjEuLmY0NmQ1ZjhlNzFiNDJkMjI5M2EzYmY1ZmYw
YTBhZTkzOTFmZjBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTQwLDI0ICs0MCwy
NCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMp
KTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6RXBoZW1lcmFs
TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxM
b2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlw
ZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCitS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlw
ZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5
dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3Rv
cmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAmdG9wTGV2ZWxPcmlnaW4sIHF1
b3RhSW5CeXRlcykpOwogfQogCiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmRpZERlc3Ryb3lTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgbWFwKQogICAg
IG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShtYXAuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwog
fQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJl
YShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVmPFN0b3JhZ2VB
cmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBpZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpCiAgICAgICAgIHJldHVybiBlcGhlbWVyYWxMb2NhbFN0
b3JhZ2VBcmVhKHNlY3VyaXR5T3JpZ2luKTsKQEAgLTE4NSwxNiArMTg1LDE2IEBAIGNsYXNzIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYSBmaW5hbCA6IHB1YmxpYyBT
dG9yYWdlQXJlYSB7CiAgICAgUmVmUHRyPFN0b3JhZ2VNYXA+IG1fc3RvcmFnZU1hcDsKIH07CiAK
LVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2Fs
U3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1Jl
ZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBh
dXRvJiBzbG90ID0gbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcy5hZGQoc2VjdXJpdHlPcmln
aW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNsb3QpCiAgICAgICAgIHNs
b3QgPSBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6RXBoZW1lcmFsU3RvcmFnZUFyZWE6OmNyZWF0ZShz
ZWN1cml0eU9yaWdpbiwgbV9xdW90YUluQnl0ZXMpOwotCi0gICAgcmV0dXJuIHNsb3QuZ2V0KCk7
CisgICAgQVNTRVJUKHNsb3QpOworICAgIHJldHVybiAqc2xvdDsKIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqIG5ld1BhZ2UpCitS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3
UGFnZSkKIHsKICAgICBBU1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOwogCkBAIC0yMDIsMTIg
KzIwMiwxMiBAQCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNvcHkoUGFnZSogbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlEKCksIG1fcXVv
dGFJbkJ5dGVzKTsKIAogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpF
cGhlbWVyYWxMb2NhbCk7Ci0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1l
c3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwg
bV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5
dGVzKSk7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fc3RvcmFnZU5h
bWVzcGFjZUlELCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcykpOwogCiAg
ICAgZm9yIChhdXRvJiBpdGVyIDogbV9lcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhcykKICAgICAg
ICAgbmV3TmFtZXNwYWNlLT5tX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLnNldChpdGVyLmtl
eSwgaXRlci52YWx1ZS0+Y29weSgpKTsKIAotICAgIHJldHVybiBuZXdOYW1lc3BhY2U7CisgICAg
cmV0dXJuIFdURk1vdmUobmV3TmFtZXNwYWNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCBmMTNhMjJkY2JkMjFiNjc0MGU0NTIzN2Y0ZGZhZDgz
MTI1NjcyOWUzLi45N2RiMGI4MTNiYWY1Y2I1YTQ3ZDcyZWU1YTA2NTVlNjc1MDBlZDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDEwICszOSwxMCBAQCBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2
NF90IHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBj
cmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90
YUluQnl0ZXMpOwogCiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKIApAQCAt
NTYsMTAgKzU2LDEwIEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFn
ZUFyZWE+IGVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VU
eXBlOwogICAgIGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggNDYyZGU4NmM0OTAwNGYxYWY2OTFlZDBi
NjcxNjE4ZjAzYTdmZmUyYy4uODI1NTdiNzI3MTRhZDg3MjY1N2VhZjg0OTY4NTIxYTcxMzYwMzll
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC00MSwxNCArNDEs
MTQgQEAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVy
KQorUmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHNs
b3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoc2xvdCkKLSAgICAgICAgcmV0dXJuIHNsb3Q7Cisg
ICAgICAgIHJldHVybiAqc2xvdDsKIAotICAgIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI+IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKG5ldyBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoaWRlbnRpZmllcikpOwotICAgIHNsb3QgPSBzdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuZ2V0KCk7CisgICAgYXV0byBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBh
ZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7Cisg
ICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5wdHIoKTsKIAogICAgIHJldHVybiBz
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiB9CkBAIC02NSwyMiArNjUsMjIgQEAgV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkKICAgICBz
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWdu
ZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQo
KSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJu
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQorUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1faWRlbnRp
ZmllciwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBx
dW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJl
dHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKG1faWRlbnRpZmllciwgdG9wTGV2ZWxPcmlnaW4sIHF1b3RhKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggOGVhMjVlNmU3NTA5ZWIyYzE3YmQxZjk0ODRj
MzczMWY2YzFlYTc5NS4uM2NlNmRiOWYwNjhlODAzODk2ODExNGVmOTlhYzI1YWNlMDQxMWYzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTMxLDE2ICszMSwxNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3Jl
YXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0
dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1f
aWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGNmMzA4NWI4NDBmMDdmZDdkMDU5
MjEzNTI1ZGQ0N2RiZTFiZWI0NzEuLmZjNjU5ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZh
Zjc4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yMDIsOSArMjAyLDkgQEAgdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjppbnZhbGlkYXRlKCkKIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dD4gaW50ZXJmYWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRl
KCp0aGlzLCBjb250ZXh0SWQpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7Cisg
ICAgYXV0byBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUo
KTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6
OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKKyAgICBtb2RlbC0+YWRkQ2xpZW50KGludGVyZmFj
ZS5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBX
VEZNb3ZlKGludGVyZmFjZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA3ZjYzMzA5ZjMyYTBh
ODNhMzhkMGMyODgyNWU4MTczYjAyMjFmMTZlLi41ZDYxMTBiNzkwOWYzNGNjZTNlNzYyYmZkMzhk
MmIyZjcyMWQ1MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjppbnZhbGlkYXRlKCkKIAogVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgUmVmUHRyPFZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIGF1dG8gbW9kZWwgPSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgYXV0byBpbnRlcmZhY2UgPSBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7
CiAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5hZGRDbGllbnRGb3JDb250ZXh0KGNvbnRl
eHRJZCk7CiAKICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpKTsKLSAgICBtb2Rl
bC0+YWRkQ2xpZW50KCppbnRlcmZhY2UpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNl
LmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdU
Rk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCAwMTgxNWMxM2FjMmExMDI5NjQwMzI3
MzE3MjI2N2UzMjU2ZThjMmVjLi40YTk0YTFkODVjZWNhMWUzYzYzYmM3MmE4NmFiMDZhZjBlMTg2
ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKQEAgLTkzLDMxICs5MywzMCBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKICAgICAgICAgY2xvc2UoKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQorUmVmPFN0
b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBhZ2UqKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAg
IEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uIHx8IG1fc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKIAotICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gbmV3TmFtZXNwYWNlID0gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOworICAgIGF1dG8gbmV3
TmFtZXNwYWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VU
eXBlLCBtX3BhdGgsIG1fcXVvdGEpKTsKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3N0b3JhZ2VB
cmVhTWFwKQogICAgICAgICBuZXdOYW1lc3BhY2UtPm1fc3RvcmFnZUFyZWFNYXAuc2V0KGl0ZXIu
a2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwogCi0gICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKKyAg
ICByZXR1cm4gV1RGTW92ZShuZXdOYW1lc3BhY2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbikKK1JlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogCi0gICAgUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWE7Ci0gICAgaWYgKChzdG9yYWdlQXJlYSA9IG1f
c3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpKQotICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7
CisgICAgaWYgKFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdl
QXJlYU1hcC5nZXQob3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2VBcmVhLnJlbGVhc2VO
b25OdWxsKCk7CiAKLSAgICBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1f
c3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7Ci0gICAg
bV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5nZXQoKSk7Ci0gICAgcmV0
dXJuIHN0b3JhZ2VBcmVhOworICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6
OmNyZWF0ZShtX3N0b3JhZ2VUeXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIuZ2V0KCksIG1fcXVv
dGEpOworICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9yaWdpbiwgc3RvcmFnZUFyZWEucHRyKCkp
OworICAgIHJldHVybiBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKIH0KIAogdm9pZCBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCAyN2I4ZjliYWIzYWQzMzk2Njg1NDBmNDgwYmZk
NjVhOTY2NjE2MTM3Li5jODhmMDYxZWY1ZTUwYzliMTYzNWVjM2Y4ZDZiYTBlZDc3MDVjYWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaApAQCAtNTcsOCArNTcsOCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHByaXZhdGU6CiAgICAgU3RvcmFnZU5hbWVz
cGFjZUltcGwoV2ViQ29yZTo6U3RvcmFnZVR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgdW5zaWdu
ZWQgcXVvdGEpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJl
YShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKiBuZXdQYWdlKSBvdmVycmlk
ZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworICAgIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgUmVmUHRyPFN0b3JhZ2VBcmVh
SW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IGVkN2VhM2FhMzkzZGE1NTkzN2ExYWQ0NWE0
NmQ2NzdjODg0YWJkOWUuLjgzNjIwNTdmZmQ3NGY2ZDJkYTFhYTQ3ZDc3ODAwNDkxYzlkYTExZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBAIHN0YXRpYyBIYXNoU2V0
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJz
KCkKICAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIH0KIAotUmVmUHRyPFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCitSZWY8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CiB9CiAKIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQpAQCAtOTYsMjIgKzk2LDIyIEBAIHZvaWQgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpzeW5jTG9jYWxTdG9yYWdlKCkKICAgICB9CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHF1b3RhKTsK
IH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVv
dGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
CiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpnZXRPckNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCwgcXVvdGEpOwogfQogCi1S
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25l
ZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkIHF1b3RhKQogewogICAgIC8vIEZJWE1FOiBBIHNtYXJ0ZXIgaW1wbGVtZW50YXRp
b24gd291bGQgY3JlYXRlIGEgc3BlY2lhbCBuYW1lc3BhY2UgdHlwZSBpbnN0ZWFkIG9mIGp1c3Qg
cGlnZ3ktYmFja2luZyBvZmYKICAgICAvLyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSBoZXJlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCmluZGV4IDBkMjA3ZDM0MzE5MmM0ZmU3Yjk3ZDAzOGQ1ODFiMmM0ZWMw
NzdhYmIuLmU1ODlmZWU3YTVjNmM5MWNmOTRiN2QyM2I0ODYxNDgxNzliOGNmZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpOworICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIHZp
cnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiAgICAgc3RhdGljIHZvaWQg
Y2xvc2VMb2NhbFN0b3JhZ2UoKTsKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNp
Z25lZCBxdW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuY3BwCmluZGV4IGM2YjQwODcxMDUwMDYxOTkwMWI1NDA2MDVlMDY2
N2QxYTYyMTNiOWQuLjYzY2FlMmQwYWQ1MmNkNTEzZDg1MzMyMDBjM2RlZWZjYzE3YzRiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91
cC5jcHAKQEAgLTQyLDE4ICs0MiwyMiBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
ZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3VwcygpCiAgICAgcmV0dXJuIHdlYlZpZXdHcm91cHM7
CiB9CiAKLVJlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkK
K1JlZjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKIHsKICAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dy
b3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpKTsKIAogICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5hZGQo
bmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghd2ViVmlld0dyb3VwKQot
ICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwotICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAtPm1f
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0
eSgpKQorICAgIGlmICghd2ViVmlld0dyb3VwKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7
CisgICAgICAgIHdlYlZpZXdHcm91cCA9IHJlc3VsdC5jb3B5UmVmKCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgu
aXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoOwogCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKKyAgICByZXR1cm4gKndl
YlZpZXdHcm91cDsKIH0KIAogV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBT
dHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWV3R3JvdXAuaAppbmRleCBmZTA1Y2Q1NDg2OTA1Y2QyOWZiNjg4NGU3YTg3ZmJkYzkzMjcy
YjVmLi40ZDQxMzdjZTJhYWFjM2ExNDBkNTljNjJjMzk2MzM1MmYyNTViMTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKQEAgLTM4
LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3JvdXAgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJWaWV3
R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIH5XZWJWaWV3R3JvdXAoKTsKIAogICAgIHN0YXRp
YyBXZWJWaWV3R3JvdXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVu
dUlPUy5jcHAKaW5kZXggZDA4NDkzYjBmNDJjY2QzNjJhZjQ0MmMwM2U0OTQ0OGQ4MWQ3ZjVkMC4u
ODA0OWIxY2NjMjcyYzM0NzI1OTllNDk0MmU1MDA2Y2I4NjgxNTE3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1
cE1lbnVJT1MuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyhQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudUlPUyhjbGll
bnQpKSkKKyAgICA6IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVJT1MoY2xpZW50KSkp
CiB7CiB9CiAKIFBvcHVwTWVudSogU2VhcmNoUG9wdXBNZW51SU9TOjpwb3B1cE1lbnUoKQogewot
ICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQog
CiB2b2lkIFNlYXJjaFBvcHVwTWVudUlPUzo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiAvKnNlYXJjaEl0ZW1zKi8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCmluZGV4IDcxNmVkNTljNDE0NzIzOTUyZDcwZGVjNTJkYmY4ZWY1
OTg3OWFmNGYuLjBlZjQ0YjQyYTY2MGFlMzUyYzhiZWU2OTU1MGFiMmRmMGY5NTM0ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1Nl
YXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVu
dUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnUgewogICAgIGJvb2wgZW5hYmxl
ZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxQb3B1cE1lbnVJT1M+IG1fcG9w
dXA7CisgICAgUmVmPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKIH07CiAKICNlbmRpZiAvLyBTZWFy
Y2hQb3B1cE1lbnVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCmluZGV4IDQyM2MwNDkwMGY0
ZjBlNmI5YTVlNjg5ZmMxOWM4NzM3NDQyYjViMjkuLjg1OTExNzdhOWNmMmFlOTI2MGM3YTBjZmFm
MmYzMmExMzYxZjY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KQEAgLTQzMyw4ICs0MzMs
OCBAQCAtIChET01SYW5nZSAqKWVuY2xvc2luZ1JhbmdlV2l0aERpY3RhdGlvblBocmFzZUFsdGVy
bmF0aXZlczooTlNBcnJheSAqKilhbHRlcm5hdAogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBtYXJrZXJBbHRlcm5hdGl2ZXMuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAg
WyhOU011dGFibGVBcnJheSAqKSphbHRlcm5hdGl2ZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKSht
YXJrZXJBbHRlcm5hdGl2ZXNbal0pXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXIt
PnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAg
cmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJr
ZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTQ2Miw4ICs0NjIsOCBAQCAtIChET01SYW5n
ZSAqKWVuY2xvc2luZ1JhbmdlV2l0aENvcnJlY3Rpb25JbmRpY2F0b3IKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgRG9jdW1l
bnRNYXJrZXIqIG1hcmtlciA9IG1hcmtlcnNbaV07CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0
T2Zmc2V0KCkgPD0gb2Zmc2V0ICYmIG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwg
bm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsK
LSAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4ga2l0KHJh
bmdlLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KaW5kZXgg
OTZhNjQ5NmMyYzQ0NjA5OTJjNWMxMmMwZGNmZTY3ZjM0MGE2YzFjOC4uYTU5MTk4YzMzNGVlMTQ5
OGQ5ZjM0YjljMDk2MjkzZGMzNmNhNWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTQ2NSwxMyAr
NDY1LDEzIEBAIC0gKHZvaWQpc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOihOU1VSTCAqKVVSTAog
ICAgIGlmICghVVJMKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50
ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcywgRXZlbnQ6OklzQ29tcG9zZWQ6
OlllcywKKyAgICBhdXRvIGV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Olll
cywgRXZlbnQ6OklzQ29tcG9zZWQ6OlllcywKICAgICAgICAgTW9ub3RvbmljVGltZTo6bm93KCks
IG51bGxwdHIsIDEsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgbnVsbHB0ciwgMCwgMCwgbnVs
bHB0ciwgTW91c2VFdmVudDo6SXNTaW11bGF0ZWQ6Olllcyk7CiAKICAgICAvLyBDYWxsIHRvIHRo
ZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3Mg
YXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ugd2ViRnJhbWVd
KTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRvY3Vt
ZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVSTCB9LCB7IH0s
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVy
cmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OkFsbG93LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdywg
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxv
YWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQuZ2V0KCksIG51
bGxwdHIpOworICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJh
bWVMb2FkUmVxdWVzdCksIGV2ZW50LnB0cigpLCBudWxscHRyKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggZjg3ZTYxNTMzNzEyZjhlZWQ3MGNlZWI5ZTM4NjM1
ZTNhYThmNGFkNC4uMWI2YzgyMjg1NGEwN2YzZDBjN2EwNjAxNzZlNGI4MTBlNzg5MWZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01NDcsNyArNTQ3LDcgQEAgLSAodm9pZCln
ZXRQcmV2aWV3U25hcHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNB
cnJheSAqKilyZWN0cwogICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29udGVudHMobm9k
ZSk7CiAKICAgICBjb25zdCBmbG9hdCBtYXJnaW4gPSA0IC8gbm9kZS5kb2N1bWVudCgpLnBhZ2Uo
KS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRp
Y2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0
b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8CisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4
dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGln
aHRseUZpdENvbnRlbnQgfAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRD
b2xvciB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwKICAg
ICAgICAgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVu
dEZvckNvbXBsZXhSYW5nZXMgfApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0K
aW5kZXggMWYzMmRjOTQ5OGJhNDIyMWQxMjkzOTFiODQ3OWFiYTMwYTk3OTg5NC4uYTA0YmM1NTdi
ZmRkYzk3NmZkMTgwNWFmZWI3ODY1YjRkMTI3YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyLm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eT4gTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aW5zdGFudGlhdGVQbHVn
aW4KICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFX
aXRoUHJvcGVydHlMaXN0OnByb3BlcnRpZXMuZ2V0KCkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0Qmlu
YXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogICAgIEFTU0VSVChkYXRh
KTsKICAgICAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBpbnN0YW5j
ZSA9IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y3JlYXRlKGhvc3RQcm94eSwgcGx1Z2lu
VmlldywgZnVsbEZyYW1lKTsKKyAgICBhdXRvIGluc3RhbmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBmdWxsRnJhbWUpOwogICAg
IHVpbnQzMl90IHJlcXVlc3RJRCA9IGluc3RhbmNlLT5uZXh0UmVxdWVzdElEKCk7CiAgICAga2Vy
bl9yZXR1cm5fdCBrciA9IF9XS1BISW5zdGFudGlhdGVQbHVnaW4oaG9zdFByb3h5LT5wb3J0KCks
IHJlcXVlc3RJRCwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KFtkYXRh
IGJ5dGVzXSkpLCBbZGF0YSBsZW5ndGhdLCBpbnN0YW5jZS0+cGx1Z2luSUQoKSk7CiAgICAgaWYg
KGtyID09IE1BQ0hfU0VORF9JTlZBTElEX0RFU1QpIHsKQEAgLTI5OSw3ICsyOTksNyBAQCBSZWZQ
dHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
OjppbnN0YW50aWF0ZVBsdWdpbgogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJDb250ZXh0SUQocmVw
bHktPm1fcmVuZGVyQ29udGV4dElEKTsKICAgICBpbnN0YW5jZS0+c2V0UmVuZGVyZXJUeXBlKHJl
cGx5LT5tX3JlbmRlcmVyVHlwZSk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IFdURk1vdmUoaW5zdGFuY2UpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6
OmNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlw
ZV90IHBsdWdpbkFyY2hpdGVjdHVyZSwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IDg4M2I5MjA3MjA3
ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4YjdjMzIuLmFiY2E2YmJlMzMwNTM1YTk4MmU2NDJkNGMy
YTE4OGE3YjhhOGI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KQEAgLTcxOSw4ICs3MTksOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZXZhbHVhdGVKYXZhU2NyaXB0KFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlcwogICAgICAgICAv
LyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5kIG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRo
ZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVyLiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2Vz
LgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFtyZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1
ZXN0KCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFt
KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCBwbHVnaW5SZXF1ZXN0LT5yZXF1
ZXN0KCkpOworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS0+c3RyZWFtSUQoKSwgc3RyZWFt
LmNvcHlSZWYoKSk7CiAgICAgICAgIAogICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4g
cmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJM
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAInRleHQvcGxhaW4iIApAQCAtNzk5LDEw
ICs3OTksMTAgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1
ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gKICAgICAgICAgbV9wbHVnaW5SZXF1
ZXN0cy5hcHBlbmQoV1RGTW92ZShwbHVnaW5SZXF1ZXN0KSk7CiAgICAgICAgIG1fcmVxdWVzdFRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxIb3N0
ZWROZXRzY2FwZVBsdWdpblN0cmVhbT4gc3RyZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJl
YW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgICAgICBhdXRvIHN0cmVh
bSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgcmVxdWVzdElELCBy
ZXF1ZXN0KTsKIAogICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQp
KTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbSk7CisgICAgICAgIG1f
c3RyZWFtcy5hZGQocmVxdWVzdElELCBzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFt
LT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWE3NDVkOTM4M2Y3
NDQ3ZjU0MmRmNTA0NWUyNDQ1YjM4NTNlMDg4MC4uMWQxZThhZWY2NzUyMzYxZjNlY2MwNDY1MDVk
NDY1N2MyNTQ2YjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIC0g
KHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDooV2ViUGx1Z2luUmVxdWVzdCAq
KUpTUGx1Z2luUmVxdWVzdAogICAgICAgICAvLyBEb24ndCBjYWxsIE5QUF9OZXdTdHJlYW0gYW5k
IG90aGVyIHN0cmVhbSBtZXRob2RzIGlmIHRoZXJlIGlzIG5vIEpTIHJlc3VsdCB0byBkZWxpdmVy
LiBUaGlzIGlzIHdoYXQgTW96aWxsYSBkb2VzLgogICAgICAgICBOU0RhdGEgKkpTRGF0YSA9IFty
ZXN1bHQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgICAgICAK
LSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBXZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJM
XSwgcGx1Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5S
ZXF1ZXN0IG5vdGlmeURhdGFdKTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y3JlYXRlKFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6VVJMXSwgcGx1
Z2luLCBbSlNQbHVnaW5SZXF1ZXN0IHNlbmROb3RpZmljYXRpb25dLCBbSlNQbHVnaW5SZXF1ZXN0
IG5vdGlmeURhdGFdKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNl
PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpV
UkwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC0xNjc4
LDkgKzE2NzgsOSBAQCAtIChOUEVycm9yKWxvYWRSZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0
ICopcmVxdWVzdCBpblRhcmdldDooY29uc3QgY2hhciAqKWNUYQogICAgICAgICBbc2VsZiBwZXJm
b3JtU2VsZWN0b3I6QHNlbGVjdG9yKGxvYWRQbHVnaW5SZXF1ZXN0Oikgd2l0aE9iamVjdDpwbHVn
aW5SZXF1ZXN0IGFmdGVyRGVsYXk6MF07CiAgICAgICAgIFtwbHVnaW5SZXF1ZXN0IHJlbGVhc2Vd
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4g
c3RyZWFtID0gV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4s
IHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUocmVxdWVzdCwgcGx1Z2luLCBzZW5kTm90aWZp
Y2F0aW9uLCBub3RpZnlEYXRhKTsKIAotICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uZ2V0KCkp
OworICAgICAgICBzdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3RyZWFt
LT5zdGFydCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXgg
OTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRiOGQ5MTJkNTFmM2ZmYi4uMjM0NzgxYjBiZTg2YTRi
ZGE1MGMwY2U1NjQ4NDIyMzg4YjQyYmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0K
QEAgLTIwNyw4ICsyMDcsOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGll
bnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1
cm4gbmlsOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZVZpZXct
PmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9kZSwgUG9zaXRp
b246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0aW9uOjpE
b05vdFNldEZvY3VzKTsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1
bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciks
IFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKKyAgICBm
cmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFp
bnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2
aW9yOjpTZWxlY3Rpb25Pbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZWM4
ZTU4Y2YyMDdiYmNiMDQ4MjJlZDJiMTVkZWFkMDY3NjJhNTY3ZC4uODQ2MGIwM2Y1MGM3YzJiMTNh
MTdlZmU0YzgzOGZiN2I5MjE5MGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTE0NjUsNyArMTQ2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGlmIChpc01haW5GcmFtZSAmJiBjb3JlRnJhbWUt
PnZpZXcoKSkKICAgICAgICAgY29yZUZyYW1lLT52aWV3KCktPnNldFBhcmVudFZpc2libGUoZmFs
c2UpOwogICAgIGNvcmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsKLSAgICBSZWZQdHI8RnJhbWVW
aWV3PiBjb3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOworICAgIGF1dG8g
Y29yZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZSgqY29yZUZyYW1lKTsKICAgICBjb3JlRnJhbWUt
PnNldFZpZXcoY29yZVZpZXcuY29weVJlZigpKTsKIAogICAgIFttX3dlYkZyYW1lLmdldCgpIF91
cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDdiOWJiODk5MDhhZTVjMWE2NTJl
MzZjYzg4OWJlMDRlNTY1NGM5NDYuLmE5M2RlZjYxMzk5YTVjYzU0ZWY2MWNhZTljMDM3OTkwNTg5
MGNkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtMTc0Niw4ICsxNzQ2LDggQEAgLSAodm9pZClnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6KE5T
QXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAqKikKICAgICAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVu
dCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKLSAgICAgICAgICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5nZXQoKSk7Cisg
ICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQsIG5vZGUsIG1h
cmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7CisgICAgICAg
ICAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEgIT0gcHJldmlvdXNNZXRhZGF0YSkgewogICAgICAg
ICAgICAgICAgIFttZXRhZGF0YXMgYWRkT2JqZWN0Om1ldGFkYXRhXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDljM2MyYmI5OWNjMGM2
Y2QzMDUzNzk4ZGRiNjY0NGM5ZTdkYjgxNDIuLjRhODZjNzk0NTVmYjM2ZDBjNWJlYmZiMzkwY2U4
NDYzZmViMjQyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgLSAodm9pZClfd3JpdGVTZWxlY3Rpb25X
aXRoUGFzdGVib2FyZFR5cGVzOihOU0FycmF5ICopdHlwZXMgdG9QYXN0ZWJvYXJkOihOU1Bhc3QK
IHsKICAgICAvLyBQdXQgSFRNTCBvbiB0aGUgcGFzdGVib2FyZC4KICAgICBpZiAoW3R5cGVzIGNv
bnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewotICAgICAgICBpZiAoUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9mcmFtZV0pKSkgeworICAgICAgICBpZiAoYXV0byBj
b3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oY29yZShb
c2VsZiBfZnJhbWVdKSkpIHsKICAgICAgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhID0gY29yZUFyY2hpdmUgPyBjb3JlQXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkg
OiAwKQogICAgICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkgZm9yVHlwZTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1ZWI5NTc1
MjgyYzFiNjUzZGNiYzlhYTZhNDdlZDcwYzA1ZTdkNWVmLi40ZjkwZjYzOTM5NzQxMjY5NzY4ZDYz
MDM2Y2IwZDNiMGQzMGM5MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC00NzI5LDggKzQ3MjksNiBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9H
cm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0
T3JDcmVhdGUoZ3JvdXBOYW1lLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3JvdXApCi0gICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3NTQs
OCArNDc1Miw2IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcg
Kilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUs
IFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA1YzA3NzEyMTFlYWVkNjQ5MDcz
ZTEwM2U5MDRhNWVjOTA0OWI0NjNmLi5iYzc5ZDg5YmQ0NDZjNTZlYTFiYTlkNTdjNzVhZTM5OWFh
OGYwNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJl
ZnJlc2goKQogICAgICAgICAgICAgcmVtb3ZlKG9sZFBhY2thZ2UuZ2V0KCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdl
OjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKKyAgICAgICAgYXV0byBwYWNrYWdl
ID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CiAgICAg
ICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNrYWdlLnJlbGVhc2VOb25OdWxsKCkpKQogICAgICAg
ICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZjg1NWRkMjYzZjc5Y2RmZDQx
YjY0NjU5NTAyMmE4YzQ0Y2NhMmY0NS4uZWYwYTJlMjBiNDEzNzY2MGYyN2JlNWJhNGZhY2NiZmIw
ZjYyNGFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0
KERvY3VtZW50JikKIHsKICAgICBBU1NFUlQoIW1faXNTdGFydGVkKTsKICAgICBpZiAoIXN0YXJ0
KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJh
bWUoKS0+bG9hZGVyKCkuY2xpZW50KCkpLmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4odGhp
cyk7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4ocGFyZW50RnJh
bWUoKS0+bG9hZGVyKCkuY2xpZW50KCkpLmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oKnRo
aXMpOwogfQogCiBQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldygpCkBAIC00MTAsOCArNDEwLDggQEAg
dm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQog
ICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0
cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwKICAgICAgICAgLy8ganVzdCBwYXNzIGl0IG9mZiB0byB0
aGUgbG9hZGVyCiAgICAgICAgIGlmICh0YXJnZXRGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0
ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCku
cmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+
bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVn
aW4tPnF1aXJrcygpKTsKLSAgICAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtKTsKKyAgICAg
ICAgICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRG
cmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1
Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3RhbmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7Cisg
ICAgICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICAgICAg
c3RyZWFtLT5zdGFydCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhl
IHRhcmdldCBmcmFtZSBpcyBvdXIgZnJhbWUsIHdlIGNvdWxkIGRlc3Ryb3kgdGhlCkBAIC00NTQs
OCArNDU0LDggQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0
KiByZXF1ZXN0KQogICAgICAgICAgICAgICAgIGNzdHIgPSByZXN1bHRTdHJpbmcudXRmOCgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFBsdWdpblN0cmVhbT4gc3RyZWFtID0gUGx1Z2lu
U3RyZWFtOjpjcmVhdGUodGhpcywgbV9wYXJlbnRGcmFtZS5nZXQoKSwgcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9u
KCksIHJlcXVlc3QtPm5vdGlmeURhdGEoKSwgcGx1Z2luKCktPnBsdWdpbkZ1bmNzKCksIGluc3Rh
bmNlKCksIG1fcGx1Z2luLT5xdWlya3MoKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFt
KTsKKyAgICAgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3Bh
cmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgp
LCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygp
KTsKKyAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0uY29weVJlZigpKTsKICAgICAgICAgc3Ry
ZWFtLT5zZW5kSmF2YVNjcmlwdFN0cmVhbShyZXF1ZXN0VVJMLCBjc3RyKTsKICAgICB9CiB9CkBA
IC02OTAsMTEgKzY5MCwxMSBAQCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IFBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSgpCiAgICAgfQogCiAgICAgYXV0byByb290ID0gbV9wYXJl
bnRGcmFtZS0+c2NyaXB0KCkuY3JlYXRlUm9vdE9iamVjdCh0aGlzKTsKLSAgICBSZWZQdHI8SlND
OjpCaW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNl
OjpjcmVhdGUob2JqZWN0LCBXVEZNb3ZlKHJvb3QpKTsKKyAgICBhdXRvIGluc3RhbmNlID0gSlND
OjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCBXVEZNb3ZlKHJvb3QpKTsKIAog
ICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogCi0gICAgcmV0dXJuIGluc3RhbmNlOwor
ICAgIHJldHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgK
aW5kZXggN2NmYzdhOWE4MmU3MmM5MTJmNWRiOTk5Y2ZiMzdiZjljZjFhOWY0ZS4uYjViNjBhODA5
OTFkNjA3MTBiODcwNjMwMjQwMjFkNjUwOTA2MzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTMxNyw3ICszMTcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgVmVjdG9yPGJvb2wsIDQ+IG1fcG9wdXBTdGF0ZVN0YWNrOwog
Ci0gICAgICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPiBtX3N0cmVhbXM7CisgICAg
ICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4+IG1fc3RyZWFtczsKICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKIAogICAgICAg
ICBib29sIG1faXNXaW5kb3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAx
OTNlMDJiMDUwMThlZjU4ZmU0MTZmY2JmYjY3NWVkZTNmYzU4OTZjLi41MGFjZjc3OWRkNmI1NDQ4
NDg0OGVjYzI1YzE4NjQ4Yjk5NmFiN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNs
aWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmV0dXJu
IFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlOjpOb25lOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcq
IHBsdWdpblZpZXcpIGNvbnN0Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcmIHBsdWdpblZpZXcpIGNvbnN0CiB7
CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAtMTA3
MiwyMyArMTA3MiwyMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZh
aWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgIFJldGFpblB0cjxD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1f
d2ViRnJhbWUpOwotICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgp
KTsKKyAgICBBU1NFUlQoZnJhbWUgPT0gcGx1Z2luVmlldy5wYXJlbnRGcmFtZSgpKTsKIAotICAg
IGlmICghcGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewotICAgICAgICBVUkwg
cGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOworICAg
IGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIFVSTCBw
bHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkpKTsKICAgICAg
ICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5Q
YWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKCFwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CisgICAgaWYg
KCFwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc3RhdGljIENGU3Ry
aW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihX
ZWJLaXRFcnJvck1JTUVUeXBlS2V5KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNl
ckluZm8uZ2V0KCksIGtleSwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtl
eSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0K
IAotICAgIGlmIChwbHVnaW5WaWV3LT5wbHVnaW4oKSkgewotICAgICAgICBTdHJpbmcgcGx1Z2lu
TmFtZSA9IHBsdWdpblZpZXctPnBsdWdpbigpLT5uYW1lKCk7CisgICAgaWYgKHBsdWdpblZpZXcu
cGx1Z2luKCkpIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpbk5hbWUgPSBwbHVnaW5WaWV3LnBsdWdp
bigpLT5uYW1lKCk7CiAgICAgICAgIGlmICghcGx1Z2luTmFtZS5pc051bGwoKSkgewogICAgICAg
ICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJbk5hbWVLZXkpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmll
dyogcGx1Z2luCiAgCiAgICAgaW50IGVycm9yQ29kZSA9IDA7CiAgICAgU3RyaW5nIGRlc2NyaXB0
aW9uOwotICAgIHN3aXRjaCAocGx1Z2luVmlldy0+c3RhdHVzKCkpIHsKKyAgICBzd2l0Y2ggKHBs
dWdpblZpZXcuc3RhdHVzKCkpIHsKICAgICAgICAgY2FzZSBQbHVnaW5TdGF0dXNDYW5Ob3RGaW5k
UGx1Z2luOgogICAgICAgICAgICAgZXJyb3JDb2RlID0gV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1
Z0luOwogICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBXRUJfVUlfU1RSSU5HKCJUaGUgcGx1Zy1p
biBjYW5ceEUyXHg4MFx4OTl0IGJlIGZvdW5kIiwgIldlYktpdEVycm9yQ2Fubm90RmluZFBsdWdp
biBkZXNjcmlwdGlvbiIpOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBw
bHVnaW4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJv
ckNvZGUsIHBsdWdpblZpZXctPnVybCgpLCBTdHJpbmcoKSk7CisgICAgUmVzb3VyY2VFcnJvciBy
ZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29kZSwgcGx1Z2lu
Vmlldy51cmwoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0
Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVzb3VyY2VFcnJvciwgdXNlckluZm9CYWcu
Z2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdp
dGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBw
bHVnaW5TaXplLCBIVE0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBs
dWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNpemUsICZlbGVtZW50
LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsK
KyAgICBhdXRvIHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoZnJhbWUsIHBsdWdpblNp
emUsICZlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1lVHlwZSwgbG9h
ZE1hbnVhbGx5KTsKIAogICAgIGlmIChwbHVnaW5WaWV3LT5zdGF0dXMoKSA9PSBQbHVnaW5TdGF0
dXNMb2FkZWRTdWNjZXNzZnVsbHkpCiAgICAgICAgIHJldHVybiBwbHVnaW5WaWV3OwpAQCAtMTE4
MCw3ICsxMTgwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2lkZ2V0JiBwbHVnaW5XaWRnZXQpCiBSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LCBIVE1MQXBwbGV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiAvKmJhc2VVUkwqLywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcykKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBSZWZQdHI8
UGx1Z2luVmlldz4gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJh
bWUpLCBwbHVnaW5TaXplLCAmZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
LCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKKyAgICBhdXRvIHBsdWdpblZp
ZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgJmVs
ZW1lbnQsIFVSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2
YS1hcHBsZXQiLCBmYWxzZSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBs
b2FkZWQgc3VjY2Vzc2Z1bGx5CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdp
blZpZXctPnBsdWdpbigpLT5sb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBm
OGQ3NDg4NWYwNmM1NGE0MzM4NzY5MzMzOGMwZTA2MzI0ZDk4YWNiLi4yZmJhYjc5YzcwZDAyMTRl
ODRmMDdlOGRiZThhZDQ3MThjMWM3OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIHNldFdlYkZy
YW1lKFdlYkZyYW1lKiB3ZWJGcmFtZSkgeyBtX3dlYkZyYW1lID0gd2ViRnJhbWU7IH0KICAgICBX
ZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3dlYkZyYW1lOyB9CiAKLSAgICB2
b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmll
dyopIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBX
ZWJDb3JlOjpQbHVnaW5WaWV3JikgY29uc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXgg
YzAzMjQyYzdkNmI2MmQ4ZmM2MzVkOWEwZDdiZDZlNWQ3YzI1OWZlZC4uNDVlNGE1N2I1YThiYWMy
ZGE3YjQ0ZTRkZmJmODIxY2FlZjBhYjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9J
bl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12
b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
QlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3Ry
aW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBl
KQpAQCAtNjEwLDcgKzYxMCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAKIEhSRVNVTFQg
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBC
U1RSIHVybCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXpl
b2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOworICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5U
ZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKICAgICBCU3Ry
aW5nIHBsYWluVGV4dE1pbWVUeXBlKFRFWFQoInRleHQvcGxhaW4iKSwgMTApOwogICAgIEJTdHJp
bmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERhdGEoV1RGTW92
ZShzaGFyZWRCdWZmZXIpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGluZywgdXJsLCBu
dWxscHRyKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxhaW5U
ZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiAKIHZvaWQgV2Vi
RnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBfSW5fIEJTVFIgYmFz
ZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKGh0bWxTdHJp
bmcpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3RyaW5n
TGVuKGh0bWxTdHJpbmcpKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRmLTE2
IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgMCwgdXRmMTZFbmNv
ZGluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmgKaW5kZXggMWJhZGQwMWMzYTc2NDBjY2YxMTMwNGE0MzVhN2IxZTI0NTExNWZkZS4uNTAy
Y2E4OWRmNmI5MGQwYTI3N2Q3OWIxYmI1OTg3MWI1ZDExNDI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5oCkBAIC0xOTksNyArMTk5LDcgQEAgY2xhc3MgREVDTFNQRUNfVVVJRCgie0Ez
Njc2Mzk4LTQ0ODUtNGE5ZC04N0RDLUNCNUE0MEU2MzUxRH0iKSBXZWJGcmFtZSBmaW5hbCA6IHAK
IAogcHJvdGVjdGVkOgogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywg
X0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBs
b2FkRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAg
ICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5
cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwp
OwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhI
REMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9y
aWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0
Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0Kiwg
ZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAppbmRleCA5NDA3NzkxMmE5OTE2NDExN2Qw
YzY4MWNjY2MwNjY4NmUwNGM0ZGUwLi5mOWFiODNiNTFjYTMyM2ViZTcxZjU1MDI2NzkyZGJmNjM1
MzQzMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCkBAIC0xODcsOSArMTg3LDkgQEAgQ0FW
aWV3Ojp+Q0FWaWV3KCkKICAgICBtZXNzYWdlV2luZG93ID0gbnVsbHB0cjsKIH0KIAotUmVmUHRy
PENBVmlldz4gQ0FWaWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQor
UmVmPENBVmlldz4gQ0FWaWV3OjpjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9u
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0FWaWV3KGRlc3RpbmF0aW9uKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0FWaWV3KGRlc3RpbmF0aW9uKSk7CiB9CiAKIHZvaWQgQ0FW
aWV3OjpzZXRDb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2soQ29udGV4dERpZENoYW5nZUNhbGxiYWNr
RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAppbmRleCA0
NWI2NGVjMDE1MmU1MWQ0MjRmNDJlMzM5YzVlMDZmYjU0NDgwNDZjLi43Mjk2M2JlM2RiYmM0MzI4
ZjU1NzlhNmRhNTcwYzYyYzVmNDg5MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgY2xhc3MgQ0FWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8Q0FWaWV3PiwgcHJpdmF0
ZSBDVkRpc3BsYXlMaW5rQ2xpZW50IHsKIAogICAgIGNsYXNzIEhhbmRsZTsKIAotICAgIHN0YXRp
YyBSZWZQdHI8Q0FWaWV3PiBjcmVhdGUoRHJhd2luZ0Rlc3RpbmF0aW9uKTsKKyAgICBzdGF0aWMg
UmVmPENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CiAgICAgfkNBVmlldygpOwog
CiAgICAgdHlwZWRlZiB2b2lkICgqQ29udGV4dERpZENoYW5nZUNhbGxiYWNrRnVuY3Rpb24pKENB
VmlldyosIHZvaWQqIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAK
aW5kZXggYjE1NDgyNGNlNDQ4M2M3ZGQ5ZTYzMWJhZDFiMTM5ODQ1N2Y0OWZjNS4uYWFiZDE5OGIx
MTE1ZWQ3ZTY1YWQ4MzA4NTQxNjE5Y2Q0MTU4NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NW
RGlzcGxheUxpbmsuY3BwCkBAIC00NCw5ICs0NCw5IEBAIENWRGlzcGxheUxpbms6On5DVkRpc3Bs
YXlMaW5rKCkKICAgICA6OkNsb3NlSGFuZGxlKG1fd2FrZXVwRXZlbnQpOwogfQogCi1SZWZQdHI8
Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQq
IGNsaWVudCkKK1JlZjxDVkRpc3BsYXlMaW5rPiBDVkRpc3BsYXlMaW5rOjpjcmVhdGUoQ1ZEaXNw
bGF5TGlua0NsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1ZEaXNw
bGF5TGluayhjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDVkRpc3BsYXlMaW5r
KGNsaWVudCkpOwogfQogCiB2b2lkIENWRGlzcGxheUxpbms6OnN0YXJ0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DVkRpc3BsYXlMaW5rLmgKaW5kZXggMGFlMDJmMTY5ZWM4Mjg5MTI2NjFlZmE3MzhjODRm
YjdjNDQ0MjI4My4uY2EwMjZhZmVhYzQxNWQ3MTg3NDc4ZTg3Mzc1YTI3MTA5OWY0MGNjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DVkRpc3BsYXlMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
Q1ZEaXNwbGF5TGlua0NsaWVudDsKIC8vIEZJWE1FIDg3NjkxODE6IFJlcGxhY2UgdGhpcyB3aXRo
IENWRGlzcGxheUxpbmtSZWYKIGNsYXNzIENWRGlzcGxheUxpbmsgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q1ZEaXNwbGF5TGluaz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
Q1ZEaXNwbGF5TGluaz4gY3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqKTsKKyAgICBzdGF0aWMg
UmVmPENWRGlzcGxheUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CiAgICAgfkNW
RGlzcGxheUxpbmsoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
SW1hZ2VDb252ZXJzaW9uLmNwcAppbmRleCBkYzY2NzBkNDMzZmYwOWUwZDExNjY1ZGMwNTUzYjIx
NmRmYjI2MDBjLi5jZjkyMTg1YTEwZGI5NDZkMDZiYjRiZDQ4MGM2OWZkZWMzNDYwNDQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0ltYWdlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IHN0YXRpYyBIUkVTVUxUIGdldEltYWdlQ29weShJRGlyZWN0M0RTdXJmYWNlOSogc3lzdGVtTWVt
b3J5U3VyZmFjZSwgUmVmUHRyPEltYWdlCiAKICAgICBDU2l6ZSBzdXJmYWNlU2l6ZShkZXNjLldp
ZHRoLCBkZXNjLkhlaWdodCk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2U6OmNy
ZWF0ZShzdXJmYWNlU2l6ZSk7CisgICAgYXV0byBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFj
ZVNpemUpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZThiZGRlYmYyNjI2ZjVjY2FkOGQ0YWNlZDU3
MzNlNzI3MjJhZWViNy4uZmJjMDRkZTY1OTc4OThiMDVkMjJhNGU1NzNhMjRlZDU2MTk3OTgzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTY5MTIsOCArNjkxMiw2IEBAIEhS
RVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwg
X0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRv
IHZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsK
LSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICgh
aVdvcmxkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNjk0MSw4ICs2OTM5LDYgQEAg
SFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAoX0luXyBCU1RSIGdyb3Vw
TmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGF1
dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cCwgU3RyaW5nKCkp
OwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgaWYg
KCFpV29ybGQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357796</attachid>
            <date>2018-12-20 00:02:54 -0800</date>
            <delta_ts>2018-12-20 01:19:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181220170252.patch</filename>
            <type>text/plain</type>
            <size>406778</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDE3NTMzYzgwNDE5NTljYTM1YTIzNzlhMzE4ODhjMGEwYTQ1MjVjLi5lNmJiOWUyZjg5MzI5YjYx
OTc1NDcyYmY4ZDVkYjNmOWE1ZWNlMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9w
ZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyYWI5MTFmZGY3Y2IzNDQ2ZTU2YWZhOGY0OWZkYmNjZDUzODU5MzU2Li5iZmExYzgw
OGZiNzgwMjg3ZGRlZjc3NDExNzQ4YTJjN2VjYzdlMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
Mzk2IEBACisyMDE4LTEyLTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1F
OjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFt
ZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFE
ZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdp
blJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVu
ZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVU
ZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3Rp
ZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0
SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFu
Z2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNo
b3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNzcy9Gb250
RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgor
ICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRz
KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgor
ICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToKKyAg
ICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVhdGUpOgor
ICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1do
aXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRP
ZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5v
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQ
cmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJn
ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxl
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0Fw
cGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGluZUFuZElt
cGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpt
ZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBw
bHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRleHRXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1h
a2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1h
bmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSk6Cisg
ICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0
eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2Vy
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1Rv
T3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25D
b21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRv
QXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNs
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVu
dCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGh0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
bVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5l
d1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJj
ZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogcGFn
ZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdpdGhTaW1w
bGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9u
c0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJu
ZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jl
c2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZnVs
ZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1l
dGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRh
dGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBl
Z1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFj
a0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNyeXB0aW9u
Qm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJBbmltYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRp
b25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3RvcmFnZU9i
c2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRl
bVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpTZWFy
Y2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpw
b3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpw
YWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5l
cik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdlKToKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmFy
ZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAgICAg
ICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9t
U291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQp
OgorCiAyMDE4LTEyLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGJ1aWxkIGFmdGVyIHIyMzk0MTAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggM2YyN2E5NjVjYzZjM2UyZDI3MjliZGY1MDZlNjI5ZTUyNjdhODgyNS4uNzc1ZTY4
Y2NlY2E1NDBjZDZmYzNlMjg3ZWQxMzIyNjlhODY3YzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MzYgQEAKKzIwMTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NuYXBzaG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90
aWZ5UG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2Nl
cnRpZmljYXRlX2Zvcl9ob3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJh
c2U2NEVuY29kZWRQTkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlU3ViZnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3Rp
Y3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVG
cm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9X
ZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFu
Z2UgaW5pdFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFw
c2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2Fy
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojpz
bmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9s
bGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0
YXRlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSk6CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1h
c3NpZ25tZW50IG9wZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVk
IGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYx
OGNhNGI4NzZiMzljOS4uNTkyNzY0YWViZDdiMzIxZmJjZjFmNDE0ODViNTg4MTYyNTI4YjMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0yMCAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8
PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3Jv
dXAuaDoKKwogMjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255
LmNvbT4KIAogICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJu
aW5nOiAnSVdlYkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJs
b2FkZWQgdmlydHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0
NGFjMi4uZDcxNDdjZmM0M2M1YjE2OGZlMThkNzg4NmVhZWMwOTc4MGI0MzgxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTIwICBZdXN1a2Ug
U3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+
IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAg
ICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAg
KFNlYXJjaFBvcHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
YmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdS
YW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZp
c2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dl
YlBERlZpZXdQbGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgt
MTItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlYjFkMTEwMDg4
NTg0M2QwMmY0NDYxYjgyMTc1YzUxMjYwZGE1YTk4Li5kODZhODI5NTIxMzMxNjkxM2U2MDUwYzNm
ZDEwYTIzZmM3MWFkODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAg
ICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2lu
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHRQbHVnaW5SZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9h
ZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAg
KFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckl0ZW0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIGdldERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRl
ZFN0cmluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJs
YWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3Ry
dWN0b3IgYW5kIG1vdmUtYXNzaWdubWVudCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2
YWx1ZSBiZWluZyBtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjZj
MTI2YjcyMTM3MzM5NzI3YjI2ZjMzOWYwOThiMjczZmJlZmNkNy4uYTk1NDlhMmUyZWUwNmVkYjE0
ODg1YTkwYmQ5MjAxOTA3OWZhMjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDE4LTEyLTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNs
b3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVm
cmVzaCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Ymlu
ZGluZ0luc3RhbmNlKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6
bG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcp
OgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6
Q1ZEaXNwbGF5TGluazo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NWRGlzcGxheUxpbmsuaDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0ltYWdlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIw
MTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYv
T3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9y
IHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5
MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li45OTNiZjJjZmEyZWEwYTYzY2NmOTcwMTg4NGI3OTMxYTgz
NzUyOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJh
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBA
IC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhC
eXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBl
KSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQq
IHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAs
IGRlc3RydWN0b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZi
MzFiNzE1ZjZhMGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUx
MjhlNDhmNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3
V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29t
bW9uLndhdGNocG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5z
ZXQoKS0+YWRkKHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFk
ZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNo
cG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9p
bnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IDE2Yzk5MjMwNzAxYWExZmVjNzAwZWZlMTNiMTczZWU5ZmYzYWFjMWEuLjhiMGQxYTI3
N2E0NDZhZjc3NWUwYzdmM2JiMWYxZGQyY2IxMDFjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRo
aXMpKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRy
eUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5j
cmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRv
cHRSZWYobmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRv
cHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNl
c3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAg
LCBtX2RlZmVycmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXll
ZFJlbGVhc2VSZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0
eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dl
ZXBlciYgSGVhcDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0
dXJuIG1fc3dlZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlv
blRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBkYjIzMDA0OTY1ZjhhMmFjZWY4N2NjOTNlZTU2ZGM5OTA3MWMxNTc2Li5hZjBmMDA0YzFlNjk4
YWI1Yjc5MDM2NWRjODJlNzhmZTdkMDkwZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC02MjksOCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdD
QWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRp
bWVyPiBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+
IG1fc3dlZXBlcjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNz
YXJ5VGltZXI7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5
ODA2N2U4YzA0YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAg
ICAgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxs
ZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3Vy
Y2UoKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6
SGFuZGxlKigpPiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsbwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUYXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxv
Y2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdj
MzI5NzQyN2Q4NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3
MmI2YzZjMGI3ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxJc29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCog
Y2VsbCkgY29uc3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAK
ICAgICAvLyBUaGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRl
dmVyIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Js
b2Nrc1dpdGhCaXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJr
ZWRDZWxsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAg
UmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNp
dG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxp
bmVzLmgKaW5kZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3
ZGU4ZTE5MGVhOGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0
b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xh
c3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1
YmxpYzoKQEAgLTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZp
c2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsK
KyAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tT
b3VyY2U7CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9
OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRl
eCBkMzc3ZjlhZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3
NDY3NjBhYThhNDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNw
YWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNw
YWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEw
ICsxMTIsMTAgQEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFj
ZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9
OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFy
YWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJs
b2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKCkKIHsKICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGly
ZWN0b3J5KiwgTWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9y
eVNvdXJjZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0
YzYzZWM3Mjg1ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5
MjM0ODA0NzczZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9y
eVNvdXJjZSgpOworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxs
ZWxEaXJlY3RvcnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgog
ICAgIHZvaWQgZm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcg
QEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9p
ZCBmb3JFYWNoTm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVt
cHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgogICAgIHZvaWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3
ICs4Nyw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNv
bnN0IEZ1bmMmKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJh
bGxlbChjb25zdCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYp
Pj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBl
ODNiMzgyZGY4MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2
MTRlMGIxYTZjZjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JF
YWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZv
ckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJh
bGxlbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVk
VGFzazx2b2lkKFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwx
MyBAQCBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9y
RWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAg
ICAgICBTdWJzcGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFy
a2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5j
IG1fZnVuYzsKICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNp
dExhcmdlQWxsb2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKCp0aGlzLCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDU4OTY2MTY0MDIwZjg4YjZlOTc4Mjg5YjI0OGJhYjU5OTZkNGNmNzAu
LmFkZDVhNGUyYWI1MWJjY2JhNGM3NDk1MmE0YWQ2OTY2ZjRjM2VhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAg
ICAgICBtZXNzYWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIGF1dG8gbmF0aXZlQnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01v
ZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShz
aGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYy
ZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uNmM1NmQ1OWYxNzFjNTk4ZDQ2MjRhYmZmNTliMTZi
NzRhMGVmMTRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1w
SW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAw
LCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAg
IHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikg
Y29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikg
Y29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAog
ewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIGF1dG8gcmVz
dWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgp
KSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2Rl
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJjNWU5NDlkMjgz
ZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEyOCw4ICsxMjgs
OCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJh
eUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBj
b25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBl
bmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBp
bmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFycmF5QnVmZmVy
IDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
SW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBSZWY8QXJyYXlC
dWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAg
ICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwogICAgIHN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwg
dW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAppbmRleCBk
MWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRhODdiMDVjMzk4
Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6
OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBCYXNlKHZtLCB2
bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAgICAsIG1fc2V0
KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0KIApAQCAtNjIs
NyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVy
IHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVy
IHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJiZDZlYmJlMDFh
Ny4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBXYXRjaHBvaW50
U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9pbnRTZXQmIHNl
dCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJlQWxsKCk7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZN
Jik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAgIFJlZjxXYXRj
aHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdlLi4xZDMyY2Yz
MmIyNzdhMTU4ZDllMWNlNTVkNWYxY2M0YWE4ZDkyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAt
NTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1
ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAg
ZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2lu
LCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIGF1dG8gbmV3QnVm
ZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApp
bmRleCBiNzUxZWVhOWY1NTI0Mjc0MGRkMjdmZjBiOTgzYTBiMmQwZDI2NDY5Li5kZjFmNGRmOTA0
NmE0NTgyYmNjMDQ5NTMzOWVlY2ViZGEyY2E5YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2
aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAgICAgIH0KIAogICAgICAgICAvLyA2
LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVt
LgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3Vt
ZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVh
dGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNDg5OGNjYzYzYWMyZjQyZWE3MGUwN2E4
M2U0NWJiZDViZjQ2NDJmYi4uODMxYWZkMTg5Y2VmYjZkY2JhZGYzMDVkN2FmNmExYTYwYzg1NjZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjQx
LDcgKzI0MSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgaWYgKGlzVVJMU2VhcmNo
UGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygp
LmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZv
cm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51
cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCBS
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29ucwogICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgp
LmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzRm9ybURhdGEoKSkgewogICAgICAgICBBU1NFUlQo
IWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRh
PiBib2R5ID0gY29uc3RfY2FzdDxGb3JtRGF0YSo+KCZmb3JtRGF0YUJvZHkoKSk7CisgICAgICAg
IGF1dG8gYm9keSA9IG1ha2VSZWYoY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgp
KSk7CiAgICAgICAgIGJvZHktPmdlbmVyYXRlRmlsZXMoJmRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMmIzMzNlNTE2YmVh
ZDdmZjY0OWY0ZTgxZjE0NmJlZTk4NjI5NTQ1OC4uNTUzNjg5NDU3MDkwY2JkNzVkMzkwODFjNjYz
NDYzNTQ2ZGNmNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTMwNCwxMCArMzA0LDEwIEBAIHZvaWQgR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2Fs
bGJhY2ssIFJlCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90
aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFj
ayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0
UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKLSAgICBtX29uZVNob3RzLmFkZChub3RpZmllcik7
CisgICAgbV9vbmVTaG90cy5hZGQoV1RGTW92ZShub3RpZmllcikpOwogfQogCiBpbnQgR2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxi
YWNrLCBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIFBvc2l0
aW9uT3B0aW9ucyYmIG9wdGlvbnMpCkBAIC0zMTUsMTQgKzMxNSwxNCBAQCBpbnQgR2VvbG9jYXRp
b246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNr
LCBSZWZQdHI8UAogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywg
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8g
bm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOworICAgIHN0
YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKICAgICBpbnQgd2F0Y2hJRDsKICAgICAvLyBL
ZWVwIGFza2luZyBmb3IgdGhlIG5leHQgaWQgdW50aWwgd2UncmUgZ2l2ZW4gb25lIHRoYXQgd2Ug
ZG9uJ3QgYWxyZWFkeSBoYXZlLgogICAgIGRvIHsKICAgICAgICAgd2F0Y2hJRCA9IG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+Y2lyY3VsYXJTZXF1ZW50aWFsSUQoKTsKLSAgICB9IHdoaWxlICgh
bV93YXRjaGVycy5hZGQod2F0Y2hJRCwgV1RGTW92ZShub3RpZmllcikpKTsKKyAgICB9IHdoaWxl
ICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgbm90aWZpZXIuY29weVJlZigpKSk7CiAgICAgcmV0
dXJuIHdhdGNoSUQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcAppbmRleCAyNThkODlhNWFkYWJjYTU4OGExOWE0OGQ5NzhmNmVlMjIx
ZjhkZTdlLi4xODQ3NDM5MTkwYThiNzliZWY3MDY0MzJmZDJmOWQ3NTU2OTA3MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC05
NywxMSArOTcsMTEgQEAgdWludDY0X3QgSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogICAg
IHJldHVybiBtX2luZm8udmVyc2lvbigpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
RGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xpc3Q+IElE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgbmFtZSA6IG1faW5mby5vYmplY3RTdG9yZU5hbWVzKCkpCiAgICAgICAgIG9iamVjdFN0
b3JlTmFtZXMtPmFwcGVuZChuYW1lKTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5zb3J0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBh
MzgzMTY2ZDhiZjdlYmNkNGUwOTM5NTk0MDIyZGY0OTdmMTVlZTM4Li5mYzNlMTJiZjUzZmUwN2Y2
Y2RjMTk4YjllZTYxNTdjOTQ4MjY5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSURCRGF0YWJh
c2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZl
bnRUYXJnZXQKICAgICAvLyBJREJEYXRhYmFzZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgp
IGNvbnN0OwogICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdDsKLSAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgT2JqZWN0U3RvcmVQYXJh
bWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA0YmJkZTJiYmViNTkxMWZiMzExMWNiMzUxN2ZjZjc2YTIzM2EyOTIzLi42NmNlYzBjZTY2NTMx
MTg3NjUyNzBlMGFkMzE2MTFjNzc5NjYzOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBA
QCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBj
b25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1f
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVh
dGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6
IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA2ZmRkM2YzZjAwOGZjYzEwMmY3Mzc3MjBlNTE3
MjE0Y2ZmZDE5MGYyLi5jZmM3ZGY3MjBjY2E2OTc0OGZkYzY1NTEyYjlmMjYyNTJmNmQ2ZjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1l
cygpIGNvbnN0OwogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbigpOwogICAgIGJvb2wg
YXV0b0luY3JlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmRmZmU2OGUxMmNkMjRkZTQ2Njdl
ODI3MWZjOTc5ZjdhYmFjMmUxZi4uYjgyYjY2YTFkMjNmN2FmNTQzODNiMjkzM2MyNTNlYzQzMzYx
MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcApAQCAtMzcyLDEzICszNzIsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIG1fb3BlblJlcXVlc3RzLnJl
bW92ZSgmcmVxdWVzdCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0
aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikK
K3ZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKICAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBvcGVyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAg
ICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwor
ICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbi5j
b3B5UmVmKCkpOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlkZW50aWZpZXIs
IFdURk1vdmUob3BlcmF0aW9uKSk7CiAKICAgICBzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1l
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmgKaW5kZXggNWI4NDk4NjQ0ZmQ5M2Y4OGVmZjBjYjZmY2I3YzYyMmQxNjRiYmM2YS4uMWY3
Njc1M2JlZDViNTVhODcxMmQ3YTJkZjUyYmRkOGNmODBmOGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0xNjIsNyArMTYy
LDcgQEAgY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZlbnQKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21t
aXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMoY29uc3QgSURCRXJyb3Im
KTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYpOworICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOwogICAgIHZvaWQgcGVuZGluZ09wZXJhdGlv
blRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBlODU1MTI1MzFiNDY0ZDNkMzYxZTM0
YjNiODlhYWMxMzZkMGIxZmVjLi44ZGRiNTZlMTc4YjcyZWYyMWE2NjZlYjE2OWRmYzE2ZWU5ODky
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtMTgxLDQwICsxODEsMzcgQEAg
Y2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGljIFRyYW5zYWN0aW9u
T3BlcmF0aW9uIHsKICAgICB9CiB9OwogCi1pbmxpbmUgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0
aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK2lubGluZSBSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYpKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSk7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0
ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVy
Zm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1w
bDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJh
bnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+
IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0
RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29u
c3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rp
b25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0s
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24p
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEs
IE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDM+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0
ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVy
Zm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEsIE1QMiwgTVAzKSwKQEAgLTIyMiwyNCAr
MjE5LDIyIEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFt
ZXRlcjMpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25J
bXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1l
dGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJh
dGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
PE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVy
MSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEs
IHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURC
UmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBh
cmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBy
ZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyPgotUmVm
UHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1Jl
ZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAg
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElE
QlJlc3VsdERhdGEmKSwKQEAgLTI0NywxMiArMjQyLDExIEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgY29uc3QgUDEmIHBhcmFt
ZXRlcjEsCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwotICAgIHJl
dHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0
ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAg
ICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBs
ZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjYxLDggKzI1NSw3
IEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMp
CiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1Q
MSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9w
ZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25J
bXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9y
bSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmNwcAppbmRleCAxNGJiOTc3NTM2YmJmYmZmMmVhYzYzMDkwNjQwOTQ0
MGRiZmEzY2ZjLi4zYWE0M2E5OWFlMDk4MWM4ZmMwZGY1MTZjYmNlYTZmYjQxODc2MTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
Y3BwCkBAIC0xMTAsOCArMTEwLDcgQEAgdm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShj
b25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYWludHMsIFByb21pc2UmJgogICAgICAgICB2
aWRlb0NvbnN0cmFpbnRzLnNldERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKCk7CiAKICAgICBhdXRv
IHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRvY3VtZW50LCB7IE1lZGlhU3Ry
ZWFtUmVxdWVzdDo6VHlwZTo6VXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBX
VEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpIH0sIFdURk1vdmUocHJvbWlzZSkpOwotICAgIGlmIChy
ZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJlcXVlc3QtPnN0YXJ0KCk7
CiAKICAgICByZXR1cm47CiB9CkBAIC0xMjMsOCArMTIyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEoY29uc3QgU3RyZWFtQ29uc3RyYWludHMmIGNv
bnN0cmEKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAK
ICAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRvY3VtZW50LCB7
IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhLCB7IH0sIGNyZWF0ZU1lZGlh
Q29uc3RyYWludHMoY29uc3RyYWludHMudmlkZW8pIH0sIFdURk1vdmUocHJvbWlzZSkpOwotICAg
IGlmIChyZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJlcXVlc3QtPnN0
YXJ0KCk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZTEwYjk2YmM5
MWQ2ZmU1OGNjMGFiOWVjYTYxMjZhZjJiMzY4MTkzYy4uYTFjYjc0YmE2MTliYjcyNGU0YTZlMDU3
YjlkOWZkYjkzODA3MDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw5ICs0OSw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJl
cXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJl
cXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHBy
b21pc2UpCitSZWY8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlz
ZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGRvY3VtZW50LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocHJvbWlzZSkpKTsKICAgICByZXN1bHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IGRlNTFmZDlmYzQzZWIyOTdlNWQyYTI3ZTc2
NGFhNGQyN2MzMGE1ZjEuLjZkZTdlNWM4ZDdiYTQxM2UyMDM2OGU1NDAyNzgwNzUxN2I3NTFkOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVz
dD4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYs
IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBz
dGF0aWMgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFt
UmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4m
Jik7CiAgICAgdmlydHVhbCB+VXNlck1lZGlhUmVxdWVzdCgpOwogCiAgICAgdm9pZCBzdGFydCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5k
ZXggMGZmMGUyMDQzODBlN2ZkZGJjMDA4MGJjNTRjYWE4N2E5NzNlMDhlZi4uNzUwNjhlMTkwYTE5
YTQ0OTQwNjU5ZGJkZDM3NGRmMjc4NGQ5YmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBBdWRp
b1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1i
ZXJPZlZhbHVlcywgYm8KIAogICAgIC8vIE5vdyBzdW0gYWxsIG9mIHRoZSBhdWRpby1yYXRlIGNv
bm5lY3Rpb25zIHRvZ2V0aGVyICh1bml0eS1nYWluIHN1bW1pbmcganVuY3Rpb24pLgogICAgIC8v
IE5vdGUgdGhhdCBjb25uZWN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBtb25vLCBidXQgd2UgbWl4
IGRvd24gdG8gbW9ubyBpZiBuZWNlc3NhcnkuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBzdW1taW5n
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOworICAgIGF1
dG8gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNl
KTsKICAgICBzdW1taW5nQnVzLT5zZXRDaGFubmVsTWVtb3J5KDAsIHZhbHVlcywgbnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX3JlbmRlcmluZ091dHB1dHMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDg4YWUwNGFiYmUzOWU1MTczNGViYjAxN2UyMGYyNjFmYmIwNDFl
NTYuLmI5Y2MyMGNkMmU1YWZjNzYxMWIzNzAzMDZlMTA0MTI4NDdiMjA4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtODcsOCArODcsOCBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxp
emUoKQogICAgIC8vIENyZWF0ZSBkb3VibGUgYnVmZmVycyBvbiBib3RoIHRoZSBpbnB1dCBhbmQg
b3V0cHV0IHNpZGVzLgogICAgIC8vIFRoZXNlIEF1ZGlvQnVmZmVycyB3aWxsIGJlIGRpcmVjdGx5
IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVhZCBieSBKYXZhU2NyaXB0LgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBp
bnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0
ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7
Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gb3V0cHV0QnVmZmVyID0gbV9udW1iZXJPZk91
dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRvIGlucHV0QnVm
ZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKKyAgICAg
ICAgYXV0byBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1w
bGVSYXRlKSA6IDA7CiAKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKGlucHV0QnVmZmVy
KTsKICAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChvdXRwdXRCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCmlu
ZGV4IDA5MWEzMGEyNmY1MTliZGM2ODM5ZDBiYzY3ZjA1ODY2M2I2NzRhZDEuLjdlMTNkMDYwYjM1
MTZkMjVlMGIyM2M5ZGQ2NDA0ZjdhYjA2MzViYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBA
QCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBSZWZQdHI8U1FMUmVzdWx0U2V0PiByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsK
IAogICAgIC8vIFN0ZXAgc28gd2UgY2FuIGZldGNoIHRoZSBjb2x1bW4gbmFtZXMuCiAgICAgcmVz
dWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNRTFN0YXRl
bWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgLy8gRm9yIG5vdywgdGhpcyBzZWVtcyBz
dWZmaWNpZW50CiAgICAgcmVzdWx0U2V0LT5zZXRSb3dzQWZmZWN0ZWQoZGF0YWJhc2UubGFzdENo
YW5nZXMoKSk7CiAKLSAgICBtX3Jlc3VsdFNldCA9IHJlc3VsdFNldDsKKyAgICBtX3Jlc3VsdFNl
dCA9IFdURk1vdmUocmVzdWx0U2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKaW5kZXggM2QxNTRhYzVhMjFhZTYxYzY1N2Ez
MDBmYWQ5NjM2YmEwZDgzZDkwNy4uMGRjNDExYWUzMDNlNGIwODZlZGJmOWY4NjhmODVkYjRkMWFj
NjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkBAIC00MCwx
MCArNDAsNyBAQCBSZWY8V2ViR1BVPiBXZWJHUFU6OmNyZWF0ZSgpCiB2b2lkIFdlYkdQVTo6cmVx
dWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUFkYXB0ZXJQcm9taXNlJiYgZGVmZXJyZWQpIGNvbnN0CiB7CiAgICAgYXV0byBhZGFwdGVy
ID0gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGRlc2NyaXB0b3IpOwotICAgIGlmICghYWRhcHRlcikK
LSAgICAgICAgZGVmZXJyZWQucmVqZWN0KCk7Ci0KLSAgICBkZWZlcnJlZC5yZXNvbHZlKCphZGFw
dGVyKTsKKyAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIuZ2V0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuY3BwCmluZGV4IGVlZWM0ZGY2OGM2MmU0MTdkNGRiM2I3MTEyMjM0ZGYzY2UyZmU5
YTguLjc3ZjlmNDkxZTRmYzE2MTllMDBkYjkyNjc0OGVhYWJhYmJkNTExYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCkBAIC0zNCwxMCAr
MzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQWRhcHRlcj4g
V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShjb25zdCBX
ZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBGSVhNRTogVmFs
aWRhdGlvbiBvbiBkZXNjcmlwdG9yLgotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVQWRh
cHRlcihkZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQWRhcHRl
cihkZXNjcmlwdG9yKSk7CiB9CiAKIFdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoY29uc3Qg
V2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKaW5kZXggNGI4ZWZmNTIxM2I2YmYyYzk1MDJl
NjE2M2U2YTQ4ZDZkNDViM2ZlYy4uOGQwNGU1NGJmMmE2NDA4ZTllODgyNTRjODIwNGNlYzU1YzE2
ODA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIu
aApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3I7CiAKIGNs
YXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVBZGFwdGVyPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUFkYXB0ZXI+IGNy
ZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwogCiAgICAgUmVmUHRyPFdlYkdQ
VURldmljZT4gY3JlYXRlRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCdWZmZXIuY3BwCmluZGV4IDM0OTQxZDBlYTVmNzkyNTFjYjQ4ZGRlYmY3NDEz
NDNmOWU0YmE3MDkuLjkwOWE1Yzc2NDJmMjRhZjY0MjQ4ZDk5OWRjMzFjNGU0MjBmNDA4NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcApAQCAt
MzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVCdWZm
ZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQorUmVmPFdl
YkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkpOwogfQogCiBXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKaW5k
ZXggZTI3NjQyNWJkNDJiNWQ2ODJmYmUyNDI4YTQwMDZlMjNmNDkyMzg3NS4uNTFhZWJmMmUyYTc4
NWExOWRhM2IwZGI2ODY4YWRhY2Q3Y2JjYjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJl
ZjxHUFVCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVm
PEdQVUJ1ZmZlcj4mJik7CiAKICAgICBjb25zdCBHUFVCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggZGJiODAzYmUyNzMyMWI5
YmU2Y2RmNTlkOTExYWZiYzAzMzg0Mjk0Mi4uYjZlY2FhYTE1ZTQyYWRjOGUyZTUxYTQ1ZTI3YTRk
NDY4NGExMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZl
cjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVDb21t
YW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZm
ZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVQ29tbWFuZEJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVD
b21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBXZWJHUFVDb21tYW5kQnVmZmVy
OjpXZWJHUFVDb21tYW5kQnVmZmVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKQEAg
LTY1LDggKzY1LDkgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVDb21t
YW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGUKICAgICAgICAgZ3B1UmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgeyBjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVy
ZSgpLCBjb2xvckF0dGFjaG1lbnQuY2xlYXJDb2xvciB9KTsKICAgICB9CiAKLSAgICBhdXRvIGVu
Y29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29tbWFuZEJ1ZmZlci5nZXQo
KSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpOwotICAgIHJldHVybiBlbmNvZGVy
ID8gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rlci5yZWxlYXNl
Tm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRl
clBhc3NEZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggNzJkZjMxMmZm
ODgwYjc4ZjdlY2ExMTY5MzI1MjYzOTI0MzdiZDFlZi4uOThlZTQwY2RkZDQ0NGIxMDU2NWJjZDQ3
ZDM3NDg0MzVjYmNiZTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiAKIGNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+
JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVD
b21tYW5kQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUNvbW1hbmRCdWZmZXImIGNvbW1hbmRC
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5kZXggOTQxNWMz
NWZiMWIxNGI1MzUyMTAxOGQzZDdiMTYwNjNjMWYyYzMzYi4uNmNiZTQzMWU2NGVkMjgzZmE1OGU5
OWY2Y2NjZTY3ZjIyNjYzYmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCkBAIC00OSw4ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGUoUmVmPFdlYkdQVUFk
YXB0ZXI+JiYgYWRhcHRlcikKIHsKLSAgICBhdXRvIGRldmljZSA9IEdQVURldmljZTo6Y3JlYXRl
KCk7IC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4gY3JlYXRpbmcgbV9k
ZXZpY2UuCi0gICAgcmV0dXJuIGRldmljZSA/IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoV1RG
TW92ZShhZGFwdGVyKSwgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7CisgICAg
aWYgKGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKSkgLy8gRklYTUU6IFRha2UgYWRh
cHRlciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoV1RGTW92ZShhZGFwdGVyKSwgZGV2aWNlLnJlbGVh
c2VOb25OdWxsKCkpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV2ViR1BVRGV2aWNlOjpX
ZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQVURldmljZT4m
JiBkZXZpY2UpCkBAIC02Myw4ICs2NCw5IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJl
ZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQ
dHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlv
biBvbiBkZXNjcmlwdG9yIG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVh
dGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRv
ci51c2FnZSB9KTsKLSAgICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNy
ZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRlQmluZEdyb3Vw
TGF5b3V0KFdlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25z
dApAQCAtODYsOCArODgsOSBAQCBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVURldmlj
ZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BVUGlwZWxpbmVMYXlvdQogUmVmUHRyPFdlYkdQ
VVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFdoYXQgY2FuIGJlIHZhbGlkYXRlZCBoZXJlPwotICAgIGF1dG8gbW9kdWxlID0gbV9kZXZpY2Ut
PmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRv
ci5jb2RlIH0pOwotICAgIHJldHVybiBtb2R1bGUgPyBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0
ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIG1vZHVs
ZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ciB7IGRlc2NyaXB0b3IuY29kZSB9KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVs
ZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogc3RhdGljIE9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxpZGF0
ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQpAQCAtMTA4LDE0ICsxMTEsMTYgQEAgUmVmUHRyPFdlYkdQVVJlbmRl
clBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRl
clBpcGUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBwaXBlbGlu
ZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBk
ZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3RhdGUgfSk7Ci0g
ICAgcmV0dXJuIHBpcGVsaW5lID8gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShwaXBlbGlu
ZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gcGlwZWxpbmUgPSBt
X2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwgZGVzY3Jp
cHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShwaXBlbGluZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVUNvbW1hbmRC
dWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
YXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAg
ICByZXR1cm4gY29tbWFuZEJ1ZmZlciA/IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21t
YW5kQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21t
YW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSkKKyAgICAgICAgcmV0
dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVUXVldWU+IFdl
YkdQVURldmljZTo6Z2V0UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDFhMWM1MmNiYzk3
NTBjYjc0YTZkYjc2NTdiMmNlODFkNmEwNzA4MWEuLmRhZjFiMDgyMjdkNDY1NjAzOWMzNzJkMzUz
MWMwZmY5ODY0N2I0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYg
Y29tbWFuZEJ1ZmZlciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCitSZWY8
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUo
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmVmPEdQVVJlbmRlclBh
c3NFbmNvZGVyPiYmIGVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RG
TW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOwogfQogCiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYgY3JlYXRvciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaAppbmRleCAzMTI5NmUzZTllODI4ZTEwNDIxMGVkNDA1OTc4ZTJlMmYzMWZjMDdm
Li44N2E3ZWFmMTlmMDk5MDcxZGI3ZDNhZjBhOGQxNGEwMGVlOTJhNThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV2ViR1BVQnVmZmVyOwogCiBjbGFzcyBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0Vu
Y29kZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYm
KTsKIAogICAgIC8vIEZJWE1FOiBMYXN0IGFyZ3VtZW50IHNob3VsZCBiZSBWZWN0b3I8dW5zaWdu
ZWQgbG9uZz4uIFdoeSBpcyB0aGUgZ2VuZXJhdGVkIGNvZGUgaW5jb3JyZWN0bHkgYXNzdW1pbmcg
dGhlIElETCB3YW50cyBhIHNlcXVlbmNlPHVuc2lnbmVkIGludD4/CiAgICAgdm9pZCBzZXRWZXJ0
ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mJiwg
VmVjdG9yPHVuc2lnbmVkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCAzY2NmM2MwZGEyNjU1NmFmMzhm
OTczODYyYTQ4OGVjMGMzMWVhOWZhLi4xMDZjNTc2ODBkOTc1NzkxZmZmMzM4MWMxZjlkNjYxMTM5
Mjg2NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKK1JlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWY8R1BVUmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVS
ZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CiB9CiAKIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxp
bmU+JiYgcGlwZWxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCAyYzhiODY2OGZhZjZiZTA5MTQ5NDU1MWZjNzNj
YWNkOTIwZjk3ZDIyLi4zOTE3ZmFkNzY3ZmNjYjBlZDc1YmRlYjc0Y2E2YTBkYTEzY2M4Zjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVJlbmRlclBpcGVs
aW5lPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4g
Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZT4gY3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CiAKICAgICBS
ZWY8R1BVUmVuZGVyUGlwZWxpbmU+IHJlbmRlclBpcGVsaW5lKCkgeyByZXR1cm4gbV9yZW5kZXJQ
aXBlbGluZS5jb3B5UmVmKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKaW5kZXggZTgyM2IwNDRhOGYwMmNkNmJjNTky
MzA0MWNmOGU1OTZiODYxYjk4ZS4uOTk0YzJlY2EwYTk4YmM1ZjZkMzY0ZDkzNjA5ZGY5Y2QyYTFj
N2YzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
UmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCitSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBX
ZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1v
ZHVsZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RG
TW92ZShtb2R1bGUpKSk7CiB9CiAKIFdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BVU2hhZGVyTW9k
dWxlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAppbmRleCA0MjAyOTk0ZDQ3ZWMy
NGExZmUwOWE2ZWI0YzZmNzQ1N2EwYWM0MThkLi42NDY2MGIzMWU0NTZmZmEwODA1NmRlZTU1YjZj
YWQ0NWIzMzM3OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVNo
YWRlck1vZHVsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsKIAogICAgIGNv
bnN0IEdQVVNoYWRlck1vZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUucHRy
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmNwcAppbmRleCBjNjc4MGVmNjFiMDI5OWZlZTE5NWYxMjVmNTZjZTRkOGU4NjJjNzI3Li45ZDlk
N2Y5NjNiZDJlOTE1N2Q4NWNkZDM3YzE4MzA5ZTI2MzZjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcApAQCAtNDQsOCArNDQsOSBAQCBX
ZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpCiAK
IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCkKIHsKLSAgICBhdXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUtPmNyZWF0ZURl
ZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHJldHVybiBncHVUZXh0dXJlID8gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0VGV4dHVyZVZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoZ3B1VGV4dHVy
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwCmluZGV4IDA0NTlhNTNhMjg4ZWNmM2IyNjhmYzJjMDY2NDViNzRi
MTIzNDY1MWMuLjcyNjU5NDVhMjNlOWMxMGQyNmE3MDNkZmU0NDJkMGY0N2FiMGYwMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5j
cHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2Vi
R1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQVVRleHR1cmU+
JiYgdmlldykKK1JlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0
ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKIH0KIAogV2ViR1BVVGV4dHVyZVZp
ZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAppbmRleCA0MGZk
ODE0OTJiMDgxZGZjZGM5MWJlZjUzODJhZDNmNzk4YTkzNmY3Li5mYmViOGJjNjY1NjA0Mjc3ZTBk
ZjM5NTAzZjg3OTFiZWNhMDkyYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVVRleHR1cmVWaWV3PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVUZXh0
dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmPEdQVVRl
eHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuY29weVJlZigpOyB9CiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5k
ZXggZTI5Njk0NmRkZjI1YjRhZTYyNjZkOTVlYzJkMTBjNzNjNDRiNjM3Yi4uODA5MDQxMTM1ZGVj
MDk2ZmQ5MDNkNDFmNGUxNTc5YWExZDNlZWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzk5LDEzICsxNzk5LDEzIEBAIFJlZlB0
cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShSZWZQdHI8
UmFuZ2U+IG9yaWdpbmFsUmFuCiAgICAgaWYgKGVuZFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAg
ICBlbmRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoJm9yaWdpbmFsUmFuZ2Ut
PmVuZENvbnRhaW5lcigpKTsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0g
ICAgaWYgKCFzZWFyY2hSYW5nZSB8fCBzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCisgICAgYXV0
byBzZWFyY2hSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24pOworICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5U
ZXh0KCpzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwg
b3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBy
ZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwg
eyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCiBzdGF0aWMgYm9vbCBpc1JlcGxhY2VkTm9kZU9yQlIo
Tm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
QVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggNmZmNjQ0Y2Y1ZjBkMGEyOTgxYjRjZTdkOGFhYjkz
MzY3NmNkMDlmMC4uZjdjZDNhYThhZGRhNmE0YmNmYTQxMDk0ZWQ0NThjYmMzN2YxZmMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNo
ZUF0ay5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZQogICAg
ICAgICAvLyBDb25zaWRlciBwcmV2aW91cyB0ZXh0IG9iamVjdHMgdGhhdCBtaWdodCBiZSBwcmVz
ZW50IGZvcgogICAgICAgICAvLyB0aGUgY3VycmVudCBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byBl
bnN1cmUgd2UgZW1pdCB0aGUKICAgICAgICAgLy8gcmlnaHQgb2Zmc2V0IChlLmcuIG11bHRpbGlu
ZSB0ZXh0IGFyZWFzKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7Ci0gICAgICAgIG9m
ZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0
KCkpOworICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+
cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKKyAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0
ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSk7CiAgICAgfQogCiAgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIsIGRldGFpbC5kYXRhKCksIG9mZnNldFRvRW1p
dCwgdGV4dFRvRW1pdC5sZW5ndGgoKSwgdGV4dFRvRW1pdC51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggYTZlOTYzZGVhYmY3ZDAxZjUwNzg5M2IwMjYyMzIz
NGY2MDhkYTYwNy4uYmMxNmU0YjI5MDMxMTM5ZGM2NGQ2YzIzNjg5YWVkOTQ2NzUwNDdiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTI2MCw4ICsyNjAsOCBAQCBzdGF0aWMgZ2lu
dCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBlcmxpbmsqIGxp
bmspCiAgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVj
dCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhG
b3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0aWMgZ2ludCB3ZWJr
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQpAQCAt
Mjg2LDggKzI4Niw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRF
bmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwg
bGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVu
Z3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5v
ZGUocGFyZW50Tm9kZSksIGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkpOworICAgIHJl
dHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7CiB9
CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNWYWxpZChBdGtI
eXBlcmxpbmsqIGxpbmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXgg
MThjOWU5YjU3OTdjOTkxNmQyNjI1YTlmYjQwYzY3ZmY2MzEwMzdkZS4uZGE0MDJkYTBiZTBjZmM0
MTViMGVlZDU3YjQ0ZmYyZDc5YWJjYzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcApAQCAtNDA2LDEzICs0MDYsMTMgQEAgc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zm
c2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmwKIAog
ICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0ZWQgcmFuZ2UgaW5zaWRlIHRo
ZSBvYmplY3QuCiAgICAgUG9zaXRpb24gcGFyZW50Rmlyc3RQb3NpdGlvbiA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlSW5QYXJlbnQg
PSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9zaXRpb24sIG5v
ZGVSYW5nZVN0YXJ0KTsKKyAgICBhdXRvIHJhbmdlSW5QYXJlbnQgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9zaXRpb24sIG5vZGVSYW5nZVN0YXJ0KTsKIAog
ICAgIC8vIFNldCB2YWx1ZXMgZm9yIHN0YXJ0IG9mZnNldHMgYW5kIGNhbGN1bGF0ZSBpbml0aWFs
IHJhbmdlIGxlbmd0aC4KICAgICAvLyBUaGVzZSB2YWx1ZXMgbWlnaHQgYmUgYWRqdXN0ZWQgbGF0
ZXIgdG8gY292ZXIgc3BlY2lhbCBjYXNlcy4KLSAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZz
ZXRUb0F0a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdl
SW5QYXJlbnQuZ2V0KCksIHRydWUpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IG5vZGVSYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVu
ZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2Rl
UmFuZ2UuZ2V0KCksIHRydWUpOworICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRr
T2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVu
dC5wdHIoKSwgdHJ1ZSkpOworICAgIGF1dG8gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2Rl
LT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKKyAgICBpbnQgcmFu
Z2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5wdHIoKSwgdHJ1
ZSk7CiAKICAgICAvLyBTcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgd2hlbiB3
b3JraW5nIHdpdGggKl9FTkQgYm91bmRhcmllcy4KICAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5
KCkgPT0gVVBTVFJFQU0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
aW5kZXggOGM3YjFjZjM4YjljYjg4ZGI3OGM2OThlNmEwNjc2NjQ5ZTJjMGU3NC4uN2ZiNjJmOGU5
ZDBhN2QzZWNhZTcwMmE0Mzk1NjJmYzFjNWMwMjM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTI0MDEsMTIgKzI0MDEsMTIgQEAgLSAoTlNSYW5nZSlfY29u
dmVydFRvTlNSYW5nZTooUmFuZ2UgKilyYW5nZQogICAgIGlmICgmcmFuZ2UtPmVuZENvbnRhaW5l
cigpICE9IHNjb3BlICYmICFyYW5nZS0+ZW5kQ29udGFpbmVyKCkuaXNEZXNjZW5kYW50T2Yoc2Nv
cGUpKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKLSAgICBS
ZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCks
IHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgp
KTsKKyAgICBhdXRvIHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCks
IHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgp
KTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Ci0g
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5n
ZS5nZXQoKSk7CisgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENv
bnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CisgICAgaW50IGVuZFBvc2l0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwogICAgIHJldHVy
biBOU01ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcAppbmRleCA5ZmMzMDZjY2UwZmEzZThhODVjN2NmZWUwZGExMzYzODg1MGQ4
NzE1Li4zNTQ1ZDVkNTExZmY4NjgxOThiMTkzNTJhMDhkNGUxZDI1NmEzM2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAK
QEAgLTc4LDggKzc4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+LAogSlNHbG9iYWxPYmplY3RU
YXNrOjpKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayh7IH0pCiB7Ci0gICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNhbGxiYWNrID0g
SlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNr
KSk7Ci0gICAgbV90YXNrID0gW2NhbGxiYWNrXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBhdXRvIGNhbGxiYWNrID0gSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAgbV90YXNrID0gW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjYWxsYmFj
ay0+Y2FsbCgpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCA2MGI4YzUyNTcyNGVhNzg3MDljOTgxZWZhMmE5M2NiODUz
N2ZmOTkzLi5jNzQzMzRlOGE3NDYzMmZmN2U2NjU3ZGQyZGE5ZjQxMDY1ODZiNWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIwOSw4
ICsyMDksOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNH
bG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogewogICAgIEpTRE9NV2luZG93QmFz
ZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9iamVjdCk7CiAK
LSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01pY3JvdGFza0Nh
bGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNy
b3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgW2NhbGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBK
U01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Cisg
ICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCAzODBhZDViZDE1MjAxM2U4OTZiODdhYjQxNjU1NTc2MjJmN2UxNmNmLi5kODMxNjA0
Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMzMs
OSArMTMzLDkgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIHsKICAgICBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxiYWNrPiBjYWxsYmFj
ayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2sp
KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNP
YmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2Nh
bGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBj
b250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggY2E0Zjg3MTg5Y2MyOTUxOTk2
Yzg5ZDEzOGMzNTY2YTMxYzBjYzI0OS4uZGY5NDc2YTE2YmIzZmJjOGM0OGM2ZWM3ZDY4YjNjMmVi
ZDY1YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyTWFjLm1tCkBAIC04NSwxMCArODUsMTAgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCgK
ICAgICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gW3dpZGdldFZpZXcgY3JlYXRlUGx1Z2luU2Ny
aXB0YWJsZU9iamVjdF07CiAgICAgICAgIGlmICghbnBPYmplY3QpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RPYmplY3QpKTsK
KyAgICAgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRl
KG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RPYmplY3QpKTsKICAgICAgICAgLy8gLWNyZWF0ZVBsdWdp
blNjcmlwdGFibGVPYmplY3QgcmV0dXJucyBhIHJldGFpbmVkIE5QT2JqZWN0LiAgVGhlIGNhbGxl
ciBpcyBleHBlY3RlZCB0byByZWxlYXNlIGl0LgogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qo
bnBPYmplY3QpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIHJldHVybiBXVEZN
b3ZlKGluc3RhbmNlKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTk5ODEwODViNTUw
NWM3NDVjOTc1YTZkOTdhYmM1OGNlYWUxYzVmOS4uMWZlMzAwYmM0ZjMxNDRmMmZhZDhhMjgzZDUw
OWNjYTQwOTRmZWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODIzLDcgKzI4MjMsNyBAQCBjbGFzcyBDbG9u
ZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJ
bnRTaXplIGltYWdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFsZW5ndGggfHwgKGltYWdlU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSA8PSBsZW5n
dGgpOwotICAgICAgICAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpj
cmVhdGUoaW1hZ2VTaXplKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSW1hZ2VEYXRhOjpj
cmVhdGUoaW1hZ2VTaXplKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAg
ICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC0yOTU4
LDcgKzI5NTgsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc2hh
cmVkQnVmZmVycy0+YXQoaW5kZXgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSkpOwogICAgICAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBnZXRKU1ZhbHVlKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgICAgICBtX2djQnVm
ZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3cocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CkBAIC0zNDg0LDcgKzM0ODQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
ZXhlYywgdmFsdWUpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoKmV4ZWMsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoZXhlYywgc2NvcGUuZXhjZXB0aW9uKCktPnZhbHVlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCmluZGV4IDVmMjg1ZTkxYjhkZjVkNTE1
ZTU1NjBkNDQ5NjVkYTY0MDQxNTRlYjQuLjFiNzg5NmJlMTkwNTBlNzNiNTNmZDk1NzUyZjI1NWY4
M2E5YzMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgK
QEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgT2JqY0NsYXNzOwogCiBjbGFzcyBPYmpjSW5zdGFuY2Ug
OiBwdWJsaWMgSW5zdGFuY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8T2JqY0luc3Rh
bmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4mJik7CisgICAg
c3RhdGljIFJlZjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxS
b290T2JqZWN0PiYmKTsKICAgICB2aXJ0dWFsIH5PYmpjSW5zdGFuY2UoKTsKICAgICAKICAgICBz
dGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqLCBKU0dsb2JhbE9iamVjdCog
ZXhjZXB0aW9uRW52aXJvbm1lbnQgPSAwKTsgLy8gQSBudWxsIGV4Y2VwdGlvbkVudmlyb25tZW50
IG1lYW5zIHRoZSBleGNlcHRpb24gc2hvdWxkIHByb3BvZ2F0ZSB0byBhbnkgZXhlY3V0aW9uIGVu
dmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
aW5kZXggMGFlYzBjZWVhZjljNmMyYTYyZTJiMDg1YmEwZTdiYzRmZjhlYTFjZC4uMDUxZGFjYWZm
YzY2YWRmNzI0MmNjNDYwMWNkMzJhNWMxMTdmZmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xMDQsMTYgKzEwNCwxNyBAQCBPYmpjSW5zdGFu
Y2U6Ok9iamNJbnN0YW5jZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9i
amVjdCkKIHsKIH0KIAotUmVmUHRyPE9iamNJbnN0YW5jZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUo
aWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCitSZWY8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJDYWNoZSgpLmFk
ZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWluc3RhbmNlLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKLSAgICAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4gd3JhcHBlciA9IGFk
b3B0UmVmKG5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIuZ2V0KCk7CisgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0UmVmKCpuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZN
b3ZlKHJvb3RPYmplY3QpKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFw
cGVyLnB0cigpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKLSAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCiBPYmpjSW5zdGFu
Y2U6On5PYmpjSW5zdGFuY2UoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggN2IyNmUzYWRhYzVmYmQ2MTMyMmM2MjZmNjli
NDNkMjgyZWY0MzU2MS4uYmJlYTM2Y2EwYjAxMDk2Njg0YmNiN2JhOGQ3MGE0OWE3ZDI3ZTVjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlv
bk9mZnNldFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydAogICAgIHJl
dHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUF1dG8pOwogfQogCi1SZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gZG9lcyBOT1QgbG9vayBhdCB2aXNpdGVkIGluZm9ybWF0aW9uLCBzbyB0aGF0IGNv
bXB1dGVkIHN0eWxlIGRvZXNuJ3QgZXhwb3NlIHRoYXQuCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlk
KCkpCkBAIC00MjE3LDEyICs0MjE3LDEyIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAgICAgcmV0dXJuIGNvcHlQ
cm9wZXJ0aWVzSW5TZXQoY29tcHV0ZWRQcm9wZXJ0aWVzLCBudW1Db21wdXRlZFByb3BlcnRpZXMp
OwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKQEAgLTQyNTQsMTIgKzQyNTQsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaWRlc1Nob3J0aGEKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAotUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkK
K1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5
VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9y
dGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFy
YXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyAr
K2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC00MzU0LDggKzQz
NTQsOCBAQCBSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNr
Z3JvdW5kU2hvcnRoYW5kVmFsdWUoKQogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yWzNdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAgfTsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0
ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
cHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0b3IpKSk7CisgICAgbGlzdC0+YXBwZW5kKGdldENT
U1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRo
YW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Ip
KSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA5MzgzODc5OGYyNDYxYWYzZTdmYzJjNzlk
OWI5M2U4ZTM2OWVkMWRjLi5lY2JmMDRmNmM5NWU3NWQ1NjMzZjUwNWVhYmQxY2M0M2MyN2VjODAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCkBAIC04NywxNCArODcsMTQgQEAgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciB7CiAg
ICAgUmVuZGVyRWxlbWVudCogc3R5bGVkUmVuZGVyZXIoKSBjb25zdDsKIAogICAgIFJlZlB0cjxD
U1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1Bh
aW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1
cnJlbnRDb2xvcikgY29uc3Q7CisgICAgUmVmPENTU1ZhbHVlPiBhZGp1c3RTVkdQYWludEZvckN1
cnJlbnRDb2xvcihTVkdQYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYs
IGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0OwogICAgIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9wZXJ0eUlELCBjb25z
dCBSZW5kZXJTdHlsZSYsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFkanVz
dFBpeGVsVmFsdWVzKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xv
ck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7Cisg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwogCi0gICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9w
ZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogICAgIFJlZjxD
U1NWYWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJhOS4uMDk1Mjdm
MWIxMjZjN2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgaWYg
KG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygp
KSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
YnVmZmVyKTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmluZygpLCB3cmFw
cGluZyk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSks
IG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgbV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2Vz
cyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVk
IGluIHdoZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwgb3Igbm90LiBM
dWNraWx5LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMTJj
ZGE1NDVkN2JjYzc1ZGVkYjdhNzk1MzUxYmQ2ZjAwMzY3NGZjMi4uYmNmMDkyODFlODA5MGJmZTlj
ODk1MjIyMmEyOWI4ODcxNWZjZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMjU5LDExICsyNTksMTEgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
OjpydWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+
IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxp
c3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQgcnVsZUNvdW50
ID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVDb3VudDsgKytp
KQogICAgICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7Ci0gICAgcmV0dXJu
IHJ1bGVMaXN0OworICAgIHJldHVybiBXVEZNb3ZlKHJ1bGVMaXN0KTsKIH0KIAogRXhjZXB0aW9u
T3I8dW5zaWduZWQ+IENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxl
U3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGEyNGE1
MzYyNjg5MGE4YTkxZDExNzM4Y2E5YTU4YTQ1MzcxYmI4YjguLmUzNDkxNzEyODc4OTBiOTg3NGE3
MDRhYjdiNDFiZjY5Y2RhNTVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMzczLDcg
KzM3Myw3IEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKICAgICBtX2Jh
Y2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+cmFuZ2Vz
KCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX2JhY2tpbmctPnJhbmdlcygpKQogICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdlLmZyb20sIHJh
bmdlLnRvKSk7CiAgICAgcmV0dXJuIHZhbHVlcy0+Y3NzVGV4dCgpOwpAQCAtMzkwLDcgKzM5MCw3
IEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tp
bmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+ZmVhdHVyZVNl
dHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIm5vcm1hbCJfczsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
ICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygpKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRUYWco
ZmVhdHVyZS50YWcoKSksIGZlYXR1cmUudmFsdWUoKSkpOwogICAgIHJldHVybiBsaXN0LT5jc3NU
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFw
cGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
aW5kZXggZmRiOGUzYWY3OWFjNjJiNzg5NTYwYjgzYzM3ZWI3NDNjOGZlNjEyZi4uYmRlZmVjNGE3
ZmE3YzQwYjM2OWEwYTNkMmYwZTNkMzZiNzI4Nzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtNzksOSArNzksOSBAQCB2b2lkIEluc3Bl
Y3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlU2hl
ZXRDb250ZW50cyogcwogewogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwot
ICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZSgqc3R5bGVTaGVldCk7Ci0gICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0
LmFkZChzdHlsZVNoZWV0V3JhcHBlcik7Ci0gICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5n
ZXQoKSk7CisgICAgYXV0byBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZSgqc3R5bGVTaGVldCk7CisgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LmFkZChzdHls
ZVNoZWV0V3JhcHBlci5jb3B5UmVmKCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIu
cHRyKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggMzMxZTgzNjNmYWU4N2FiNDUzZmMxZTdkNTUzOWUwOTgwNmZiMTM1Mi4uYjNl
NGI5YTBjNTRmYjkzNjdlMDQ2NzE0MjI1OTQ5N2NiMjE0MWQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRh
dGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoR2x5cGhPcmllbnQKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJy
YXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBkYXNoZXMpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBW
ZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBkYXNoZXMpCiB7CiAgICAgaWYgKGRhc2hlcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZU5vbmUpOwpAQCAtNjAsMTAgKzYwLDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1
CiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRU
eXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgQ29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3QKK1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlIHBh
aW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgQ29s
b3ImIGN1cnJlbnRDb2xvcikgY29uc3QKIHsKICAgICBpZiAocGFpbnRUeXBlID49IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGF1dG8gdmFsdWVz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpDU1NfVVJJKSk7CiAgICAgICAgIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRU
eXBlOjpVUklOb25lKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSk7CkBAIC03MSw3ICs3MSw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JD
dXJyZW50Q29sb3IoU1ZHUGFpbnRUCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKGN1cnJlbnRDb2xvcikpOwogICAgICAgICBlbHNlIGlmIChwYWlu
dFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpVUklSR0JDb2xvcikKICAgICAgICAgICAgIHZhbHVlcy0+
YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY29sb3IpKTsKLSAgICAgICAgcmV0dXJu
IHZhbHVlczsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUodmFsdWVzKTsKICAgICB9CiAgICAgaWYg
KHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ1ZWU5MzRkMjMwMWU4YjMwMTgyZGZkOTdkNTBkMTAy
NjI2YTQzZTEuLmJmY2M2MjQzOTk0ZDAwNzE0MWFkY2FmNzlmZWQ3MDYwZmM5YjgxMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODAsOCArMTk4MCw4IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0gcHJpbWl0aXZl
VmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGNzc1VybCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNz
c1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOworICAgICAgICAgICAgYXV0byBvcGVyYXRp
b24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoV1RGTW92ZShvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggMGRjMTA5OGY1NGY4NGJiZjJiYTdiYmEz
NTk3MWI2OGQ1YTlkYmJlYy4uMWVlZmViOGJkMTBjMjU0YjgyNGJjMDZjZDViOGFlZjA2NjAyMTg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBzdHJ1Y3Qg
U2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAK
IENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9PSBzaXplb2YoU2FtZVNpemVB
c1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVm
UHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwgbnVsbHB0cik7CiB9CiAKLVJl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSog
cGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsgCiAgICAgcmV0dXJuIGNyZWF0
ZUNTU09NV3JhcHBlcihudWxscHRyLCBwYXJlbnRSdWxlKTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBA
QCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNvbnN0CiAgICAgQ1JB
U0goKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7CiAgICAg
UmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9IGNvbnN0X2Nh
c3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE2OSwxMSArMTY5LDEzIEBAIFJlZlB0cjxD
U1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQsIENTCiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5ZnJhbWU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIEFTU0VSVChydWxlKTsKKwogICAgIGlmIChwYXJlbnRS
dWxlKQogICAgICAgICBydWxlLT5zZXRQYXJlbnRSdWxlKHBhcmVudFJ1bGUpOwotICAgIHJldHVy
biBydWxlOworICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHVuc2lnbmVk
IFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRl
eCA2ODA3MTQxZmVlYTcxYjA3NmFmYTlhNGE2OWEzY2QyNmZjNTMyMjg4Li43MTgwNTIzMTM4NDQw
MzJmNzVjOWM2Y2QxZTVhYTkzZGJlZGQ0MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC04
NCw4ICs4NCw4IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVk
QmFzZSB7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgbmVl
ZCBmb3IgdGhlIG51bGwgcGFyZW50IHZlcnNpb24uCi0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0
OwotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50
UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHls
ZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBj
cmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5
T3JpZ2luID0gZmFsc2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgU3R5bGVSdWxlQmFzZSA6
IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09N
V3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKICAgICB1bnNpZ25l
ZCBtX3R5cGUgOiA1OwogICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3VwcG9ydCBnZXRN
YXRjaGVkQ1NTUnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKaW5kZXggMGZlZTg0Y2Q3ZWIyNjc5MmUzZGY2ZDQ2N2U5MGE2MmYxZmQwY2M1NC4u
ODE0ZDQ2YjA1YTY3YzE1OTlhMjMyOGMzODMyZmU0MGFmNWI2MzNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjp+Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cigpCiAgICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUobV90YXJnZXQucHRyKCkpOwogfQogCi1S
ZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQorUmVmPENoaWxkTGlz
dE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9y
Q3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHsKICAgICBBY2N1bXVsYXRvck1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IGFjY3VtdWxhdG9yTWFwKCkuYWRkKCZ0YXJnZXQsIG51bGxwdHIpOwog
ICAgIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBhY2N1bXVsYXRvcjsKQEAg
LTcwLDcgKzcwLDggQEAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxk
TGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKEMKICAgICAgICAgYWNjdW11bGF0
b3IgPSBhZG9wdFJlZihuZXcgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcih0YXJnZXQsIE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbih0
YXJnZXQpKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhY2N1bXVsYXRvci5n
ZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yOworICAgIEFTU0VSVChhY2N1bXVs
YXRvcik7CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIGlu
bGluZSBib29sIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmlzQWRkZWROb2RlSW5PcmRl
cihOb2RlJiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5oCmluZGV4IDliOTQzNzE2ZGJjODRjOTNiMjZmMjkzMWJlYTgzZTdkMTEzYWVhNTguLjI5NjY3
Njc3NjhmMGQ3MTQ3NDJlMzZiY2U1YjYxMDg2OTc3ZjkxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDsKIC8vIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHk7IENoaWxkTGlzdE11dGF0aW9uU2Nv
cGUgaXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCiBjbGFzcyBDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYpOworICAgIHN0YXRpYyBSZWY8Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYpOwogICAgIH5D
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCk7CiAKICAgICB2b2lkIGNoaWxkQWRkZWQoTm9k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAppbmRleCBkNTVjNTZmMTM2OTMyNThiNzJkZmNiZGE1NDZiYmM3YzZmODlhMzAyLi41YjA4NjMw
YzMzMDBiOWE3OTAyZmE3YmNiZTIyZDZlMWMyYzY2YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMTYxLDkgKzE2MSw3IEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXIoUmVuZGVyZWREb2N1bWVudE1h
cmtlciYgbWFya2VyLCBOb2RlJiBuCiAgICAgQVNTRVJUKCFub2RlLmRvY3VtZW50KCkudmlldygp
IHx8ICFub2RlLmRvY3VtZW50KCkudmlldygpLT5uZWVkc0xheW91dCgpKTsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgcmVmYWN0b3IgdGhpcyBzbyB0aGF0IHdlIGRvbid0IHVzZSBSYW5nZSAo
YmVjYXVzZSB3ZSBvbmx5IGhhdmUgb25lIE5vZGUpLCBidXQgc3RpbGwgc2hhcmUgY29kZSB3aXRo
IGFic29sdXRlVGV4dFF1YWRzKCkuCi0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
ICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOwotICAgIGlmICghbWFya2VyUmFuZ2UpCi0gICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRv
Y3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRP
ZmZzZXQoKSk7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVNYXJrZXJRdWFkczsKICAg
ICBtYXJrZXJSYW5nZS0+YWJzb2x1dGVUZXh0UXVhZHMoYWJzb2x1dGVNYXJrZXJRdWFkcywgdHJ1
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5k
ZXggMGQ4YjZiY2U3NWUxZjA3NWU4YjNlYWZiODUyMTk3NWQ2MjgzYmM4ZC4uMTUwYTc4ZDU5MDMx
NmM3ZTE0NDE5ZDgyYWNiNzliODA0YzYyYjhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJp
bmcmIHRleHQpCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dJbmxpbmVTdHls
ZShkb2N1bWVudC51cmwoKSwgbV9zdGFydFRleHRQb3NpdGlvbi5tX2xpbmUsIHRleHQsIGhhc0tu
b3duTm9uY2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
bWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CisgICAgYXV0byBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1
ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQp
KTsKIAogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVuIl9zLCB0cnVl
KTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiX3MsIHRydWUpOwog
ICAgIExPRyhNZWRpYVF1ZXJpZXMsICJJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
IGV2YWx1YXRpbmcgcXVlcmllcyIpOwotICAgIGlmICghc2NyZWVuRXZhbC5ldmFsdWF0ZSgqbWVk
aWFRdWVyaWVzKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpKQorICAgIGlm
ICghc2NyZWVuRXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpICYmICFwcmludEV2YWwu
ZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fc3R5bGVTY29wZSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRP
d25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
ICAgICAgICBpZiAoYXV0byogY2FjaGVkU2hlZXQgPSBpbmxpbmVTdHlsZVNoZWV0Q2FjaGUoKS5n
ZXQoKmNhY2hlS2V5KSkgewogICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFNoZWV0LT5pc0NhY2hl
YWJsZSgpKTsKICAgICAgICAgICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUoKmNhY2hlZFNoZWV0LCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICAgICAg
ICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92ZShtZWRpYVF1
ZXJpZXMpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKQogICAg
ICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQudGl0bGUoKSk7CiAKQEAgLTIw
Myw3ICsyMDMsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGF1dG8gY29udGVudHMgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShTdHJpbmcoKSwgcGFyc2VyQ29udGV4dEZvckVsZW1l
bnQoZWxlbWVudCkpOwogCiAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGlu
ZShjb250ZW50cy5nZXQoKSwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgbV9z
aGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92ZShtZWRpYVF1ZXJpZXMpKTsKICAgICBp
ZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUo
ZWxlbWVudC50aXRsZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50
ZXJFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCmluZGV4IGNmMDkx
NDMxMjhjOWUyYjEzOTJlYTlmYzk3ZGM4ZTAwNWRhYjRmZmEuLmRmMmFlOGJiZDgxOTMyYmM0NmMz
NjZjMDdjZGU3YjgwOThmZDJhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgUG9pbnRlckV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQg
ewogICAgICAgICBib29sIGlzUHJpbWFyeSB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIHN0YXRp
YyBSZWZQdHI8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJ
bml0JiYgaW5pdGlhbGl6ZXIpCisgICAgc3RhdGljIFJlZjxQb2ludGVyRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXRp
YWxpemVyKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9y
LmgKaW5kZXggMDExMjcyMDA3YjE1N2EwNDljZWQ3YmM0OWEzYzk2OTMxODMyYWFhYy4uNWExY2I5
ZWE4YTI5M2E5ZjI2NzEwYzg2OTMxODI1OGUwNGQ3ZWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgZW51bSBjbGFzcyBVc2Vy
R2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNzIFVzZXJHZXN0dXJlVG9r
ZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKKyAgICBzdGF0aWMg
UmVmPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBz
dGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJlVHlwZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJl
VHlwZSkpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Vc2VyR2VzdHVyZVRva2VuKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCA1ODJiZTBkZTU5MzJjNWNiZTQ5YzUxZjBjODFiOGRjOTgwNzE3ZDFlLi45
OGFiYzczNmQ3NTA2ODQzZjMyMWMwZDZjNDI0OTA5YzgwN2NhODVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJu
YXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgLy8gcmVsYXRpdmUgdG8g
dGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFwaC4gV2UgdXNlIGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoCiAgICAgLy8gdG8gc3RvcmUgdGhpcyB2YWx1
ZS4gSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRvIGZpcnN0IGNyZWF0
ZSBhIHJhbmdlCiAgICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQgb2YgcGFyYWdyYXBo
IHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZS4KLSAgICBSZWZQ
dHI8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdl
OjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFy
dFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSk7CisgICAgUmVmPFJhbmdlPiBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFw
aEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rp
b24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5n
Q29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3Jy
ZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwogCiAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbk9m
UmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7CiAgICAgaWYgKCFz
dGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCkBAIC0y
MTAsNyArMjEwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVy
bmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9mIGF1dG9jb3JyZWN0aW9uIHNvIHRo
YXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UuCi0g
ICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UuZ2V0KCkp
OworICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0
cigpKTsKIAogICAgIC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlz
IG1ldGhvZCBtYXkgd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCiAgICAg
YXV0byByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKQEAgLTI2Niwx
MiArMjY2LDEyIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5h
cHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTCiAgICAgUmVmPEZyYW1lPiBwcm90
ZWN0b3IobV9mcmFtZSk7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
ICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxlY3Rpb25PZkNvcnJlY3Rl
ZCwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGcmFtZVNl
bGVjdGlvbjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
ZW5kKCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CiAKICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJrZXJz
LnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRv
Y29ycmVjdGVkIH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3Zl
cmxhcHBpbmdNYXJrZXIpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdl
dCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFya2Vy
cy5yZW1vdmVNYXJrZXJzKHJhbmdlLnB0cigpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0
b2NvcnJlY3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9j
dW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5w
dHIoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiB2b2lk
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQpAQCAtNDQzLDEyICs0NDMs
MTAgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRF
ZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24KIHsKICAgICBpZiAoIWNvbW1hbmQtPndhc0Ny
ZWF0ZUxpbmtDb21tYW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFydGlu
Z1NlbGVjdGlvbigpLnN0YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCkp
OwotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlv
bigpLnN0YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCkpOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFy
a2VycygpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6UmVwbGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFya2Vycy5hZGRNYXJr
ZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vy
cy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhl
bXB0aW9uKTsKIH0KIAogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQpAQCAtNTI2LDE1ICs1MjQsMTUgQEAgdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrUHJlY2VkaW5nV2hpdGVzcGFjZUZvckRl
bGV0ZWRBdXRvY29ycmVjdGlvbkEKICAgICBpZiAoZW5kT2ZTZWxlY3Rpb24gPT0gcHJlY2VkaW5n
Q2hhcmFjdGVyUG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4g
cHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7Ci0gICAgU3Ry
aW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7Cisg
ICAgYXV0byBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUu
ZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9uKTsK
KyAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0
cigpKTsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCAhZGVwcmVjYXRlZElzRWRpdGluZ1do
aXRlc3BhY2Uoc3RyaW5nW3N0cmluZy5sZW5ndGgoKSAtIDFdKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gTWFyayB0aGlzIHdoaXRlc3BhY2UgdG8gaW5kaWNhdGUgd2UgaGF2ZSBkZWxldGVk
IGFuIGF1dG9jb3JyZWN0aW9uIGZvbGxvd2luZyB0aGlzCiAgICAgLy8gd2hpdGVzcGFjZS4gU28g
aWYgdGhlIHVzZXIgdHlwZXMgdGhlIHNhbWUgb3JpZ2luYWwgd29yZCBhZ2FpbiBhdCB0aGlzIHBv
c2l0aW9uLCB3ZQogICAgIC8vIHdvbid0IGF1dG9jb3JyZWN0IGl0IGFnYWluLgotICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJSYW5n
ZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmlnaW5h
bFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOworICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIoKSwg
RG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmlnaW5hbFN0cmluZ0Zv
ckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOwogfQogCiBib29sIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxhY2VkQnlSZXN1bHQoY29uc3Qg
VGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQsIFJhbmdlJiByYW5nZVdpdGhBbHRlcm5hdGl2ZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdUb0JlUmVwbGFjZWQpCkBAIC01NzUsMjEgKzU3MywxOSBAQCBi
b29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3Jk
KGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvcihtYXJr
ZXIsIGVuZE9mV29yZFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIE5vZGUqIG5vZGUgPSBlbmRPZldvcmRQb3NpdGlvbi5jb250YWlu
ZXJOb2RlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpt
X2ZyYW1lLmRvY3VtZW50KCksIG5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJr
ZXIuZW5kT2Zmc2V0KCkpOwotICAgIGlmICghd29yZFJhbmdlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQoKSk7
CisgICAgYXV0byB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCks
IG5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOwor
ICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UucHRyKCkpOwogICAg
IGlmICghY3VycmVudFdvcmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X29yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwogICAgIHN3aXRjaCAobWFya2VyLnR5cGUoKSkg
ewogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgotICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZl
ID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBlbXB0eVN0cmluZygp
OwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlw
ZVNwZWxsaW5nU3VnZ2VzdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50
TWFya2VyOjpSZXBsYWNlbWVudDoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdv
cmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJh
bmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gbWFya2VyLmRlc2NyaXB0aW9uKCk7CiAgICAgICAg
IHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9u
KTsKICAgICAgICAgYnJlYWs7CkBAIC01OTksNyArNTk1LDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1h
cmtlciYKICAgICAgICAgYXV0byYgbWFya2VyRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRXb3Jk
ICE9IG1hcmtlckRhdGEub3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3Jh
bmdlV2l0aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFp
bHMgPSBtYXJrZXJEYXRhLmNvbnRleHQ7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlU
aW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGMzZDgx
NGFkMWQzZmRhNmFmODY5Njg4YmZjMmNhMWI3OWM5NWM2YTMuLjdhM2ExNjAwZmJhOTM3ZGFkNzQy
NmY3NGI2MDM2OTcxZmM4Y2UyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCkBAIC0yNTAsMTAgKzI1MCwxMCBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICBpZiAoIXNjb3Bl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxl
U3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAg
UmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIGludCBlbmRJbmRleCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1
dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbklu
Tm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgaW50
IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1
ZSk7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQoc3RhcnRPZlBhcmFncmFw
aCh2aXNpYmxlU3RhcnQpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFN0YXJ0
KGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCkpOwpAQCAtMjg0LDEwICsyODQs
MTIgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHls
ZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBoKHBh
cmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHN0YXJ0UmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAw
LCB0cnVlKTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICBpZiAoc3RhcnRSYW5nZSAm
JiBlbmRSYW5nZSkKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB7CisgICAgICAgIGF1dG8g
c3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2Nv
cGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOworICAgICAgICBhdXRvIGVuZFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRy
dWUpOworICAgICAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRSYW5nZSkKKyAgICAgICAgICAgIHVw
ZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkK
QEAgLTEwNTEsOSArMTA1Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5s
aW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIE5vZGUqCiAgICAgICAgICAg
ICBlbGVtZW50c1RvUHVzaERvd24uYXBwZW5kKCpzdHlsZWRFbGVtZW50KTsKICAgICAgICAgfQog
Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0
eWxlOjpjcmVhdGUoKTsKICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqY3VycmVudCkpCi0g
ICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2FzdDxI
VE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdl
dCgpKTsKKyAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGRv
d25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVz
aERvd24ucHRyKCkpOwogCiAgICAgICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwgZ28gdGhyb3Vn
aCBjaGlsZHJlbiBvbiBlYWNoIGxldmVsCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWdn
cmVnYXRlIGlubGluZSBjaGlsZCBlbGVtZW50cyB0b2dldGhlciBzbyB0aGF0IHdlIGRvbid0IHdy
YXAgZWFjaCBjaGlsZCBzZXBhcmF0ZWx5LgpAQCAtMTA3Miw3ICsxMDc0LDcgQEAgdm9pZCBBcHBs
eVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxl
JiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIC8vIEFwcGx5IHN0eWxlIHRvIGFsbCBub2RlcyBj
b250YWluaW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8gdGFyZ2V0
Tm9kZQogICAgICAgICAgICAgLy8gQnV0IGlmIHdlJ3ZlIHJlbW92ZWQgc3R5bGVkRWxlbWVudCB0
aGVuIGFsd2F5cyBhcHBseSB0aGUgc3R5bGUuCiAgICAgICAgICAgICBpZiAoJmNoaWxkICE9IHRh
cmdldE5vZGUgfHwgc3R5bGVkRWxlbWVudCkKLSAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0
eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLnB0
cigpKTsKIAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5leHQgbm9kZSBmb3IgdGhlIG91
dGVyIGxvb3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAgICAgICAvLyBXaGVuIHJlYWNo
ZWQgdGFyZ2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9uIHRoZSBjb21wbGV0aW9uIG9m
IHRoZSBjdXJyZW50IGlubmVyIGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzBlNWM5Y2U3NTdmNTY3YWNhOTYyMmFhODgyNzEz
ZTVmNWE4ODFlMS4uZDdmNjc3NWU5ZDQyM2EyNzZlMWQyODc5MDljMzZiYmM3YmY1ZTU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAg
LTM4Miw4ICszODIsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiAgICAgaWYgKCFmaXJzdFJhbmdlKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRp
Y1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2UpOwotICAgIHJldHVybiB7IDEsIHJh
bmdlIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmly
c3RSYW5nZSkgfTsKIH0KIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVk
aXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpIGNvbnN0CkBAIC03NjgsMTUgKzc2
NywxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlVGV4dEluTm9kZVByZXNl
cnZpbmdNYXJrZXJzKFRleHQmIG5vZGUsIHVuc2lnbgogICAgIERvY3VtZW50TWFya2VyQ29udHJv
bGxlciYgbWFya2VyQ29udHJvbGxlciA9IGRvY3VtZW50KCkubWFya2VycygpOwogICAgIGF1dG8g
bWFya2VycyA9IGNvcHlNYXJrZXJzKG1hcmtlckNvbnRyb2xsZXIubWFya2Vyc0luUmFuZ2UoUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwgb2Zmc2V0ICsgY291
bnQpLCBEb2N1bWVudE1hcmtlcjo6YWxsTWFya2VycygpKSk7CiAgICAgcmVwbGFjZVRleHRJbk5v
ZGUobm9kZSwgb2Zmc2V0LCBjb3VudCwgcmVwbGFjZW1lbnRUZXh0KTsKLSAgICBSZWZQdHI8UmFu
Z2U+IG5ld1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAm
bm9kZSwgb2Zmc2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKKyAgICBhdXRvIG5ld1Jh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwgb2Zm
c2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1h
cmtlciA6IG1hcmtlcnMpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAo
bWFya2VyLmlzRGljdGF0aW9uKCkpIHsKLSAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRk
TWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24o
KSwgbWFya2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CisgICAgICAgICAg
ICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5cGUo
KSwgbWFya2VyLmRlc2NyaXB0aW9uKCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1l
dGFkYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgotICAg
ICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5
cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCkpOworICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFk
ZE1hcmtlcihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9u
KCkpOwogICAgIH0KIH0KIApAQCAtMTQxNCwxNCArMTQxMywxNCBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQ
YXJhZ3JhcAogICAgICAgICAgICAgCiAgICAgICAgICAgICBzdGFydEluZGV4ID0gMDsKICAgICAg
ICAgICAgIGlmIChzdGFydEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdy
YXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZp
c2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsK
LSAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChz
dGFydFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVx
dWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAg
IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCks
IHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAgICAg
ICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2li
bGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAg
ICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdl
LmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0MzcsMTQgKzE0MzYsMTQgQEAgdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBz
dGFydE9mUGFyYWdyYXAKICAgICAvLyBzdGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGlyZWN0
bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRoZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKICAgICBQ
b3NpdGlvbiBzdGFydFJhbmdlQ29tcGxpYW50ID0gc3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiAgICAgUG9zaXRpb24gZW5kUmFuZ2VDb21wbGlhbnQgPSBlbmQucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJh
bmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50
LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0
UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgp
LCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGFuIGluZWZmaWNpZW50IHdheSB0byBwcmVzZXJ2ZSBzdHlsZSBvbiBu
b2RlcyBpbiB0aGUgcGFyYWdyYXBoIHRvIG1vdmUuIEl0CiAgICAgLy8gc2hvdWxkbid0IG1hdHRl
ciB0aG91Z2gsIHNpbmNlIG1vdmVkIHBhcmFncmFwaHMgd2lsbCB1c3VhbGx5IGJlIHF1aXRlIHNt
YWxsLgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsKICAgICAvLyBUaGlz
IHVzZWQgdG8gdXNlIGEgdGVybmFyeSBmb3IgaW5pdGlhbGl6YXRpb24sIGJ1dCB0aGF0IGNvbmZ1
c2VkIHNvbWUgdmVyc2lvbnMgb2YgR0NDLCBzZWUgYnVnIDM3OTEyCiAgICAgaWYgKHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUgIT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUpCi0gICAgICAgIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZp
bmdWaXN1YWxBcHBlYXJhbmNlKCpyYW5nZSwgbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZTo6Tm8sIENvbnZlcnRCbG9ja3NUb0lubGluZXM6OlllcyksIGVtcHR5U3RyaW5nKCkpOworICAg
ICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJp
YWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShyYW5nZS5nZXQoKSwgbnVsbHB0ciwgQW5u
b3RhdGVGb3JJbnRlcmNoYW5nZTo6Tm8sIENvbnZlcnRCbG9ja3NUb0lubGluZXM6OlllcyksIGVt
cHR5U3RyaW5nKCkpOwogCiAgICAgLy8gQSBub24tZW1wdHkgcGFyYWdyYXBoJ3Mgc3R5bGUgaXMg
bW92ZWQgd2hlbiB3ZSBjb3B5IGFuZCBtb3ZlIGl0LiAgV2UgZG9uJ3QgbW92ZSAKICAgICAvLyBh
bnl0aGluZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBlbXB0eSBw
YXJhZ3JhcGggY2FuIGhhdmUgc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDFiYzliNDBlNmZlOWNhNzk3Y2JmNjdlNzZk
NmU2NjU1ZWIwOTc1YTYuLmE2ZDE3NjBjMmIwY2Y5NGY5ODIxMzNlMjEyZGU0NWMxOWRkZjUyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtNjkzLDkgKzY5Myw5IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVy
Z2VQYXJhZ3JhcGhzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBo
VG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRl
KGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50
KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBs
YWNlZC5nZXQoKSkpCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaWYgKCFmcmFtZSgpLmVkaXRvcigp
LmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5wdHIoKSwgcmFuZ2VU
b0JlUmVwbGFjZWQucHRyKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gbW92ZVBh
cmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJzIGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRo
YXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0IGxldCBibG9jawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKaW5kZXggY2NhNGVkZTFiYTQ0YzIzM2E2MzgxODc3ZWFjYTU4MTU4NzRl
ZWU1Yy4uODZkMDIxZDE4YTQ3OTEzZWVhMGI3NjY0OGVmOWZmOWNmMDQyZDVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE3LDkgKzExMTcsOSBAQCBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5v
ZGUsIGludCBpbgogICAgIGlmIChpbmRleCA8PSAwKQogICAgICAgICByZXR1cm4geyBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUoJm5vZGUpLCBET1dOU1RSRUFNIH07CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOworICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CiAgICAgcmFuZ2UtPnNlbGVj
dE5vZGVDb250ZW50cyhub2RlKTsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdCgqcmFuZ2UpOwor
ICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKICAgICBpdC5hZHZhbmNlKGlu
ZGV4IC0gMSk7CiAgICAgcmV0dXJuIHsgaXQuYXRFbmQoKSA/IHJhbmdlLT5lbmRQb3NpdGlvbigp
IDogaXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKSwgVVBTVFJFQU0gfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA2NDIxNmM5ODYwNjRiNjdlZTM5OTVlMDAx
Mzg5ZDFjOGFkYjQ3MzhhLi5iMzhjMTUwOWVlOTc5YmU5ZTQwZmUzYmFkMjkwZDQ3NDI2NjAwMDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03MTQsNyArNzE0
LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVP
Zk5vZGUoTm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHBhcmVudFN0eWxlID0gY29weVByb3BlcnRpZXNGcm9tQ29tcHV0ZWRT
dHlsZShub2RlLnBhcmVudE5vZGUoKSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7Ci0gICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gbm9kZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJm5v
ZGUsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gbm9kZVN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoJm5vZGUsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAg
IG5vZGVTdHlsZS0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoKnBhcmVudFN0eWxlKTsKIAog
ICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlID0gbm9kZVN0eWxlLT5zdHlsZSgpOwpA
QCAtODI4LDggKzgyOCw4IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5l
U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgYm9vbCBzaG91
bGRSZW1vdmVTdHJpa2VUaHJvdWdoID0gc3RyaWtlVGhyb3VnaENoYW5nZSgpID09IFRleHREZWNv
cmF0aW9uQ2hhbmdlOjpSZW1vdmU7CiAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSB8fCBz
aG91bGRSZW1vdmVTdHJpa2VUaHJvdWdoKSB7CiAgICAgICAgIGlmIChSZWZQdHI8Q1NTVmFsdWVM
aXN0PiB2YWx1ZUxpc3QgPSB0ZXh0RGVjb3JhdGlvblZhbHVlTGlzdCgqaW5saW5lU3R5bGUpKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBuZXdWYWx1ZUxpc3QgPSB2YWx1ZUxp
c3QtPmNvcHkoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGV4dHJhY3RlZFZh
bHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAg
ICAgIGF1dG8gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5KCk7CisgICAgICAgICAgICBh
dXRvIGV4dHJhY3RlZFZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKIAogICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB1bmRlcmxpbmUgPSBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVu
ZGVybGluZSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lICYmIHZhbHVl
TGlzdC0+aGFzVmFsdWUodW5kZXJsaW5lLnB0cigpKSkgewpAQCAtODUwLDcgKzg1MCw3IEBAIGJv
b2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVk
RWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgICAgICAgICBpZiAoZXh0cmFjdGVkVmFsdWVMaXN0
LT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGNvbmZsaWN0cyA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgaWYgKG5ld1ZhbHVlTGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAg
IG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBu
ZXdWYWx1ZUxpc3QpOworICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuZXdWYWx1ZUxpc3QpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKIApAQCAtMTA3MSw3
ICsxMDcxLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAvLyBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpcmVzIHRoYXQgdGhpcyBmdW5jdGlv
biBvbmx5IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlv
biB3YXMgbW9kaWZpZWQgaW4gdGhlIGZ1dHVyZSB0byBkZWxldGUgYWxsIHJlZHVuZGFudCBwcm9w
ZXJ0aWVzLCB0aGVuIGFkZCBhIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUKICAgICAvLyB3aGlj
aCBvbmUgb2YgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiBvciBjb21wdXRlZFN0eWxlIGlzIGNhbGxl
ZC4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwor
ICAgIGF1dG8gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBv
c2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBTdHlsZVByb3BlcnRpZXMq
IHN0eWxlQXRQb3NpdGlvbiA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24tPm1fbXV0YWJsZVN0eWxl
LmdldCgpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKQEAgLTExNTgsNyAr
MTE1OCw3IEBAIHN0YXRpYyBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdEVk
aXRpbmdQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVyCiAKIHZvaWQgRWRpdGluZ1N0eWxlOjpt
ZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVu
dCwgQ1NTUHJvcGVydHlPdmVycmlkZU1vZGUgbW9kZSwgUHJvcGVydGllc1RvSW5jbHVkZSBwcm9w
ZXJ0aWVzVG9JbmNsdWRlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlRnJvbVJ1
bGVzID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlRnJvbVJ1bGVzID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKICAgICBzdHlsZUZyb21SdWxlcy0+bWVyZ2VTdHlsZUZy
b21SdWxlc0ZvclNlcmlhbGl6YXRpb24oZWxlbWVudCk7CiAKICAgICBpZiAoZWxlbWVudC5pbmxp
bmVTdHlsZSgpKQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
U3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgLy8gVGhlIHByb3BlcnR5IHZhbHVlLCBpZiBpdCdzIGEgcGVyY2VudGFnZSwgbWF5IG5vdCBy
ZWZsZWN0IHRoZSBhY3R1YWwgY29tcHV0ZWQgdmFsdWUuICAKICAgICAvLyBGb3IgZXhhbXBsZTog
c3R5bGU9ImhlaWdodDogMSU7IG92ZXJmbG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQogICAg
IC8vIEZJWE1FOiBUaGVyZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxl
bS81MTk1MTIzPiBTbGFzaGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KLSAgICBSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGZyb21Db21wdXRlZFN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
ciBjb21wdXRlZFN0eWxlKCZlbGVtZW50KTsKIAogICAgIHsKQEAgLTEzMDQsNyArMTMwNCw3IEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihT
dHlsZWRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
ICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgqZnJvbUNvbXB1
dGVkU3R5bGUpOworICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGlj
dChmcm9tQ29tcHV0ZWRTdHlsZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZVByb3Bl
cnRpZXNJblN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlVG9SZW1vdmVQcm9wZXJ0
aWVzRnJvbSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMzI4LDcgKzEzMjgs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0
eWxlZEVsZW1lbnQmIGVsZW1lbnQsIE5vZGUqCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0
UHJvcGVydGllc05vdEluKCptX211dGFibGVTdHlsZSwgKnN0eWxlRnJvbU1hdGNoZWRSdWxlcyk7
CiAKICAgICAvLyAyLiBSZW1vdmUgc3R5bGUgcHJlc2VudCBpbiBjb250ZXh0IGFuZCBub3Qgb3Zl
cnJpZGRlbiBieSBtYXRjaGVkIHJ1bGVzLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGNvbXB1
dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0LCBFZGl0aW5nUHJvcGVydGll
c0luRWZmZWN0KTsKKyAgICBhdXRvIGNvbXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShjb250ZXh0LCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBpZiAoY29tcHV0ZWRT
dHlsZS0+bV9tdXRhYmxlU3R5bGUpIHsKICAgICAgICAgaWYgKCFjb21wdXRlZFN0eWxlLT5tX211
dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikpCiAgICAgICAgICAgICBjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwpAQCAt
MTgwMiw3ICsxODAyLDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChUJiBzdHlsZSkK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IGV4dHJhY3RQcm9wZXJ0aWVzTm90SW4oU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVdpdGhSZWR1bmRh
bnRQcm9wZXJ0aWVzLCBUJiBiYXNlU3R5bGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4g
cmVzdWx0ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRp
ZXMpOworICAgIGF1dG8gcmVzdWx0ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0aFJl
ZHVuZGFudFByb3BlcnRpZXMpOwogICAgIHJlc3VsdC0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRp
ZXMoYmFzZVN0eWxlKTsKICAgICBBU1NFUlQocmVzdWx0LT5zdHlsZSgpKTsKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlID0gKnJlc3VsdC0+c3R5bGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlZjFmZDI0MDY0NjNlMzc4YTE4YWIyZWY5MDZj
YzBiNGNjMWZmZDcyLi5hNWU4NTg0ZjRhZTg3NzIzMTRmNjNmMzQxN2JjMGNkNmU0NjE3NmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xNzk1LDkgKzE3OTUsOSBAQCB2b2lkIEVk
aXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRv
IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVj
dGlvbjo6TGVmdFRvUmlnaHQgPyAibHRyIiA6IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9u
OjpSaWdodFRvTGVmdCA/ICJydGwiIDogImluaGVyaXQiLCBmYWxzZSk7Ci0gICAgYXBwbHlQYXJh
Z3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5n
RGlyZWN0aW9uKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRy
KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBXcml0aW5nRGlyZWN0
aW9uIEVkaXRvcjo6YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0
CkBAIC0yMDIzLDggKzIwMjMsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogCiAgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFy
dCwgZXh0ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0
ZDo6bWF4KHN0YXJ0LCBiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsK
LSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
YmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7Ci0g
ICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRS
YW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5n
OjpObyk7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJh
c2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOworICAg
ICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVkUmFu
Z2UucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
Tm8pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcAppbmRleCA1NmNhNWJmMGE3Zjg5MzQwZWM3YjI0MmYwMTViMGU1NzhjYzM5ZDU3Li45
ZmRhYzFkNjExOTUzOGFjZTNkNGJmOGMwZWUzMTc5ZjQ3YzhiZDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTE0MiwxNiArMTQyLDE2IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ug
c291cmNlLCBFZGl0QWN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxl
KEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0
aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1
ZSkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQs
IHByb3BlcnR5VmFsdWUpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5
U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3Ig
dGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JL
ZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlVG9T
ZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFw
cGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgYWN0aW9uKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1h
bmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5
UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBs
eVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTgyLDI3ICs1ODIsMjcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZUp1c3RpZnlSaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvbkxlZnRUb1JpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJh
bWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGlu
Z0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIoKSwg
RWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2Rl
QmlkaSwgQ1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5
bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVk
aXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJl
Y3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7Cisg
ICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlUnRs
KTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9u
OjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0
eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9j
a0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwCmluZGV4IDZmNTMyMDhmZTZjMjE0OGEwMjU2MzdiNjEwZWIzMmFkYzZmMDE4NzIuLmU0MzZj
N2ZkZTIxZGJiMjAzNGI1OWM1Yjk1Mjg5ZmEzY2ZlZDcwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCB2b2lk
IEZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBQb3NpdGlvbiYgZW5kLAogICAgIFJlZlB0cjxOb2RlPiBvdXRlckJsb2NrID0gKHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgPT0gbm9kZVRvU3BsaXRUbykgPyBzdGFydC5kZXByZWNhdGVkTm9k
ZSgpIDogc3BsaXRUcmVlVG9Ob2RlKCpzdGFydC5kZXByZWNhdGVkTm9kZSgpLCAqbm9kZVRvU3Bs
aXRUbyk7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVBZnRlckluc2VydGlvblBvc2l0aW9uID0gb3V0
ZXJCbG9jazsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9uKTsKICAgICBFbGVtZW50KiBy
ZWZOb2RlID0gZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChlbmQpOwogICAgIEVsZW1lbnQqIHJv
b3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydCk7CiAgICAgLy8gUm9vdCBpcyBudWxs
IGZvciBlbGVtZW50cyB3aXRoIGNvbnRlbnRlZGl0YWJsZT1mYWxzZS4KICAgICBpZiAoIXJvb3Qg
fHwgIXJlZk5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNFbGVtZW50Rm9yRm9ybWF0
QmxvY2socmVmTm9kZS0+dGFnUU5hbWUoKSkgJiYgc3RhcnQgPT0gc3RhcnRPZkJsb2NrKHN0YXJ0
KQotICAgICAgICAmJiAoZW5kID09IGVuZE9mQmxvY2soZW5kKSB8fCBpc05vZGVWaXNpYmx5Q29u
dGFpbmVkV2l0aGluKCpyZWZOb2RlLCAqcmFuZ2UpKQorICAgICAgICAmJiAoZW5kID09IGVuZE9m
QmxvY2soZW5kKSB8fCBpc05vZGVWaXNpYmx5Q29udGFpbmVkV2l0aGluKCpyZWZOb2RlLCByYW5n
ZS5nZXQoKSkpCiAgICAgICAgICYmIHJlZk5vZGUgIT0gcm9vdCAmJiAhcm9vdC0+aXNEZXNjZW5k
YW50T2YoKnJlZk5vZGUpKSB7CiAgICAgICAgIC8vIEFscmVhZHkgaW4gYSBibG9jayBlbGVtZW50
IHRoYXQgb25seSBjb250YWlucyB0aGUgY3VycmVudCBwYXJhZ3JhcGgKICAgICAgICAgaWYgKHJl
Zk5vZGUtPmhhc1RhZ05hbWUodGFnTmFtZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCmluZGV4IGMxOWI3NzRhZDZiMzAzYjM5NTBjNmExMTU3
NDA1Zjk0OGJhY2NhYzIuLjRlYzBiNGU1NWMzZWFmNjQwOGYyNTA1OTk2Y2ExZGNkYWE1ZjIzNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcApA
QCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgUmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgLy8gR2V0IHRoZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlzIGVkaXRhYmxlIHJvb3QsIGl0J3Mg
dGhlIHN0eWxlIHRoYXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAvLyBjb250ZW50IHRoYXQgd2UncmUg
b3BlcmF0aW5nIG9uLgogICAgIE5vZGUqIHJvb3QgPSBlbmRpbmdTZWxlY3Rpb24oKS5yb290RWRp
dGFibGVFbGVtZW50KCk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZGVmYXVsdFN0eWxlID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUocm9vdCk7CisgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShyb290KTsKIAogICAgIC8vIFdlIHdhbnQgdG8gcmVtb3ZlIGV2ZXJ5
dGhpbmcgYnV0IHRyYW5zcGFyZW50IGJhY2tncm91bmQuCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZG4ndCBhY2Nlc3Mgc3R5bGUoKS4KICAgICBkZWZhdWx0U3R5bGUtPnN0eWxlKCktPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKIAot
ICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSwgZGVmYXVsdFN0eWxlLmdldCgpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21t
YW5kLCBlZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBs
eVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHlsZS5wdHIoKSwgaXNF
bGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRD
b21tYW5kLmNwcAppbmRleCA1MDJiYzA0ZDM1M2IyODNlMTg5MmVkZTI0OGM4YmUwNjY1ZGY3MDkx
Li4wNDFmOWQxMTdkNmEwMWViMmM1ODVhOGIyMTRkMzNkY2U4ZDg4MDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3Bw
CkBAIC04OSw4ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFJlcGxhY2VSYW5nZVdpdGhU
ZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiAKIFZlY3RvcjxSZWZQ
dHI8U3RhdGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OnRhcmdldFJhbmdl
cygpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UoKm1fcmFuZ2VUb0JlUmVwbGFjZWQpOwotICAgIHJldHVybiB7IDEs
IHJhbmdlIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgq
bV9yYW5nZVRvQmVSZXBsYWNlZCkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApp
bmRleCA0ODA0ZTkwYThlMjI5Y2I5ODRkNmY0Yzc2NTFjMmY5MThiNWVjNTY1Li5mODIzOWQyYWE3
MWZmYzFmNzE1MTc2ZWEwZjUzNjZhMjYwZDk3ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBA
IHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtl
ZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQg
PSBkb3duY2FzdDxTdHlsZWRFbGVtZW50Pihub2RlLmdldCgpKTsKIAogICAgICAgICBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGUoKTsKLSAg
ICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZShpbmxpbmVTdHlsZSk7CisgICAgICAgIGF1dG8gbmV3SW5saW5lU3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7CiAgICAgICAgIGlmIChpbmxpbmVTdHlsZSkg
ewogICAgICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAg
ICAgICAgICBWZWN0b3I8UXVhbGlmaWVkTmFtZT4gYXR0cmlidXRlczsKQEAgLTc2Niw3ICs3NjYs
NyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2Vt
ZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBOb2RlKiB3cmFwcGluZ1N0eWxlU3BhbiA9IHRvcE5vZGU7Ci0gICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlv
blBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBzdHlsZUF0SW5zZXJ0
aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVBdEluc2VydGlvblBv
cy0+c3R5bGUoKS0+YXNUZXh0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFy
aXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0eWxlcy4KQEAgLTgwNCw3ICs4
MDQsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKElu
c2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCiAgICAgaWYgKCF3cmFwcGluZ1N0eWxlU3BhbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUoKSk7CisgICAg
YXV0byBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5pbmxp
bmVTdHlsZSgpKTsKICAgICBDb250YWluZXJOb2RlKiBjb250ZXh0ID0gd3JhcHBpbmdTdHlsZVNw
YW4tPnBhcmVudE5vZGUoKTsKIAogICAgIC8vIElmIE1haWwgd3JhcHMgdGhlIGZyYWdtZW50IHdp
dGggYSBQYXN0ZSBhcyBRdW90YXRpb24gYmxvY2txdW90ZSwgb3IgaWYgeW91J3JlIHBhc3Rpbmcg
aW50byBhIHF1b3RlZCByZWdpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBjMTA5ZGIwNGI3ZTcwZDgwZjFhNDhm
ODU4ZGY0ZGJjMzZhZjM3ODNiLi43ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdlMDc2YTVlYTk4Mzgy
MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5jcHAKQEAgLTEyNCw4ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRp
Y1JhbmdlPj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZy
b21SYW5nZShtX3JhbmdlVG9CZUNvcnJlY3RlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsK
KyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0Jl
Q29ycmVjdGVkKSB9OwogfQogCiBSZWZQdHI8RGF0YVRyYW5zZmVyPiBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAwMGEyNTdmMDdjNjY3MWI3
NjgzYWIzZTQ3MmYxYTlmMzU3YWQ3NzNhLi5lODllODcwYTU2YjcwOTQ2YzdhZDdlYmJjMWNlOTUx
NDBjNTIwZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAg
ICAgaWYgKGluU2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBt
X3JhbmdlLT5lbmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBj
aGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdl
IHRvIHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIHdp
bGwgd2FudCB0byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCi0gICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgY3VycmVudEVuZE9m
ZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNSYW5nZS5nZXQoKSk7
CisgICAgICAgICAgICBhdXRvIGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFn
cmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlLT5z
dGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgY3Vy
cmVudEVuZE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNSYW5n
ZS5wdHIoKSk7CiAgICAgICAgICAgICBsYXN0SXRlcmF0aW9uID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoY3VycmVudFN0YXJ0T2Zmc2V0IDwgY3VycmVudEVuZE9mZnNldCkgewpAQCAt
Mzk3LDggKzM5Nyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3Nw
ZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAg
aWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFkR3Jh
bW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0YWls
TG9jYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9IHNw
ZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigp
LCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBo
T2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFn
cmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGlu
Z09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFu
Z2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG91
dElzU3BlbGxpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zm
c2V0ID0gc3BlbGxpbmdPZmZzZXQ7CkBAIC00MDgsOCArNDA4LDggQEAgU3RyaW5nIFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dy
YW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFy
UGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFz
ZU9mZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3Jhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShw
YXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFy
dFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxpbmcgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3OWI0M2NlYjI4MzY3
Zjg4NWVhYjVlZGNhOThhMjJjZTVhMmE4ZDYxLi42NzA2M2VlMTU2MmFlMzFmMjIwMjViMzU4NTEx
ZmRmNGQ5OThhNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
QEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpcwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGNtZCA9IFR5cGluZ0NvbW1h
bmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9ucywgY29tcG9z
aXRpb25UeXBlKTsKLSAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1lLmdldCgpLCAq
Y21kLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOworICAgIGF1dG8g
Y21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0
LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOworICAgIGFwcGx5VGV4dEluc2VydGlvbkNvbW1h
bmQoZnJhbWUuZ2V0KCksIGNtZC5nZXQoKSwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50
U2VsZWN0aW9uKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9j
dW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMpCkBAIC00OTksOCArNDk5LDcgQEAgYm9v
bCBUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kVHlwZSwgVGV4dEcKICAgICBpZiAoIXJhbmdlIHx8IGlzRWRpdGluZ1RleHRBcmVh
T3JUZXh0SW5wdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5
RWRpdGluZygqdGhpcywgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRp
bmdzKCkpOwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiBzdGF0aWNSYW5nZSA9IFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKTsKLSAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3Io
KS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIHN0YXRpY1JhbmdlIH0pOworICAgIHJldHVy
biBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFu
Z2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2UpIH0pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6
OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZUZvckFk
ZGVkVHlwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IGY0
ZjlkNTBlZDEyMDVmODg0NTRiNmU4NmE0YTFiZmY0YzRkYTIxYmYuLjE3YjQ0MGU2MjdjOTc5OTEy
ZTk5YzFjNjk5YzI5OTM4YjE0YTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKQEAgLTE4OTMsMTAgKzE4OTMsMTAgQEAgaW50IGRpc3RhbmNlQmV0d2VlblBvc2l0
aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG8K
ICAgICBib29sIHRoaXNJc1N0YXJ0ID0gKHZwIDwgb3RoZXIpOwogCiAgICAgLy8gU3RhcnQgbXVz
dCBjb21lIGZpcnN0IGluIHRoZSBSYW5nZSBjb25zdHJ1Y3Rvci4KLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2Rl
KCktPmRvY3VtZW50KCksCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVx
dWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IHZwIDogb3RoZXIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IG90aGVy
IDogdnApKTsKLSAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJh
bmdlLmdldCgpKTsKKyAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpKTsKIAogICAgIHJldHVybiAodGhpc0lzU3RhcnQgPyAtZGlzdGFuY2UgOiBk
aXN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Vk
aXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQppbmRleCA1Y2NmNDQ2MjQwOTY4MTNlODY5MjdlYjMwMzkzMjQ4OWZmMDI5YjkxLi41ZGU3MTZm
YTFhYzRhOWI2OWM4NWYwOTY2YmEyOTNiZmFiYjI2YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJE
YXRhKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1lKTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1lKTsK
ICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCmluZGV4IDc1ZjU0YTEzMTA0YTM0ZjM4ZDFkNjg0YTM3ZjJlYTg5NjM0MjFkMTguLjJj
NGI2MGQwMTQzMzExMTVjYjkxMmM3MGVkOWZjYzViMjUzNGYzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC02Nyw4ICs2
Nyw4IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiAgICAgRWxlbWVudCog
cm9vdCA9IGFmdGVyUmVzdWx0cy5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKICAgICAvLyBGSVhN
RTogQWRkIHRoZSByZXN1bHQgbWFya2VyIHVzaW5nIGEgUG9zaXRpb24gY2FjaGVkIGJlZm9yZSBy
ZXN1bHRzIGFyZSBpbnNlcnRlZCwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIFRleHRJdGVyYXRvcnMu
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvRW5kID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgp
LCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKE5vZGUgKilyb290LCAwKSwgYWZ0ZXJSZXN1
bHRzLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byByYW5nZVRvRW5k
ID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
KE5vZGUgKilyb290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkpOworICAgIGlu
dCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5wdHIoKSwg
dHJ1ZSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExlbmd0aDsKIAog
ICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCBmMzdmZGU3ZmY0NWRiYjU1YTU1NjAyOTgyZWVmMmM4OWNjNGU0Yzc3Li4y
MzBmNWUzYjQxNzMyYjFlNjI4NDUwOWQxNDQ1NTg3ZGEzZGYyOTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgRWRpdG9yOjpz
ZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyCiAgICAgLy8gSWYgdGhlIHRleHQgaGFzIGxlZnQgb3IgcmlnaHQgYWxpZ25tZW50
LCBmbGlwIGxlZnQtPnJpZ2h0IGFuZCByaWdodC0+bGVmdC4gCiAgICAgLy8gT3RoZXJ3aXNlLCBk
byBub3RoaW5nLgogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc2VsZWN0aW9uU3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpKTsKKyAgICBhdXRvIHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHls
ZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAg
aWYgKCFzZWxlY3Rpb25TdHlsZSB8fCAhc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpCiAgICAgICAg
ICByZXR1cm47CiAKQEAgLTEzOCwxNyArMTM4LDE3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxp
Z25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGly
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRv
IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBuZXdWYWx1ZSk7Ci0gICAgYXBwbHlQYXJh
Z3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5w
dHIoKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBzdHlsZXMgdGhhdCB0aGUgdXNlciBjYW5ub3Qg
bW9kaWZ5IGJ5IGFwcGx5aW5nIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgogICAgIAotICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1fZnJh
bWUuZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7Ci0gICAgUmVmUHRyPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS5nZXQoKS0+c3R5bGUoKS0+
bXV0YWJsZUNvcHkoKTsKKyAgICBhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7CisgICAgYXV0byBkZWZh
dWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAg
ICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlW
aWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCiAgICAg
ZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJn
YmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgRWRpdG9y
OjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGRlZmF1bHRTdHlsZS0+cmVtb3ZlUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7IC8vIGltcGxl
bWVudHMgdW5kZXJsaW5lCiAKICAgICAvLyBGSVhNRSBhZGQgRWRpdEFjdGlvbjo6TWF0Y2hTdGx5
ZSA8cmRhcjovL3Byb2JsZW0vOTE1NjUwNz4gVW5kbyByaWNoIHRleHQncyBwYXN0ZSAmIG1hdGNo
IHN0eWxlIHNob3VsZCBzYXkgIlVuZG8gTWF0Y2ggU3R5bGUiCi0gICAgYXBwbHlTdHlsZVRvU2Vs
ZWN0aW9uKGRlZmF1bHRTdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6Q2hhbmdlQXR0cmlidXRlcyk7
CisgICAgYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGRlZmF1bHRTdHlsZS5wdHIoKSwgRWRpdEFjdGlv
bjo6Q2hhbmdlQXR0cmlidXRlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGdldEltYWdlKEVsZW1lbnQm
IGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2UsIENhY2hlZEltYWdlKiYgY2FjaGVk
SW1hZ2UpCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KIAogICAg
IFBvc2l0aW9uIGJlZm9yZUltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBv
c2l0aW9uSXNCZWZvcmVBbmNob3IpOwogICAgIFBvc2l0aW9uIGFmdGVySW1hZ2VQb3NpdGlvbigm
aW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKLSAgICBSZWZQ
dHI8UmFuZ2U+IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVu
dCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOwotICAgIGNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UuZ2V0KCksIHBh
c3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwor
ICAgIGF1dG8gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50
KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7CisgICAgY2xpZW50
KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5wdHIoKSwgcGFz
dGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CiAK
ICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNDYyMmY4NjZiZDIwNjExODVmMzI5NTVlZTdl
NzliZTFkNjkyZjI1Zi4uM2ZlNmY0ZTdlNDUyMTI1YjUxZmExZmM3ZDQ4MDYxYzJjNDZiYjc3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTYwLDggKzE2MCw4
IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxG
cmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNB
ZnRlckFuY2hvcikpOwotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOworICAg
IGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5v
ZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9z
aXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlv
bjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpOwogCkBAIC0xNzYsOSArMTc2LDkgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGJvb2wgY2hvc2VQbGFp
blRleHQ7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNv
bnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5U
ZXh0KSkgeworICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJD
b250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgcmFuZ2UuZ2V0KCksIHRydWUsIGNob3Nl
UGxhaW5UZXh0KSkgewogICAgICAgICBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQo
Km5vZGUsICpmcmFnbWVudCk7Ci0gICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJh
Z21lbnQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpCisgICAgICAg
IGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLnB0cigpLCBFZGl0b3JJ
bnNlcnRBY3Rpb246OlBhc3RlZCkpCiAgICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21l
bnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVi
b2FyZCksIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsK
ICAgICB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9t
UGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogCiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1l
bnQmIGltYWdlRWxlbWVudCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOworICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICgh
YXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzMWUxOGE1MWM4YmJiNDllYTE0NjQ3ZmY0NDFjNTQ3
MGFlMjkwNGFiLi4wZTFjYzIyNmVjNWMxMDJmNGY3M2QwNDExNWZkNzc3OWYxZTdhOGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RhdGljIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0FuZElubGluZURlY2woTm9kZSYg
bm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBlbGVtZW50ID0gZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRv
IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsKICAg
ICBzdHlsZS0+bWVyZ2VTdHlsZUZyb21SdWxlcyhlbGVtZW50KTsKLSAgICByZXR1cm4gc3R5bGU7
CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRQ
cmVzZW50YXRpb25hbChjb25zdCBOb2RlKiBub2RlKQpAQCAtMTIxMSw4ICsxMjExLDggQEAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVu
dChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gQmFzZWQgb24gdGhlIGRvY3VtZW50YXRp
b24gSSBjYW4gZmluZCwgaXQgbG9va3MgbGlrZSB3ZSB3YW50IHRvIHN0YXJ0IHBhcnNpbmcgdGhl
IGZyYWdtZW50IGluIHRoZSBJbkJvZHkgaW5zZXJ0aW9uIG1vZGUuCiAgICAgICAgIC8vIFVuZm9y
dHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIHBhcnNlci4K
ICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBoZXJlIGJ5IHBhc3NpbmcgaW4gYSBm
YWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUgZnJhZ21lbnQuCi0gICAgICAgIFJl
ZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUo
b3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZh
a2VCb2R5LmdldCgpKTsKKyAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6
Y3JlYXRlKG91dHB1dERvYyk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3Ry
aW5nLCBmYWtlQm9keS5wdHIoKSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAi
dGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0Ojpj
cmVhdGUob3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDA0MzQxMjkwMmE0MGZlNDE3
MWI3NjUyZDk4YjBhM2UyZTI4ZDUxNTcuLjg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJl
ZmEwOWI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cApAQCAtMjE3LDkgKzIxNyw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKIHsKICAgICBpZiAobV92YXJpYWJs
ZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMgPiBtX2J5dGVzTG9hZGVkKSB7Ci0gICAgICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRl
ZCk7Ci0KLSAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsKKyAgICAgICAgbV9yYXdEYXRhID0g
bV9yYXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKICAgICAgICAgbV90b3RhbEJ5dGVz
ID0gbV9ieXRlc0xvYWRlZDsKICAgICB9CiAgICAgY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBkN2UyYjc1YTQ1MzEyMGIwMmQ3
Yzc0MmQ0NjBmNDZhNGRkNTk5NDhlLi5kNzgxMTBjYzllZGI5ZGEwMDRkNDE1ODRhYzQ5ZGJhZTAw
MjRlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBh
cnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKIAogc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGly
ZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRo
KCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0
b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVy
biBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAz
NTQyOWYxYzg2YjBjMWVhOTk3OGZkYTRjZjlhZTA0ZWI0M2YwZTk1Li5iOGIwNGFjYjk2NTU2NzBi
MjQ4Y2M4N2NkMWRhOGM2ZDc2NTgzYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXllciop
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSkKIHsKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAKICAgICAvLyBEb24ndCBz
ZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVlIHdpbGwgc2V0IGl0IGluIEdlbmVy
aWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5nIGl0IGhlcmUKICAgICAvLyB3aWxs
IHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBoYXMgYmVlbiBtYXJrZWQgZm9yIGRl
bGV0aW9uLgpAQCAtNjQ0NSw3ICs2NDQ1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjcmVh
dGVNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzPiBtZWRpYUNvbnRyb2xzID0g
TWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGF1dG8gbWVkaWFDb250cm9s
cyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBpZiAoIW1lZGlhQ29u
dHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKaW5kZXggZmY5NmY0ZjI0MzViMDk4ZTA2NjYyZjMzY2MyMDVlMDAwYjM3
OTE2ZC4uMjI0ODA3YTI2MzRmMDFlOTMzNDllNzdhOTNjZjQ1MDFkYWZkMWUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00NzMsOSArNDczLDkgQEAgSFRN
TFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMo
KSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVJlZlB0cjxTdHlsZVByb3BlcnRp
ZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCitSZWY8U3R5bGVQ
cm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogewot
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpjcmVhdGUoKTsKIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCk7CiAgICAgc3dpdGNoIChjZWxsQm9yZGVycygpKSB7CkBAIC01MTEsNyArNTEx
LDcgQEAgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hh
cmVkQ2VsbFN0eWxlKCkKICAgICBpZiAobV9wYWRkaW5nKQogICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlQYWRkaW5nLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9wYWRk
aW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAKLSAgICByZXR1cm4gc3R5bGU7Cisg
ICAgcmV0dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdhMTk4MWEz
OTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBI
VE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAgIENlbGxC
b3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVz
PiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVh
dGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0
Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRhMGJkYmNl
MzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4NTUwNjI5
ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBAQCBTdHJp
bmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0
cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBhdXRv
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1cm4gb3Jp
Z2luLT50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYWI4OWZmOWU4N2Q1ZGIzODg3OTZiOTQ1
OTJjNzFjOTlkNzQ1OTkyOC4uY2YxYjUzYmRiMjNmNzk4ZmIyMTM4Yjk2ODk1MDQ4OTE5YmM0MjE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmCiAg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhl
LXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50Rm9yQ3Vy
cmVudE5vZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25lckRvY3Vt
ZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZh
Y3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGluc2lk
ZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1dG8gZWxl
bWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2FsTmFtZSwg
b3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwg
dHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAoYXV0byog
ZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVyRG9jdW1l
bnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKaW5kZXggODU0ZWE3N2ZhOGM3NDcwZmZkYmZlNTI2OTVkMmFmMzQ1NjFj
YTYxNi4uMGIxNDY3OWJjY2UwMTNmYjM4NWVhNWYzOTBhODI0NmUxYjNmNjRjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclMKICAgICAg
ICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAgLy8g
c3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5v
dCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBmb3IgdGhl
IHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAg
ICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxLjAsIGZh
bHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywg
Rml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDguLjM1YzI5
MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3Vl
VGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7Ci0g
ICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0ZSgpOwor
ICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5zZXRTdGFy
dFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9jdXJyZW50
RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9TdHJpbmco
KSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0aW5ncyht
X2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7CisgICAgbV9j
dWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAg
bV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQyOTQyYmU4
NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTExNSw3
ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2aW91c1Np
YmxpbmcgPSBub2RlLnByZXZpb3VzU2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUg
c2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1f
ZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
bV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKICAgICAg
ICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgpID8gbm9k
ZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsKICAgICBl
bHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9y
dDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAgICAgaWYg
KGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCkuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCi0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCAq
ZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9yLnJlcGxh
Y2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzLmNwcAppbmRleCA5YjY4YzRiMDVjM2I2M2VhMWVmZjcxYjAxYWU5YjE1OWZiY2U2N2Qz
Li44YjY3NjJmZDU5NWE0M2ExMzFlZTBhNzVlMWMyMDY3ZDAwMmFjMzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVj
dG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRD4obV9jb250ZXh0KSkgewogICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3duY2FzdDxD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAoYXV0byYg
c3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogCiAgICAg
ICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJzZXRUcmFu
c2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5zZm9ybSkp
OwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhGb3JLZXko
Imdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMzLDcgKzUz
Myw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4g
SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYgKE9wdGlvbmFsPFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXM+IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0V2ViR0xCYXNlLmdldENv
bnRleHRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHdl
YkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIGF1dG8gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQt
PnNldEJvb2xlYW4oImFscGhhIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzLT5hbHBoYSk7CiAg
ICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiZGVw
dGgiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmRlcHRoKTsKICAgICAgICAgICAgIHdlYkdM
Q29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJzdGVuY2lsIl9zLCB3ZWJHTENv
bnRleHRBdHRyaWJ1dGVzLT5zdGVuY2lsKTsKQEAgLTY0Myw4ICs2NDMsOCBAQCBSZWY8SlNPTjo6
QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3Qg
U3RyaW5nJiBuYW1lLAogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRlcnNEYXRh
KSk7CiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVzKSk7CiAKLSAgICBS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwotICAgIGFjdGlvbi0+YWRkSXRlbShp
bmRleEZvckRhdGEoV1RGTW92ZSh0cmFjZSkpKTsKKyAgICBhdXRvIHRyYWNlID0gSW5zcGVjdG9y
OjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAg
YWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YSh0cmFjZS5wdHIoKSkpOwogCiAgICAgcmV0dXJu
IGFjdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4ZTFjNDgyOWRmZjViZWFjMWQ2ZmMw
MzIwOWNlYmZkMGM0NTA1Nzc0Li5hMGMzODg3YTZlZmMyYTA1MWMzYTM1MzE0N2Q3MTM2Y2Y4YWM4
YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVu
dCgpLCBtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2JsYW5r
Il9zLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRS
ZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3csIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAKICAgICBib29sIGNyZWF0ZWQ7
Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJh
bWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsK
KyAgICBhdXRvIGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZy
YW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQxOWYyYWM4NTc2YjI5MmNjY2M3YWM5ZWMz
MDgzMzQ0MTk4ZWUwZTEuLjY4NzE2NTRjZWQ4N2MxY2U4YzI5ODM2ZjgxZDdmYzg0YTMzNWI3ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1
bGVMaXN0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAgICAgaWYgKCFzdHlsZVNoZWV0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4g
bGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGxpc3QgPSBTdGF0
aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4mIGxp
c3RSdWxlcyA9IGxpc3QtPnJ1bGVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9
IHN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBsaXN0UnVsZXMu
YXBwZW5kKHN0eWxlU2hlZXQtPml0ZW0oaSkpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRo
UHJvcGVydGllcygpIGNvCiAKICAgICAgICAgYXV0byBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKIAotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVy
dHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQorICAg
ICAgICBhdXRvIHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0
eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKQogICAg
ICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTY5NiwxMSArNjk2LDExIEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVy
dGllcygpIGNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNl
dChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0
eU5hbWUsIHByb3BlcnR5LmNvcHlSZWYoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
SW5hY3RpdmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0
YXR1cyhJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9w
ZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2Fs
UHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpbXBsaWNpdCA9IG1fc3R5
bGUtPmlzUHJvcGVydHlJbXBsaWNpdChuYW1lKTsKQEAgLTEzMzIsMTIgKzEzMzIsMTIgQEAgYm9v
bCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICBpZiAoIW1fcGFy
c2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBS
ZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoKTsKKyAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZSgpOwogICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0
IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVy
RG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHls
ZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNv
dXJjZURhdGFSZXN1bHQuZ2V0KCkpOwotICAgIENTU1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3Bl
Y3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRl
eHQoKSwgaGFuZGxlcik7CisgICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNv
bnRleHQsIG5ld1N0eWxlU2hlZXQucHRyKCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBo
YW5kbGVyKTsKICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEoV1RGTW92ZShy
dWxlU291cmNlRGF0YVJlc3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPmhh
c1NvdXJjZURhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZmRkNWM3ZTA1NTIxYTkxNmU0
NDM5OTAyMjFlMGNhYzJkNjU1NDkwMC4uZTM4ZDFhMzgzZDMzOTQyMTRiN2JhOGJmNDA1NmZhZjgz
NGJhMDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1Jl
bmRlcmluZ0NvbnRleAogCiAgICAgY29udGV4dC5jYW52YXNCYXNlKCkuYWRkT2JzZXJ2ZXIoKnRo
aXMpOwogCi0gICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzID0gSW5z
cGVjdG9yQ2FudmFzOjpjcmVhdGUoY29udGV4dCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0
b3JDYW52YXMuc2V0KGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52
YXMpOworICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUo
Y29udGV4dCk7CisgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3BlY3Rv
ckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKIAogICAg
IGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC00NTAsNyArNDUwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChD
YW52YXNSZW5kZXJpbmdDb250ZXgKICAgICBpZiAobV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1l
Q291bnQpIHsKICAgICAgICAgUmVjb3JkaW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwogICAg
ICAgICByZWNvcmRpbmdPcHRpb25zLmZyYW1lQ291bnQgPSBtX3JlY29yZGluZ0F1dG9DYXB0dXJl
RnJhbWVDb3VudC52YWx1ZSgpOwotICAgICAgICBzdGFydFJlY29yZGluZygqaW5zcGVjdG9yQ2Fu
dmFzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1
cmUsIFdURk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOworICAgICAgICBzdGFydFJlY29yZGluZyhp
bnNwZWN0b3JDYW52YXMuZ2V0KCksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5p
dGlhdG9yOjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDU4MTczYWNhM2Y3NGJjMmYzOTM0NjU2NzQx
ZTUwNTFlNGYxMTJhYzguLjk2YmM4N2VmOGMxYWZkODk3YmQyNmJmMjI2OWU0MTA1NTk0ZGVhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNzYsMTQgKzE3NiwxNCBAQCBzdGF0aWMgUmVm
UHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYgaWRiS2V5UAogICAgICAgICByZXR1cm4gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShL
ZXlQYXRoOjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CiAKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgIFJlZlB0cjxL
ZXlQYXRoPiBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBl
OjpTdHJpbmcpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3Jl
YXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpTdHJpbmcpLnJlbGVhc2UoKTsKICAgICAgICAg
a2V5UGF0aC0+c2V0U3RyaW5nKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAg
IH0sIFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpIHsKICAgICAgICAgYXV0byBhcnJh
eSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYg
c3RyaW5nIDogdmVjdG9yKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKLSAg
ICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBl
KEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8ga2V5UGF0aCA9
IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVhc2Uo
KTsKICAgICAgICAga2V5UGF0aC0+c2V0QXJyYXkoV1RGTW92ZShhcnJheSkpOwogICAgICAgICBy
ZXR1cm4ga2V5UGF0aDsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyYjYwYzQ1Yjc4ODU5OGEw
NjU5YjhmYWRjODU3NmIzOTFiODRlNWQxLi41YzFjYTkyOTQwZmFkZDJlZmY2ZmM1MDczMmE4ZDJj
MzlkYTM2ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmFyY2hpdmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRh
dGEpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCiAgICAgRnJhbWUmIGZy
YW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUg
PSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1haW4g
ZnJhbWUiX3M7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggMTdhYWQ0ZGIyZjJhMmUzYjA1MzVkYjZmZGE2MTAzY2E5MWQ5NGM3NC4uYTI4
ZWM2OGNkMzlkNDQ1MTRjZTcyNjZhODM3OGJmMTMzYjZjYWJmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM4MywxNCArMzgzLDE0IEBAIGNsYXNzIEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwg
OiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4g
c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY29weShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0
b3JhZ2VOYW1lc3BhY2UpOyB9CisgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQ
YWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2Up
OyB9CiAgICAgfTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZpbmFs
OwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZp
bmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2lu
JiwgdW5zaWduZWQpIGZpbmFsOwogfTsKIAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVy
IGZpbmFsIDogcHVibGljIFVzZXJDb250ZW50UHJvdmlkZXIgewpAQCAtNTEzLDIyICs1MTMsMjIg
QEAgdm9pZCBFbXB0eUVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYpCiB7
CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitS
ZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWdu
ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkNjczZTkwOTFhNGIx
OWMxNzU0ZGZmMTNlMjc0MTE5ZTRjYWRkYTUuLjQ4MGZiMmExZjc1YjNiZmM1MDI1NWViMmZmMDdk
MDUwZmIyOTA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTMz
OCw3ICsxMzM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0
JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChuZXdVUkwpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHJlZmVycmVyKTsKKyAgICAgICAgYXV0byByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKTsKICAgICAgICAgYWRkSFRUUE9yaWdp
bklmTmVlZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsKICAgICB9CiAg
ICAgaWYgKCZtX2ZyYW1lLnRyZWUoKS50b3AoKSAhPSAmbV9mcmFtZSkKQEAgLTM0OTksNyArMzQ5
OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRp
b25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiAKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9u
KSB7CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewotICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAg
ICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgICAg
IGlmICghb3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7CkBAIC0zNjQ5LDcgKzM2NDksNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFt
ZUxvYWRUeXBlIGxvYQogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwotICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKKyAgICAgICAgYXV0byBzZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVmZXJyZXIo
KSk7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdp
bi0+dG9TdHJpbmcoKSk7CiAgICAgICAgIGFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lm
TmVlZGVkKHJlcXVlc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZTFkNjBlYjkwZTdiNzM0OTdjMWFhZGMxYjM0ZWQ3YzM1
YzQ2YWU2ZS4uNGJhZDE4M2UwODU0OGM0N2RkZDk4MjI5ZWU5ZTYyYjRlYjQ5YjVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlcgogICAgIFN0cmluZyBtb2RlID0g
bG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdv
cmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IFN0cmluZygpKTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBN
ZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAm
JiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgcmVzdWx0ID0gcnVu
TG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA1ZmQz
OWJlN2JkMTQwYmVlNDJiOTFhMjhhZjg2ZGY3NGE3ZTc0ZDcyLi5jM2I1ZTNlMWYyMjkzNDEwNjY2
MjYwOWI0YTAxMDM5YzIwZTkxMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xMzEsMTYgKzEzMSwxNiBAQCB2b2lk
IE1IVE1MUGFyc2VyOjphZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJlc291
cmNlLCBNSFRNTEFyY2hpdmUqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBzdWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CiAgICAgc3ViZnJhbWUtPnNldE1h
aW5SZXNvdXJjZSgqcmVzb3VyY2UpOwotICAgIG1fZnJhbWVzLmFwcGVuZChzdWJmcmFtZSk7Cisg
ICAgbV9mcmFtZXMuYXBwZW5kKFdURk1vdmUoc3ViZnJhbWUpKTsKIH0KIAogUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwgY29uc3QgU3RyaW5nJiBlbmRPZlBhcnRCb3VuZGFyeSwgY29uc3QgU3RyaW5n
JiBlbmRPZkRvY3VtZW50Qm91bmRhcnksIGJvb2wmIGVuZE9mQXJjaGl2ZVJlYWNoZWQpCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnQgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5k
YXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBp
ZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJp
bmFyeSkgewpAQCAtMjExLDcgKzIxMSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRl
bnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRv
IGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAg
ICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUs
IHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9u
cyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
MjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2Vu
ZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKaW5kZXggZWU5N2IyYmQ0ZmQwNzIyYjViYTNiZDVmYWVlMWJjNmRmYzE2
NjYyMC4uZjg2MzEzNTJjMjIwZGQxZmI1NDU4MTI1N2JlNTY4NTk4ZjNmNmQ5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMTYsMTEgKzIxNiw4
IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGlt
YWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQg
PSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIHJlbW92ZUltYWdlRnJv
bUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50
cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1h
cEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0g
ICAgaWYgKCFiaXRtYXBJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBj
YWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1h
Z2UuZ2V0KCksIHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8g
Yml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRy
KTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4o
dXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bik7CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQo
KSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVk
U2l6ZSgpKTsKQEAgLTU0MSw3ICs1MzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNv
dXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgICAgICAgICAg
cmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVybCgp
KTsKKyAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9yaWdpbi0+ZXF1
YWwoJm9yaWdpbikpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQo
JnJlc291cmNlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDVm
YWM4N2E1Y2ZjOGE3YWFmMDI4MDJkOGVmYTUxYTVhYjBkODI5NmMuLjE5ZjhmNTI3NWFjZTZiYTI3
ZmM0NTJjNmZmN2I2OGMzNzM1MWMzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTE0ODQsNyArMTQ4NCw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRj
aGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAKICAgICBib29sIGFs
bG93Q3Jvc3NPcmlnaW4gPSBmcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5HZXRN
YXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCgpOwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0
PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVM
aXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcnVsZSA6
IG1hdGNoZWRSdWxlcykgewogICAgICAgICBpZiAoIWFsbG93Q3Jvc3NPcmlnaW4gJiYgIXJ1bGUt
Pmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTQ5NCw3ICsxNDk0LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNo
ZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKICAgICBpZiAocnVsZUxp
c3QtPnJ1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBydWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIFJlZlB0
cjxXZWJLaXRQb2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFn
ZShOb2RlKiBub2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKQEAgLTIyNDUsNyArMjI0
NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVy
IGZyYW1lIGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRp
ZmZlcmVudCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVy
ZW5jZXMgYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3Jl
YXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93
KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdp
bmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3Jl
YXRlV2luZG93KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVx
dWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAg
ICAgICByZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDc5NDJhMGRiZTBiYTY3ZTQxMjczMTY0MmNjZTA3NzAzYzY0
YWIxMDkuLmVkM2ZlOTM3YzlhMjZkMWI3OTkxNjQyNmI3ZmMyMjM1NzMwYmUzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UgogCiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5k
KTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1
ZSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5k
b2N1bWVudCgpLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGU3MjUxZWUxYTE1ZmUyZTFkODAzZmVj
ZTU5OGU0YzNiZjJjNjNiYTYuLjlmMzNmM2U2ZThkOTY5OWExYzQwNjhmZDY5YWM2MTFlNmVlMWRk
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5n
JiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhh
cHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAg
ICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2Ug
aXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBo
YXBwZW4uCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNo
ZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVl
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCmluZGV4IDkwMDU1MTYwNjk5NTUzNTgzYmVlMDIzYmVjNjM4YjkyZDAx
NTk0OTYuLmM1NzFhZjA2YWZlODY5NWE0NWRkN2Y0ZGFjY2FjNTRhZTMwYzkxZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKQEAgLTE5MSwxMSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9u
cyBibGVuZEZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAg
ICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVu
ZChibGVuZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0
eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8g
dG9PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50
aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21P
cCA/IGZyb21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2Nm
ZDMxNjQ4ODAwZTczODE2NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3Zjdl
NDNiY2M1NzAyYjAyNjFmYTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBA
IC04MSwxNCArODEsMTQgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmlu
aXRGb3JTeW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50
PiBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlz
LCB1cmwpOworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNp
emVkRG9jdW1lbnQodGhpcywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1v
ZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRv
Y3VtZW50LT5jcmVhdGVET01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7Cisg
ICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1l
bnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVs
ZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBh
dXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8g
Ym9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAo
IXN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3R5bGVBdHRyLCBzdHlsZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1l
OjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0
byogbWFya2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3Vt
ZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAg
ICAgLy8gRmlyc3QsIGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAg
ICAgaWYgKHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVu
dCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpk
b2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAg
IFN0cmluZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRp
b25zKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVj
ZWRpbmdUZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVu
dCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNl
dCgpKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0
KCkpKTsKLSAgICAgICAgICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4
dChyYW5nZUZvck1hcmtlci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2Vy
ID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJs
ZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAg
ICAgICAgc2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtl
ci0+YWx0ZXJuYXRpdmVzKCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8v
IERldGVybWluZSB0ZXh0IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhl
ciBiZSB0aGUgdmlzaWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAg
TlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAg
ICB9CiAKICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2Vy
LgotICAgIFJlZlB0cjxSYW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRl
ckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAg
IGF1dG8gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJv
b3QsIHJvb3RDaGlsZENvdW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBw
bGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVy
TGFzdE1hcmtlci5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlv
biA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwg
dGV4dEFmdGVyTGFzdE1hcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
U2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVk
Zjk1MzgwYWM5MjFiMTVmMGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJm
YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRP
bkNvbXBsZXRpb246ZmFsc2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAg
ICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0
PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlv
bkZvcktleSgiRmFkZUhpZ2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRv
IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5p
bWF0aW9uLmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBs
YXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWlu
ZWRTZWxmLT5kaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktl
eSgiRmFkZUhpZ2hsaWdodE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0
Zm9ybUFuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlv
bi5nZXQoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9y
bUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZv
cm1BbmltYXRpb24uZ2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUw
MDk0OGY1MmE1MDA4OWQzNzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2Vm
OTE5YzJkNjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0
U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRv
IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1
ZmZlcikgewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUg
eCAlbHVcbiIsIHNpemUoKSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmlu
ZGV4IGY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3
ZTk4Yjk1NmEwYzBjNWIwNDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBI
UlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXpp
bXV0aCwgaW50IGVsZXZhdGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVu
c2lnbmVkIHN0YXJ0RnJhbWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2ln
bmVkIHN0b3BGcmFtZSA9IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQ
dHI8QXVkaW9CdXM+IHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpj
cmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJl
ZlB0cjxBdWRpb0J1cz4gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29u
dmVydGluZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1w
bGVSYXRlKTsKKyAgICBhdXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlv
QnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwor
ICAgIGF1dG8gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGlu
ZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRl
KTsKICAgICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+
Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRF
YXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJp
Z2h0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9T
aW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuY3BwCmluZGV4IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEu
Ljg5NzdmMzk4NjlkNmI2NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVu
c2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
Ly8gV3JhcCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhl
IHNvdXJjZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpj
cmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1
ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0Ogog
ICAgIGJ1cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNk
ZDUxMDE1YzE2Mjc4NGNkMjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5
NTNmZTlmNGJhYTlhNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5j
cHAKQEAgLTM1Miw3ICszNTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6
Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vy
cm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlv
QnVzPiBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6
ZSwgdHJ1ZSk7CisgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVs
cywgbV9jaGFubmVsU2l6ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9z
YW1wbGVSYXRlKTsKIAogICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9m
cm9udExlZnRCdWZmZXJzLmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwCmluZGV4IDJhZjUxOGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0
MTE1YWMyOTZlODJmMzNiZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBA
IC0xODAsNyArMTgwLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0
ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hh
bm5lbENvdW50ID0gbWl4VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBD
cmVhdGUgQXVkaW9CdXMgd2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJl
ZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3Vu
dCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRl
KGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1w
bGVSYXRlKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVS
YXRlKSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUg
bWl4VG9Nb25vIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRl
eCAxZmRmZWNkYTcxYzYwNGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3
ZTUwYjQwNGNmZDI2MzRmZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxJY29uPiB7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNy
ZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQor
ICAgIHN0YXRpYyBSZWY8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEljb24oaEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDll
ZDJkZjI5YTguLjEzZjE4Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAg
ICAgV2ViVlRUCiAgICAgfTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFu
ZFRleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAKaW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBk
ZDY5NC4uYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCkBAIC0xODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Ugog
ICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoK
ICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBr
ZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBz
aXplb2YoVUNoYXIpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0
cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtl
eVVSSVNpemUsIDEpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6
OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJ
U2l6ZSwgdHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5Ojpj
cmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAt
MTkwOCw4ICsxOTA4LDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYK
IAotICAgIFJlZlB0cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9
IFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOwot
ICAgIG1fb3duZXItPm1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKGF2UmVxdWVzdCwgcmVzb3VyY2VM
b2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBtX293bmVyLT5tX3Jlc291cmNl
TG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAg
cmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhh
MzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMg
ZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50
KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNy
ZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJl
bnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCA3YjkzNWJmMWIzMjY2NTg1NjdjODJlN2FhNGU5YjljZmY2Njky
YzIwLi5lMThmZWQzM2Q4MzhhZWRjMDYzMzI5ZWVmZmFmY2U4ZGRhNjdhYjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxS
ZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3Qs
IEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBr
ZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50Pihl
bmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3Rh
dGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5i
eXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0Rh
dGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFW
QXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBD
RlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxv
YWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7
CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVl
c3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0
TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEy
YTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0
YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVi
bGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2Rm
ZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
PiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50
KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwg
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQ
cml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNl
UHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQs
IGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2
YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAt
NzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3Rh
bmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7Cisg
ICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VC
dWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9r
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggNTNkZmYyMmQxOWM4NzBkODU2ZTVmOGY1MmI3ODBhM2YyMWQzZDkwOC4uNzk4
MGQ1NGZlMWQ1Mzg2OGNlMWZjNzcyMjg4N2IzODM2OWNiYTg5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3
OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBj
bGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZm
ZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRp
YyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsK
IAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KaW5kZXggYTJlMDdjZjZmMzIxN2IzYWRmODk1YzkyYjAyMzk0OTQyOTQ1ODVjMS4u
OWFiYWQ3ZmExYzk2NGUxYTNlNWYyMmY1OWZkNDNhZGNjYmQxN2ZhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQz
MCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRy
YWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpD
KHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVh
dGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFW
Rk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJX
YXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwg
Q0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUo
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFW
QXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9U
cmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAg
ICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlk
ZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZN
b3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlk
ZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRp
YUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAg
ICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1
ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZv
LnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1
ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBp
bmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJh
Y2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3Jp
cHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAg
ICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2
ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFW
QXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkp
OwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAppbmRleCA4ZDFmMWI0Y2RhYTAwNTMzNzdmOTU0OWNhZmM3MWJiMzM1MzlkNjAzLi40MzJmMGI4
Yzg0NjQwZmE2YzU0OGVlZjE4Yjc0NTE4NTY0YTdkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQs
OSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QK
ICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxl
R3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9s
bGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBn
cmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXll
cihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRp
YmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9
IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGls
ZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
aW5kZXggNTYyZDhiYjE0NTE4MDk1MTUxZWMxOWRjMjFhODk4YzgzNzhhMTBiYi4uNTc5N2U4NjQ0
MDgwYWYxZjA2NGQwNmQzYzhhZTY4NzE4OTIwZDE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsK
IAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7Cisg
ICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBU
aWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1
cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkx
YWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMz
YzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYs
NyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVm
UHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlm
ICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQog
ewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NB
Q0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmll
d0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0
YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNj
Mjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJN
ZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwg
ZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9y
LnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdp
Z2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigp
OwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0
KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5w
dHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAg
ICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZl
ci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGUwMjcyNDcxZTNjNTJiYjA3M2UxZTUxNzQxYmNhMWEwODliYWM1MzguLjBmMDVl
YjkxOTlkYmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBH
U1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4
dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3Ry
ZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNr
KTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3Bs
YXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0
cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
bWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7
CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlk
ZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRl
b1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFj
ay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQo
KSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVh
bXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAg
ICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFr
ZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJh
Y2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwog
ICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5
LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4
dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1J
ZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAg
ICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJl
ZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAg
fQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEy
OTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5U
OgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsK
ICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1Bs
dWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJn
b3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxh
eWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAg
ICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRF
X1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5n
UGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAg
ICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxi
YWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwo
Z3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3Np
bmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAg
ICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJp
bmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24u
Z2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXll
ci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4
KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNz
aW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyAr
MTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1Rz
U2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RN
cGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0
cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAg
aWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49
IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1i
ZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAg
ICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4y
IFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAg
VVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRU
b0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAg
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsK
ICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAg
ICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBu
ZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFj
MjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5Yzhh
NTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+
IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsK
KyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxl
LmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggOWZiZTdiZmQ2ZjQ4MjUyMTYxZGY0NzBjZTg1
ZWQ0ZjI0MzBkZWE1MS4uYWYwMWZkZWViNDBkNGNiOTVjZTlmNTJjNjM1MzRjOGI1MjJkNmJjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2
b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwor
ICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3Jl
YXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAg
ICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJl
c2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQ
aXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAg
ICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkp
OwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgq
bWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBs
ZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5
ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZl
ci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5y
ZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAg
ICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAg
ICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlE
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICgh
cGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
b2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBh
cnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29s
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNl
dCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRh
ID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBh
cnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6
ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0
ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0
aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6
cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zm
c2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdm
Yzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0
ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1
NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQog
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9w
ID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0
byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50
aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3Zl
KGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0
NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNk
ZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRl
KFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQp
OworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1
cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRl
eHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNf
Y2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4
dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdh
NThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5
Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0
aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlm
IChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBl
bmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9u
ID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYg
KHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBw
ZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09w
ZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9u
ID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6
IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3MTkwMzJmZTY3ZDE2ODQyZDdjYzc5NmMwMTA5Mjc1
ZWQ0NDMyYmEyLi4xODcwYmIxNjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1h
Z2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAg
IC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRo
ZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRo
ZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9k
YXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGly
RW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRh
KCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0s
IG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNv
ZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7
CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9u
bHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2
NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJk
NDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXph
dGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNp
emVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAg
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7
Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tU
cmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9m
ZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9
IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9j
a1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0Jv
eCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gu
bGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAxYmUxYWU1N2JlMWU5MTA5
MmZlNjYxYWUyMzY3MjkwNDEwYWZjYzNkLi45ZmJhYzAwMjA0NzhlOWIzNTBkZTdmZjRkNDdjOWZl
MzU5NDYwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAt
MTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVO
b25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZp
bmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAg
c3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0Jv
eCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkp
OyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2Rl
YygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmlu
YWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94Owog
fTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVk
aWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBh
cmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkg
JiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkg
ewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
c2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0
YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBN
b2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGgg
PiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0
cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3Ry
aW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAo
dHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9j
a0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9j
a0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNh
bXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tT
YW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAg
ICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYTI2NGZiNWUwN2Q0OTZh
NzA5NjIyYzBiZmNmMTM5ZmY4OTVmMDQ3Zi4uYTNlNjVkYmRiZWNjOTQ0NjlhMWIwZTFiMWY3NzBi
MjFkNGJmYzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tN
ZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1f
bWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkw
ZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRj
NjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1Ry
YWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0
VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2Nr
VHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRl
KGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJh
Y2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBw
dWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJv
eCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQor
ICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1Ry
YWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRl
KGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggOWQwNTcz
YWZlM2I0NjcwOGY2MTI2ODA1NDIxNWEwZWQ2YWIyZGJjZi4uMzY1OTBlYmFmNGIzOWE1YjkzZjFh
MTgwNmUxNmNhZmQ1ZWNlZTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxG
b3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3
YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRl
eCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUw
ZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9y
YWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9i
c2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2
ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2ll
U3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3Rv
cmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcx
YzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3
MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0
LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVT
dG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9y
YWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tp
ZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEw
MTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFw
cGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVt
LmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsK
ICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291
cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAg
ICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RF
TVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZd
IChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAx
NjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNl
OTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsx
NjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8
SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rp
b25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlv
bmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+
IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5h
dGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0
aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9u
RGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBS
ZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFy
eShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRp
Y3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5E
aWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0
OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1
cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAg
ICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1f
cG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVw
TWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3Bv
cHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBv
cHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEz
Y2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNo
UG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9w
b3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2
ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5k
ZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhl
bHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBk
b2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGlu
Z0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3
LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0
cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQg
LSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwog
ICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAw
eDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ry
b2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1
LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkK
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRl
ZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJH
cmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRp
ZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUp
LCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJH
cmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAg
ICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywg
MTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4
LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJl
bGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBw
ZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhl
aWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQog
ICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3Np
dGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAg
ICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAg
UmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0p
OwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcs
IDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDEx
OCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBD
b2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBS
ZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFk
aWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5n
UG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9u
ICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFk
aWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0Lngo
KSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7
CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwg
MTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUs
IENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50
KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgp
OwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9u
U3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50
J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1l
bnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUg
cm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwog
ICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAg
IHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAK
QEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFp
bmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWlj
b25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25J
bWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25J
bWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5
NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApA
QCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8
ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlz
IHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAg
ICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShB
ZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7
Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1t
eUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRl
KEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVl
KTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVt
bXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBp
bmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZl
Y3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApp
bmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0
NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxT
dG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdl
QXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2lu
ZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsK
IH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VB
cmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywg
UmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHko
JndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAg
ICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1f
c3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4
M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBT
dG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFn
ZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
dG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYp
OwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUw
LDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0
ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEm
IGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVh
JiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRl
OgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBT
dG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQ
dHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVh
PiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3
ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIx
Mjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAt
MzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwg
UmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
KSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBu
ZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRm
Li41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBh
Z2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVu
dCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBh
Z2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2
ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZm
Li5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEw
ICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFn
ZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEo
RG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQ
YWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAg
U3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5h
bWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7
CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJp
dHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAw
OworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAK
ICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
aW5kZXggOGNlMWE5ZTc0YTRlMGY1NjU5YzUxYzUyNzQxODgxZTQwODVmNzNmNS4uNGY5ZjBkNGQ0
Y2VhMzI2MWQ5NzI3OTJmNTYxODU0NTc3YTEzY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBT
VkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlm
ICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdB
dHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAg
ICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIx
NjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi4xNjdhNTQ3YWM2ZDJjNDRhNjk5N2E3MDE1
MTYyZDdhNzU0Mzc5OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYg
KCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkp
OworICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKICAg
ICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVj
dHMuYXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAK
LSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4
IDUxNWQzMmZmYmNkN2U1M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjM2ZTY2OThiMmM0Yjc1
ZDJjYWI2YTlkMjM4NGZkMGM4NTg3NjNmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVy
LCBmaWx0ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3Q7Cisg
ICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5jcHAKaW5kZXggNTdmYWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4uMDIz
Nzk5NTJiZGNiNjE2YThmMDgzZmI0MTM1N2EzMTU2MGFjODQ3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04OSw5
ICs4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRv
d25jYXN0PFNWR0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAg
IH0KICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRy
YW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQx
KTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXgg
YTEwZTNhNzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uYTdhNzY4Mjk2ZDM0ZTQy
N2U1MDA5ZGFlMmE3OGM0OTljNmYwYjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6
Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7Cisg
ICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3Io
KSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1
dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNl
cnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAgIGlu
cHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICBy
ZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3ZWNj
ZGQwNzc3NDlkMjcyNTkyM2QyYmZkMDQuLmQ5ZGIwYWNlYjdmM2UwNDQyODUyNjczZjdiODJhZGMx
OTAwMzQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCkBAIC0xODksOSArMTg5LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXIKIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5n
Q29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkp
OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6
OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCks
IGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRT
b3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmls
dGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0
TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAg
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZm
ZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1ZmM3
MDFkZjYwN2NmMGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMmI0MmYzNDQwODI4OWVmOWIwOTAz
YThhNmJhNWFjMzI0ZWMzNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNywxMiArMTI3LDEyIEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3Bs
YWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNl
bGVjdG9yKCksIHNjYWxlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6
OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBz
Y2FsZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAg
ICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChp
bnB1dDIpOyAgICAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVj
dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcAppbmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi42OThh
NDg1NGMxYjE1NGUyOTM1OGE5YjJiNDliM2Y2ZWUyNjhmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFkb3c6
OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBk
eSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNy
ZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgp
LCBjb2xvciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5w
dXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKaW5kZXggOTMzMTg3ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uOTU0NzJk
YjcxODYzOTc1MDE3MDc3YTY5MzE5NjUzNDVjNDEyZjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw5ICsxMjQsOSBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0
ZERldmlhdGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0
ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRvIGVm
ZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0
ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVm
ZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmlu
ZGV4IDUwMmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmVmYTc3ZGUyYzFi
YmQ1ODYyNWU1NmY4NGFjM2U1M2JmNGQwZjkzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+
IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RAogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0
byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0
b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAoYXV0
byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhp
cykpIHsKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAo
bWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGZjYmM2M2I2
MmU2ZTEwNmViYjVkNTYyMDllM2Y1Mjk5ZDhiMGI2ZmMuLjdhNGNkMDgyZDU0MTU5YWFmNTI1MDAy
ZGE5NDYwZWJhMWQ5ZWYxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKQEAgLTE0NSw5ICsxNDUsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZAogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6
OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAgIGF1
dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4
UmFkaXVzLCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1
dDEpOwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcAppbmRleCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3MDQxYWFkYmQwMjIy
Li44ODUyNzExYTVhNmE2ZDQ0MzMzYzRlNzFlNmUzYjIxM2EwYTU3ZGNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTIsOSArOTIsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShm
aWx0ZXIsIGR4KCksIGR5KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShm
aWx0ZXIsIGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlu
cHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHAKaW5kZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2Zl
Ny4uODFlZjQ1NzY4Njk3MTdhNjllOWRlYjZlNjQ5NWRhNTExNzRjYzJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAt
MTk4LDkgKzE5OCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3Ig
Y29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5k
ZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9u
ZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUo
bGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3Jl
YXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNw
ZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFko
KSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBw
ZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZl
Y3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXgg
M2YzODc5ZDdlNjZhOGMxZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uZTNjZjVhZGNmNGY2NDk3
ZDczNmJjZGI3YjZjMmViZWFmMWYwZThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcApAQCAtODEsOSArODEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRp
bGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaQogICAg
IGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZl
Y3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShl
ZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2Jz
ZXJ2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4
IDg2ZDk1OGY1NzYwNTFiODA3ZTA1MWMxNWFlYTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgw
NDc1ZTNkZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvR0NPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNl
cnZhdGlvbi5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R0NPYnNlcnZhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+IHsK
IHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdD
T2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPiBzdGF0aWMgUmVmPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAKICAg
ICBib29sIHdhc0NvbGxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2
YTRlY2Y4ZjQzNWZkZjJjM2I4NDVmLi45OTAxN2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIw
MTdjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50
KHJlc3VsdC5jb3B5UmVmKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBl
KTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNl
TUlNRVR5cGUpOwogICAgIGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlzRW1w
dHkoKSA/IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4
dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNl
dERlY29kZXIoV1RGTW92ZShkZWNvZGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3
NWUwZjQ5MGJhYTYwODg1Zi4uYjQyNTBhMDJjZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3Vt
ZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNl
ciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBw
YXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBhdXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2Vy
OjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsK
ICAgICBib29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5r
KTsKICAgICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgp
IGltcGxlbWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBj
YW4gY2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFj
aCgpOyAvLyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQg
YmVmb3JlIGRlc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3
OGQwYmE1YzliOWNlZGI3Zi4uMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBzdGF0aWMgSVBDOjpDb25uZWN0aW9uKiBjdXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdl
YlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9jZXNz
Q29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgK
aW5kZXggMzIxYTA4Mzg2OTM4NmM0ZmJmNWYyOGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3
OWUzMzE3ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYyY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAg
c3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3ND
b25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVj
dGlvbi5tbQppbmRleCBiOWZjODk1MGZhMzNjYTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5j
NzY0OTZiNzMxMjQ2N2MzNjYwNjJmYWVlYzQ3NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsx
MDMsOCBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRl
bGVnYXRlCiAKIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNzYWdl
TmFtZSBib2R5OihpZCltZXNzYWdlQm9keQogewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmpl
Y3RHcmFwaD4gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUo
bWVzc2FnZUJvZHkpOwotICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5h
bWUsIHdrTWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdlYktp
dDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nvbm5l
Y3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwogfQog
CiAtIChXZWJLaXQ6OldlYkNvbm5lY3Rpb24mKV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZDFmMDI1NDhmMzdkZGEz
MDExNzc3MDgzNDBlZjJmZTIxODc4MWVmLi41ZWRkNWExZmVlZmYyMzVmY2Y0YTczY2M0MzEwNWIw
N2IxZTYwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTExMzQsNyArMTEzNCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENv
bmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShp
bWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAt
Pm1ha2VDR0ltYWdlKCkgOiBudWxscHRyOwogICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJ
bWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5n
ZXQoKSBzaXplOk5TTWFrZVNpemUoc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAg
ICAgIGhhbmRsZXIobnNJbWFnZS5nZXQoKSwgbmlsKTsKQEAgLTIwNzcsOCArMjA3Nyw4IEBAIC0g
KFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBIQVZF
KElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBj
b21wcmVzc2VkRm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAg
ICBpZiAoV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3Jt
YXQoc25hcHNob3RGb3JtYXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0cjxX
ZWJLaXQ6OlZpZXdTbmFwc2hvdD4gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6
OmNyZWF0ZShudWxscHRyKTsKLSAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9G
b3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQy
MiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29u
dmVydGVkU3VyZmFjZSkgeworICAgICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmll
d1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6
Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9y
bWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3QgPSB2aWV3U25hcHNob3QuY29weVJlZigpXShzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAg
ICAgICAgICBpZiAoY29udmVydGVkU3VyZmFjZSkKICAgICAgICAgICAgICAgICB2aWV3U25hcHNo
b3QtPnNldFN1cmZhY2UoV1RGTW92ZShjb252ZXJ0ZWRTdXJmYWNlKSk7CiAgICAgICAgIH0pOwpA
QCAtNTkyMiw3ICs1OTIyLDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdElu
Vmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRs
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAg
YXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxl
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAg
IGlmICghYml0bWFwKSB7CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNi
OWE4MGEzN2FhY2M5NWIyNWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNm
ZmY5Y2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAg
dm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50
IHRpbWVzdGFtcCwgZG91YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
IGNvcmVQb3NpdGlvbiB7IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUs
IGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRp
dHVkZTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJh
Y3k7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9n
ZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0
KCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
V1RGTW92ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlk
ZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNz
YWdlICovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4
NjI0MTMzLi5iY2U4MDU4ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3df
dGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBn
X3JldHVybl9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAg
Z19yZXR1cm5faWZfZmFpbChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+
IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRl
RmxhZ3M+KDApKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmlu
Zzo6ZnJvbVVURjgoaG9zdCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2Vy
dGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRl
LCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5w
cml2LT5wcm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdl
YkNlcnRpZmljYXRlSW5mby5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggODI4YmZi
MjI1YTdmZTc4MDgzMjE2YjAyNjFmZDhmMTFiYjIzYjBiMi4uYWJkNzc5ZmU3NTYxYTVmYjg5YmZl
NWE1MGU1MTA5MmEzNTNjYmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q2Fpcm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBP
cHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVu
Y29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRv
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpp
bmRleCAzN2IwY2I3YTgzMDQzZGYwMzEzMTZjNjQ4M2MyMDkzM2IzMDc2NmJkLi5kMzQ3NzE4YjJm
ZDg3OTYwMmNiMzg1NzQ4NTAwZmQyZjk2MzNlZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
dEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFn
ZURhdGFIYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGM4ODM2NDJiNWRjNTA2YjYy
NzY1MTBiNzM0ODVmY2Q0NjYyZWY0ODEuLjVmZDVhZjQ5YjRjZDU3YWVhZmYxNjg2Y2FhY2U0YWU1
MTMyZmI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcApAQCAt
NDgsNyArNDgsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3Qg
VXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKICAgICBBU1NFUlQobV9zaXplID09IHVwZGF0ZUlu
Zm8udmlld1NpemUpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKKyAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFu
ZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZTMwYjAzZjVm
NGM0Y2RjOGIyN2RjNmFjNmM1NTVhYjg5YzlkYjhiNy4uMjg1ZDY2Yjc4NGMzYjI1ODI1NGM1ZTM2
YzM5YmRkMzQ0MTRkMzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNzQyLDkgKzc0Miw5IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJv
eHkmIHBhCiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVBy
b3h5LCBOU0Vycm9yICpvcmlnaW5hbEVycm9yKQogewotICAgIFJlZlB0cjxBUEk6OkZyYW1lSGFu
ZGxlPiBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5
LmZyYW1lSUQoKSk7CisgICAgYXV0byBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNy
ZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7CiAKLSAgICBhdXRvIHJlY292ZXJ5QXR0ZW1w
dGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKCpmcmFtZUhhbmRs
ZSkgdXJsU3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxT
dHJpbmdFcnJvcktleV1dKTsKKyAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhb
W1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKGZyYW1lSGFuZGxlLmdldCgpKSB1cmxTdHJp
bmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9y
S2V5XV0pOwogCiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOnJlY292ZXJ5QXR0ZW1wdGVyLmdldCgp
LCBfV0tSZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5LCBuaWxdKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaAppbmRleCA5ZDc3NDEwYzA5YzFiNzExNWE0MDQxZDI5N2JiNDU2ODM4ZWFlOTYwLi42NGEz
NWY3ZTg3OWRiMDNkYzBiZjg3NzIyMTQ0YzIyYmZmM2Q5ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaApAQCAtMTcxLDcgKzE3MSw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dCBmaW5hbDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDCiAKIGNsYXNz
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBjcmVh
dGUoV2ViUGFnZVByb3h5Jik7CisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCmluZGV4IDRjOGZjYmY4ZWY3MmUwNTFlOGEyMjkxYjVmNGYxNmZmZGMwMjcwNjcu
Ljg2NzdhMDQxYzcwZDExYjk3Njk4YzQ3ZWMyYjc5YWRmMzFkOTAxY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0KQEAgLTI5Miw5ICsyOTIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpCiAKICNw
cmFnbWEgbWFyayAtIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQYWdlUHJveHkmIHBhZ2UpCitSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFn
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eShwYWdlKSk7CiB9CiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgK
aW5kZXggYTkyOTlmMWI3NDY5YjAzYWQyMzQ2MjRiY2QwYjM1NmJjOTI4YjY5Mi4uMjk3Zjk2OGIz
NTI5ZTBjMzU1Y2Q0ZGIxYTg5OWMyMGU4Y2M5MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgK
QEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmlu
YWwKIAogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkm
KTsKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdl
YlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1YWwg
flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggYTQzOGZlNzFhODZkMzI3Mjg1YWVmNTIxMmZm
MzU2MTI2NDI1NmQxNi4uNGNmMzBiZjMzMWU3OTQyMWYyMzljY2E1OTYzMTEzOTJmOGY1YTgzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzE0LDkgKzMxNCw5IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiAKICNwcmFn
bWEgbWFyayAtIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5KQorUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdl
LCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KSk7CiB9CiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4
IDE3MTBkZjE5YzQyNjU4ZjZmNTljN2MxODA3NzcxYWYyMmUyMjNkYzIuLjFkYWQ3MDRlYzk5NmIx
ZWY5ZDRjMWE5OWIxNzBiZjc2MjNkMzY4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNTksOCAr
MTU5LDggQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXpl
KTsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKKyAgICBuZXdDaGFuZ2VD
b3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlw
ZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWlu
dDY0X3QmIG51bWJlck9mRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IGU2Yzg3MmU0ZmFkZTZjZmM0MmJjYTMzM2I3NDdiODIxY2Y1NmUw
NDcuLjlkNmM1Mzk0NDBjZGJjMTBmNDM2YzE2YTMyY2U0NzdiNjI1NzdkNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00Mzg3LDEwICs0Mzg3
LDEwIEBAIFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90
KCkKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3Zl
KHN1cmZhY2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RG
TW92ZShzdXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwogCi0gICAg
cmV0dXJuIHNuYXBzaG90OworICAgIHJldHVybiBXVEZNb3ZlKHNuYXBzaG90KTsKIH0KIAogdm9p
ZCBXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5ZDgwZGNlZS4u
ODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApA
QCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFByb3h5TWFwKCkK
IAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9h
ZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3Vy
Y2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJ
RCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIG1f
ZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHku
Y29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHktPmRv
d25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCBkb3du
bG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOworICAg
IHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHlNYXA6
OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUwNDMzOWU3ODQ5
ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5
MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05
NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0
aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmlj
YXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRl
R2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3Rp
ZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwg
dGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHks
IGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlv
bklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0aW9uKTsKKyAg
ICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIo
Z2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBtX3By
b3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwg
dWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNGIwMTI1MmViYjhmZTkyN2M1YWFmNGM1NzBkYThlNDU1ZjhlY2I2
ZC4uMTBkMmRhZDliZmIzNWY4ZWQyODY0MDJmNDNlZTA5ZjcxNjAwZTcwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjU0LDEwICszNjU0LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogCiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAg
ICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5Ojpj
cmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5
OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0aGUg
cHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCAq
c3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIHN1YkZyYW1l
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRvdyh1aW50NjRf
dCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZDkzYjA4NWY1
MDMxMTU3MjgzMzlmYWM5OWI5ZDM4NGJhOTFkOTFhLi40NTdkNDIxMWVlZjk3MTkxNGRiM2IwYWMw
NThkYjBiZGJjMzY1ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0
aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiByZXF1
ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0
ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0ID0gU3RhdGlz
dGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNz
UmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3Rp
Y3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhyZXF1ZXN0Lmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0
aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVx
dWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+
OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3Jr
LgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3Mo
U3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0
TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
aWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBn
ZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVu
YXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBtX3N0YXRpc3Rp
Y3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRfdCByZXF1ZXN0
SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3RhdGlzdGljc1Jl
cXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNz
KHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCA1YjRkYzU4YzNlOWNhOGRkNTljOGVmOTRiMWY2NTZmNDUyODE5MDUxLi4xYTE2
MWFjYzQyMWJkM2Q5ZWE2ZjE5ODE5ZWY1MDJmMWQ5YjQ0MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFzcyBXZWJQcm9j
ZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQ
cm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZvaWQgcmVxdWVz
dFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAgdm9pZCByZXF1
ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAgICB2b2lkIHJl
cXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOworICAgIHZvaWQg
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CiAKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dz
dHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUzZmI2NWMyMzBk
YmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgwNDk4YWZlMTJh
MWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVh
bWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNz
aW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7Ci0gICAgaWYg
KHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMs
IGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvckluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMuLjkyZWFkMDQ1
ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcApA
QCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1f
d2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAv
LyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcg
YnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldExvZ3NQYWdl
TWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgUmVmUHRy
PFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9y
UGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3Vw
ID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBh
Z2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNz
UG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKG51bGxwdHIp
KSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdl
dCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQo
KSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0
cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIo
KSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgq
cGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
bV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCks
IHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV93ZWJWaWV3
KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGI2
NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0MjM0MTEyZTg1
NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFdl
YlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdl
KCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9y
Vmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
YXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJL
aXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBB
bGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVp
bGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBXZWJQYWdlUHJv
eHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5k
aWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7CiAgICAgfSk7
Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVh
dGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7
CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdl
R3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAgIGF1dG8gcGFn
ZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGlu
c3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3Vw
KHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX29i
amVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVz
dHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2JhOTg1N2EwYTYx
YWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUxNzNjMmZiNGIx
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIFVSTCBy
ZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAgICAgICAgICAg
IFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4uZ2V0KCkpKTsK
LSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+
IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1
aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBhdXRvIGNo
ZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURl
bGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlv
bkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBXS1dlYlZpZXcg
KnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVjaXNp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggNTI5
ZjhlNjc4N2NkNTJhZGM3ZmZiNTY3MWRhOTY5YTZmNDY0ZDUxMS4uNmM1Y2I5Y2NmYjJiZDJmM2Ni
YmZlNTlkZjdiNTEwOGM5YWU3ZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3Qg
U2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2
aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7Ci0gICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGlt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUo
aW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvckltYWdl
KGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJM
LCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9pbXBsLT5zZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4u
Y3BwCmluZGV4IDkxY2ZmNjE5YmI5YWY5ZTNhYzU0YzNiMDU2NTJlMmIzMGVlM2RiNjkuLjVhZmVi
ODA5ZjIwNDgwZmRkZDc2MjFlMzI1MDk0NGRiN2RlZTZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMTkyLDcg
KzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRl
RnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIFJl
ZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIu
Iik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMg
dG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFu
Z2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZlcmVu
Y2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgcHJlZmVyZW5j
ZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8V2ViUGFnZUdy
b3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJ
ZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdl
KGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAKICAg
ICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsKICAgICAgICAg
eyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUwOTAxNzkwMGY0
Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVkM2I1NDI0YzUz
MDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUwLDggKzUwLDgg
QEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAogLSAoaWQpaW5p
dFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9X
ZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1w
bDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUo
KldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxmID0gW3NlbGYg
X2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZmLi44YzI5NWJh
ZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVj
dC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYmFja2lu
Z1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6
ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5k
ZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUxMjMwMmIyODJl
NDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5z
dHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRz
T2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgp
KTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVt
LT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2NDg5ZDY2M2I4
ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChX
ZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAg
ICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1v
dmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRv
QVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9B
UEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
YzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEyZDljNjMxMmQy
YzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAt
NzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpz
bmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVnaW5TaXplOwog
ICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3RvcigpKTsKIAotICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAg
IGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5z
dGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
ZTg4ODQ1NzQwYTg4YzY2YjMxZGY3ZTJlNGNkNTI2OGFjYTFjNTEyYy4uZWJkZmE0NTI3MWRlZDY1
MjkxNTE2YTNiMjRiNDgwOGQ3NjkxZjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBQ
REZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9u
c2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtD
RkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9w
ZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1dG8g
cmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBT
dHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgp
LT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNp
emUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFj
dG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXpl
LCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3Rvciwg
LWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2b2lkIFBERlBs
dWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5T
QXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGFpblRleHRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFp
blRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNo
YXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVtY3B5
KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0NzlhZmMyOWFkZjRh
Yzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2QwZDNhNmY0Njdl
OTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC04
NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0
aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9u
cy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdp
blByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAtOTQsNyArOTQs
NyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5lY3Rp
b25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5n
ZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7CiB9CiAKIHZv
aWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAK
aW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4uOTcwZWExZmU3
Y2E5NjQ1ZGQ5Yzc3N2NjZDVlMzYyYTY2ZGVhZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDggKzI0Nyw3IEBAIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAgICAgaWYgKHNu
YXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKLSAgICByZXR1cm4gc25hcHNob3RCdWZm
ZXI7CisgICAgcmV0dXJuIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5k
bGUpOwogfQogCiBib29sIFBsdWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTU0YzE4Yzk1
YzUzZGYyNDNkMThhYjc4NmJiMmZmNzY3MzYyNTMwNC4uNTBiMzU1MjIxM2RhYjQ4ZTg3NmIxZjc5
ZThkNDI5OGZiY2M2MGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTExNzQsOCArMTE3NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6
cGVyZm9ybVVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICB9CiAKICAgICAvLyBU
aGlzIHJlcXVlc3QgaXMgdG8gbG9hZCBhIFVSTCBhbmQgY3JlYXRlIGEgc3RyZWFtLgotICAgIFJl
ZlB0cjxTdHJlYW0+IHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJl
cXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgIGFkZFN0cmVhbShz
dHJlYW0uZ2V0KCkpOworICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVh
dGUodGhpcywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7CisgICAg
YWRkU3RyZWFtKHN0cmVhbS5wdHIoKSk7CiAgICAgc3RyZWFtLT5zdGFydCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDAyNjRkNzRiZGEwMzIzZjhlZDRlOTA0ZTMxNTllZDJlNjQ3
Y2EzZmUuLmQ1YWI2NmI0ZTkzNDE5OGFmNmM2Yjc1ZmIxNzVhYWZmZTcxMTZmYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC03MTgsOCArNzE4LDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2UKICAgICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7CiAg
ICAgYXV0byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEpOwog
ICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVu
dGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1
cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1
cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBk
ZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2lu
KCkpOworICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRF
eGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCBkYXRhYmFz
ZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsK
IAogICAgIGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCkBAIC03MzcsOCArNzM3LDggQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKIAog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewotICAg
IFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOwotICAgIGlmICht
X3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCB0b3RhbEJ5dGVzTmVlZGVk
KSkKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgaWYgKG1fcGFnZS5pbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1fcGFn
ZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBjYWNoZVN0b3JhZ2UgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+YXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IGNhMDhmNDg4ZTk3NWJlMzY2MTRiYmIzY2M1ZDMzOWI4MTA0NzBjY2EuLmY2NjgyZDc5ZjA1ZmVi
ZTJmNDYzNjEzODg1MWNlZjFhNTNhOWVmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtNzY3LDEwICs3NjcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKIAogICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOworICAgIGF1
dG8gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVu
ZGxlIGNsaWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUs
IHVzZXJEYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUs
IHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVz
ZSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWI2ZjRlNGIyZGM5ZGFk
NzhmZTBlNjhlM2RhODIxMmFmODZhMjQzNi4uNzQyZTM4NGIxNzkyZTAzNzA3MmY2Mjc2YmNhYmYy
ZDViNzQ5MGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE5NSw3
ICsxOTUsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdAogICAgICAgICBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0
aG5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAgQVNTRVJUKHBh
dGhuYW1lcy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25z
SGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkp
KQogICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHkoKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA4NzE2MTIwZjcxZGNmOWFjMjNk
OGQxM2ViZGY5M2M2N2RmMzNkODk2Li4xODY3Yzk4NDkwNWM5MjAwZTAyMmRlMzZiOGQwNjVlZmZm
MjQ0ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1No
YXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNl
KSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShpbWFnZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNz
Q29udGV4dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCmluZGV4IGZmZWUyYTY0NmNjNmU4OWYyNDMzZjNhNDdmZTdmNjQ3MzQ3YTgwMmUuLmY4N2Q5
MzQ0M2Y3YzU4YTgyYzQzNjNmMDM0YTAwNjAxM2I2YWExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQog
ICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoZWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGVsZW1lbnQpOwogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+
cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYTM4Y2Qy
YmY2Mzc5NGM4ZTlmMWQyMTJhM2U3OGIzZThjNGVmOGM2Yi4uOGNlNTY1ZmI5NTZmMzZjYjc1MmVm
ODExYTEyNDVlYjU1ZGRjZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIERp
Y3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZy
YW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgaWYgKHByZXNlbnRhdGlvblRyYW5zaXRpb24gPT0g
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSkK
ICAgICAgICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNu
YXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKICAgICAKLSAgICBSZWZQdHI8VGV4dEluZGlj
YXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5n
ZSwgaW5kaWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisgICAgYXV0byB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBpbmRp
Y2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICAgICBpZiAoIXRleHRJbmRp
Y2F0b3IpIHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8o
ZmFsc2UpOwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4
IDc4MjRlNWNmNzFiNDdkYjA5ZWVhMzVhNzY5ZmE3NjQxYTcyZDdmMzIuLjZhODZiMDAyYjg2ZjQy
YTAxY2Y0OGU1ZGY2OTAwYWNmNThmODMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBA
IHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAg
ICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwog
ICAgIGJpdG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJp
dG1hcFNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAppbmRleCA5ZmVmZGJjYTEyY2Y1OWU2ZTMyNWNjOWMyNGViZTRmMzA5Mjlk
MWYzLi42M2NjMjgzOTJlNDgwZGZiZDU0MzJkNjkwMDBmYTM4ZjIyZGU2NjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBA
IC0zNDMsNyArMzQzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6aGlkZUZpbmRVSSgpCiAKIGJv
b2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJh
bWUsIGJvb2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRBbmltYXRlKQogewotICAgIFJl
ZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRo
U2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dEluZGlj
YXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50
YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKKyAgICBhdXRvIGluZGljYXRvciA9IFRleHRJbmRpY2F0
b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0
b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1h
dGUgPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOwogICAgIGlmICghaW5kaWNhdG9y
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2ZTVkNTMxNTkxYzQzZGVmYjAzMTM2
NzM0ODg3ODg5N2NhM2Q0MzllLi4xMDg2YzZmZGZjMjEwYThlMzQ3NjA0NjRkNmJjNDE2MzkyOTU5
YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBi
YWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBh
Z2VJRCgpOwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVG
bHVzaGVyLCBwYWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFj
a2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0g
ewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90
b25pY1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjQwYjg0YjQ3YTgyNjc4
ODFkY2JlMjc3ZmE1YzFiZjVjYjQyMDBlMy4uMDA3NDliNDc3YTI0Y2U4Y2NjODI1MDFkOTRlMDhi
NjBlZTFhNjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViRnJhbWU6OmRvY3VtZW50TG9hZGVy
RGV0YWNoZWQodWludDY0X3QgbmF2aWdhdGlvbklEKQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmV0
YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVu
Y3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4gYm9v
bCB7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUp
IC0+IGJvb2wgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggYTg3YzUyOWU0NDQ0MTMyN2EwMGE5OGMwMjU0ZjExZmFjMmE0NmNkNi4uZDU4MmJlODIyMTc4
MjcyYWQxMmU5MDc2NWIxMjE5ODhmZWIyMzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MzIsMTAgKzE0MzIsMTAgQEAgdm9pZCBXZWJQ
YWdlOjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVy
bCwgSW50UG9pbnQgZG8KICAgICBjb25zdCBpbnQgc2luZ2xlQ2xpY2sgPSAxOwogICAgIC8vIEZJ
WE1FOiBTZXQgbW9kaWZpZXIga2V5cy4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgc2V0IElzU2ltdWxhdGVkOjpZZXMuCi0gICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNlRXZl
bnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3Nl
ZDo6WWVzLAorICAgIGF1dG8gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25pY1RpbWU6
Om5vdygpLCBudWxscHRyLCBzaW5nbGVDbGljaywgc2NyZWVuUG9pbnQsIGRvY3VtZW50UG9pbnQs
IHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCBXZWJDb3JlOjpOb1RhcCwgbnVsbHB0cik7CiAK
LSAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50LT5j
b21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LmdldCgpLCBMb2NrSGlz
dG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1h
eWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1
bWVudC0+Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5wdHIoKSwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVy
cmVyOjpNYXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0b3BMb2FkaW5nRnJhbWUodWludDY0
X3QgZnJhbWVJRCkKQEAgLTM3MDUsNyArMzcwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2Vi
CiAKICAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7
IGkrKykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hh
bmRsZUFycmF5W2ldKSkpCisgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ld
KSkpCiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2Fk
LmFwcGVuZChleHRlbnNpb24pOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCAw
Yzg0ZjY0YzhjNjNlZDFiYmQ2MGI3M2YzYjU2OGE0YTI3OGMxYWRmLi5mYmE1YjA1NmE0YzlmYWQw
MTcxYzE4ODNmMDBjZWJmNWEzNTdmNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC05NCw3ICs5
NCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNl
bGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgICAgIG1faXNTaG93aW5nRmluZElu
ZGljYXRvciA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0
SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2Vs
ZWN0ZWRGcmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwg
dG90YWxWZXJ0aWNhbE1hcmdpbikpOworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0
SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5v
bmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGljYWxNYXJnaW4p
KTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA5ZjkxNzMxZjQzYmZiMTEyMjQ3NTdlZmIxMDE3ZTQ2MjVjMTQ4ZjdmLi5iMDcyYzViODc2
YzJmOWM0MTBmODE1MTViMWZjMDA5ZTE5MTRkOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTgyMCwxNCArMTgyMCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRU
ZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24u
cHJldmlvdXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBvc2l0aW9u
ID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuc3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKIAotICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkp
ICE9IG9sZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5n
ZS5wdHIoKSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBzZWxlY3Rpb24gaGFzIGNoYW5nZWQg
dW50aWwgd2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRoZSBuZXcgdGV4dC4KICAgICBmcmFtZS5lZGl0
b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIGZyYW1lLnNlbGVjdGlv
bigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5wdHIoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3IoKS5p
bnNlcnRUZXh0KG5ld1RleHQsIDApOwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVj
dGlvbkNoYW5nZXMoZmFsc2UpOwogfQpAQCAtMjEzNiwxNyArMjEzNiwxNSBAQCB2b2lkIFdlYlBh
Z2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua1JhbmdlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGZsb2F0IG1hcmdpbkluUG9pbnRzID0gNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8g
bGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJnaW5J
blBvaW50cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dElu
ZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgq
bGlua1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5k
aWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJh
Y2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxs
Q29udGVudEZvckNvbXBsZXhSYW5nZXMgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9u
LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1h
cmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNl
U2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dEluZGljYXRv
ciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShsaW5rUmFuZ2UuZ2V0KCksIFRleHRJ
bmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNw
ZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxl
eFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlv
bkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNl
bnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmlj
ZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mby5saW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+
ZGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHRJbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5s
aW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0yMTU2LDcgKzIxNTQsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRh
RGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9ySWRlbnRpZmll
cigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3RvclJl
c3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1bHRz
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVjdGlvbjo6cmVxdWlyZXNF
eHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6
OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5
KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0
TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QWZ0ZXIg
PSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLCBkYXRh
RGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSwg
VGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIxODEsNyArMjE3OSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24g
dG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhcmVkQml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0
bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkNThkZDljNGM3YWFlMjc5MjM5MTU0ODgz
ZDgyZTNkZjM4MTIxOWVlLi42MjBmZmE3ZjE1ZGM4YzI0OTdhNzNjYjliZDIwYjBiYzdkNTY1ZjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04NTAsNyAr
ODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFuc2Zvcm0uc2NhbGUoc2Nh
bGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRp
b25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3JtIik7
Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb24gPSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0
KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVyVmll
d0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAgUmV0YWluUHRyPENBTGF5
ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0
UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uo
c2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZv
cktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5pbWF0aW9uKTsKKyAgICB6
b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRl
clZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUoZnJh
bWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggODA1ZmU5ZTRjYmI1
ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uZjQ2ZDVmOGU3MWI0MmQyMjkzYTNiZjVmZjBh
MGFlOTM5MWZmMGE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMjQgKzQwLDI0
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykp
OwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxM
b2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExv
Y2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0
ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVv
dGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNl
SW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiAgICAg
bV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9
CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVh
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFy
ZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3Jh
Z2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVwaGVtZXJhbExvY2FsU3Rv
cmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUsMTYgQEAgY2xhc3MgU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZpbmFsIDogcHVibGljIFN0
b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwogfTsKIAot
UmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxT
dG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVm
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdl
QXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGF1
dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFkZChzZWN1cml0eU9yaWdp
biwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkKICAgICAgICAgc2xv
dCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYTo6Y3JlYXRlKHNl
Y3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1cm4gc2xvdC5nZXQoKTsK
KyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQ
YWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKQEAgLTIwMiwxMiAr
MjAyLDEyIEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y29weShQYWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90
YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVw
aGVtZXJhbExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVz
cGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBt
X3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0
ZXMpKTsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9IGFkb3B0
UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFt
ZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAg
ICBmb3IgKGF1dG8mIGl0ZXIgOiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAg
ICBuZXdOYW1lc3BhY2UtPm1fZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5
LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwogCi0gICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShuZXdOYW1lc3BhY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGYxM2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMx
MjU2NzI5ZTMuLjk3ZGIwYjgxM2JhZjVjYjVhNDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0
X3QgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBj
cmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3Rh
SW5CeXRlcyk7CiAKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01
NiwxMCArNTYsMTAgQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJy
aWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdl
QXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5
cGU7CiAgICAgY29uc3QgdWludDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2
NzE2MThmMDNhN2ZmZTJjLi44MjU1N2I3MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwx
NCBAQCBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
Kj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIp
CitSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xv
dCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChzbG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAg
ICAgICAgcmV0dXJuICpzbG90OwogCi0gICAgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcj4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5nZXQoKTsKKyAgICBhdXRvIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFk
b3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAg
ICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIH0KQEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6On5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVv
dGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25l
ZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgp
LCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlm
aWVyLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0
dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMz
NzMxZjZjMWVhNzk1Li4zY2U2ZGI5ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVh
dGUodWludDY0X3QgaWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1
YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJl
ZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9p
ZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTky
MTM1MjVkZDQ3ZGJlMWJlYjQ3MS4uZmM2NTk4NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFm
Nzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpN
b2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250
ZXh0PiBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUo
KnRoaXMsIGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAg
ICBhdXRvIG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgp
OworICAgIGF1dG8gaW50ZXJmYWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNl
LmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdU
Rk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4
M2EzOGQwYzI4ODI1ZTgxNzNiMDIyMWYxNmUuLjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQy
YjJmNzIxZDUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmludmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0
ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsK
ICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVs
LT5hZGRDbGllbnQoKmludGVyZmFjZSk7CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2Uu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RG
TW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjcz
MTcyMjY3ZTMyNTZlOGMyZWMuLjRhOTRhMWQ4NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZk
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcApAQCAtOTMsMzEgKzkzLDMwIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+
U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogICAgICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAg
QVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdO
YW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5
cGUsIG1fcGF0aCwgbV9xdW90YSkpOwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFy
ZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5r
ZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAKLSAgICByZXR1cm4gbmV3TmFtZXNwYWNlOworICAg
IHJldHVybiBXVEZNb3ZlKG5ld05hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKLSAgICBSZWZQdHI8
U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJlYTsKLSAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9z
dG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsK
KyAgICBpZiAoUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VB
cmVhTWFwLmdldChvcmlnaW4pKQorICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5v
bk51bGwoKTsKIAotICAgIHN0b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9z
dG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2VyLmdldCgpLCBtX3F1b3RhKTsKLSAgICBt
X3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4sIHN0b3JhZ2VBcmVhLmdldCgpKTsKLSAgICByZXR1
cm4gc3RvcmFnZUFyZWE7CisgICAgYXV0byBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6
Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90
YSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5wdHIoKSk7
CisgICAgcmV0dXJuIFdURk1vdmUoc3RvcmFnZUFyZWEpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2
NWE5NjY2MTYxMzcuLmM4OGYwNjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCkBAIC01Nyw4ICs1Nyw4IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGlj
IFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNw
YWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25l
ZCBxdW90YSk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJ
bXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1h
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2
ZDY3N2M4ODRhYmQ5ZS4uODM2MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMo
KQogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBs
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9y
YWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1
b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90
YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
IHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVk
IHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEpCiB7CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlv
biB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBw
aWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKaW5kZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3
N2FiYi4uZTU4OWZlZTdhNWM2YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmly
dHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBj
bG9zZUxvY2FsU3RvcmFnZSgpOwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6
OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5jcHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3
ZDFhNjIxM2I5ZC4uNjNjYWUyZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3Vw
LmNwcApAQCAtNDIsMTggKzQyLDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdl
YlZpZXdHcm91cD4+JiB3ZWJWaWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsK
IH0KIAotUmVmUHRyPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQor
UmVmPFdlYlZpZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3Jv
dXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCkpOwogCiAgICAgYXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChu
YW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0g
ICAgICAgIHdlYlZpZXdHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9z
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5
KCkpCisgICAgaWYgKCF3ZWJWaWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsK
KyAgICAgICAgd2ViVmlld0dyb3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5p
c0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGg7CiAKLSAgICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2Vi
Vmlld0dyb3VwOwogfQogCiBXZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0
cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5oCmluZGV4IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJi
NWYuLjRkNDEzN2NlMmFhYWMzYTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgs
NyArMzgsNyBAQCBPQkpDX0NMQVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdH
cm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGlj
IFdlYlZpZXdHcm91cCogZ2V0KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
SU9TLmNwcAppbmRleCBkMDg0OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44
MDQ5YjFjY2MyNzJjMzQ3MjU5OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudUlPUy5jcHAKQEAgLTI2LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVu
dCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkK
IHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0g
ICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAK
IHZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBv
cHVwTWVudUlPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmgKaW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5
ODc5YWY0Zi4uMGVmNDRiNDJhNjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBN
ZW51SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2Vh
cmNoUG9wdXBNZW51SU9TLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51
SU9TIDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVk
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1
cDsKKyAgICBSZWY8UG9wdXBNZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJj
aFBvcHVwTWVudUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRm
MGU2YjlhNWU2ODlmYzE5Yzg3Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYy
ZjMyYTEzNjFmNjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4
IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJu
YXRpdmVzOihOU0FycmF5ICoqKWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IG1hcmtlckFsdGVybmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBb
KE5TTXV0YWJsZUFycmF5ICopKmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1h
cmtlckFsdGVybmF0aXZlc1tqXSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+
c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtl
ci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdl
ICopZW5jbG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVu
dE1hcmtlciogbWFya2VyID0gbWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRP
ZmZzZXQoKSA8PSBvZmZzZXQgJiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBu
b2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
LCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFu
Z2UucHRyKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5
NmE2NDk2YzJjNDQ2MDk5MmM1YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4
ZDlmMzRiOWMwOTYyOTNkYzM2Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0
NjUsMTMgQEAgLSAodm9pZClzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAg
ICAgaWYgKCFVUkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQg
PSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5C
dWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6
WWVzLAorICAgIGF1dG8gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVz
LCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwg
bnVsbHB0ciwgMSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxs
cHRyLCBNb3VzZUV2ZW50OjpJc1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhl
IGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBh
cmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0p
OwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1l
bnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJy
ZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAg
SW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9h
ZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVs
bHB0cik7CisgICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFt
ZUxvYWRSZXF1ZXN0KSwgZXZlbnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVl
M2FhOGY0YWQ0Li4xYjZjODIyODU0YTA3ZjNkMGM3YTA2MDE3NmU0YjgxMGU3ODkxZmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTU0Nyw3ICs1NDcsNyBAQCAtICh2b2lkKWdl
dFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0Fy
cmF5ICoqKXJlY3RzCiAgICAgUmVmPFJhbmdlPiByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2Rl
KTsKIAogICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgp
LT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRv
ck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdo
dGx5Rml0Q29udGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENv
bG9yIHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAg
ICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50
Rm9yQ29tcGxleFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpp
bmRleCAxZjMyZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li5hMDRiYzU1N2Jm
ZGRjOTc2ZmQxODA1YWZlYjc4NjViNGQxMjdhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdp
bgogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdp
dGhQcm9wZXJ0eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEp
OwogICAgIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNl
ID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5W
aWV3LCBmdWxsRnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAg
dWludDMyX3QgcmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJu
X3JldHVybl90IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwg
cmVxdWVzdElELCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEg
Ynl0ZXNdKSksIFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAo
a3IgPT0gTUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpAQCAtMjk5LDcgKzI5OSw3IEBAIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6
Omluc3RhbnRpYXRlUGx1Z2luCiAgICAgaW5zdGFuY2UtPnNldFJlbmRlckNvbnRleHRJRChyZXBs
eS0+bV9yZW5kZXJDb250ZXh0SUQpOwogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJlclR5cGUocmVw
bHktPm1fcmVuZGVyZXJUeXBlKTsKIAotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICByZXR1cm4g
V1RGTW92ZShpbnN0YW5jZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eXBl
X3QgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNjA4ZDk0MTFhOTlm
ZWFkNTAwZjRlMTlkMmM3NzEyOWZkODRkYTk0Mi4uYzY5Mjg0MTFlYmU5ODM0ZTNkOGQ2NDNjMWMx
ZmY2NDFjMzU0NTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQpAQCAtNzE5LDggKzcxOSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgIC8v
IERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhl
cmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMu
CiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2Nh
cGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVl
c3QoKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0p
OworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVl
c3QoKSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0u
Y29weVJlZigpKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC03OTksMTAg
Kzc5OSwxMCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVl
c3QoTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaAogICAgICAgICBtX3BsdWdpblJlcXVl
c3RzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblJlcXVlc3QpKTsKICAgICAgICAgbV9yZXF1ZXN0VGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEhvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVh
bTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgICAgIGF1dG8gc3RyZWFt
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJl
cXVlc3QpOwogCiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkp
OwotICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtKTsKKyAgICAgICAgbV9z
dHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0t
PnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzMmMzNjhmZGVhOTRh
MmZiMDI4YTJjNTAzMDQ3YTllYTBlNzVjMDliLi5iNTdjOGUyYWMxNzNkMGQ3YTcwMDAyMmY5YzEw
N2QzMGRkMmIzY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgLSAo
dm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICop
SlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgIC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQg
b3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIu
IFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jl
c3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAot
ICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxd
LCBwbHVnaW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJl
cXVlc3Qgbm90aWZ5RGF0YV0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVn
aW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qg
bm90aWZ5RGF0YV0pOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVS
TCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTE2Nzgs
OSArMTY3OCw5IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3Qg
KilyZXF1ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAgICAgICAgIFtzZWxmIHBlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IobG9hZFBsdWdpblJlcXVlc3Q6KSB3aXRoT2JqZWN0OnBsdWdp
blJlcXVlc3QgYWZ0ZXJEZWxheTowXTsKICAgICAgICAgW3BsdWdpblJlcXVlc3QgcmVsZWFzZV07
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBz
dHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwg
c2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEpOwogCi0gICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5nZXQoKSk7
CisgICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0t
PnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCA5
NmVmOTIxZmQ2MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiLi4yMzQ3ODFiMGJlODZhNGJk
YTUwYzBjZTU2NDg0MjIzODhiNDJiZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpA
QCAtMjA3LDggKzIwNyw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVu
dDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lVmlldy0+
ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlv
bjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRv
Tm90U2V0Rm9jdXMpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3Vt
ZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIGZy
YW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIE9w
dGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWlu
dEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZp
b3I6OlNlbGVjdGlvbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2MDE4
ODVlYjhkNDRlNjE5YmQ1NDJiYWM1ZDA0MDZmMmUyM2YwZWRhLi5hZThiOWVmYjdkYWRlYzZlODE4
ZWNlNzBmNjczOWEyNTQ4ZDZkYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAt
MTQ2NSw3ICsxNDY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIGNvcmVGcmFtZS0+
dmlldygpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0UGFyZW50VmlzaWJsZShmYWxz
ZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwotICAgIFJlZlB0cjxGcmFtZVZp
ZXc+IGNvcmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CisgICAgYXV0byBj
b3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwogICAgIGNvcmVGcmFtZS0+
c2V0Vmlldyhjb3JlVmlldy5jb3B5UmVmKCkpOwogCiAgICAgW21fd2ViRnJhbWUuZ2V0KCkgX3Vw
ZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW5dOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2I5YmI4OTkwOGFlNWMxYTY1MmUz
NmNjODg5YmUwNGU1NjU0Yzk0Ni4uYTkzZGVmNjEzOTlhNWNjNTRlZjYxY2FlOWMwMzc5OTA1ODkw
Y2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC0xNzQ2LDggKzE3NDYsOCBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNB
cnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAgICAg
aWYgKCFtZXRhZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50
LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkp
OwotICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFy
a2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CiAgICAgICAg
ICAgICAgICAgW21ldGFkYXRhcyBhZGRPYmplY3Q6bWV0YWRhdGFdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYWFmNTI4YzlmYTljODIz
YmFjMTBjZTA3ZTFjYTU5YzkzNDRmMzg3ZS4uZmY3NDBlZTkwZWZmZmIxZjc0MjgzMmVhMmEwZDc4
YWU4OGQzYjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAtICh2b2lkKV93cml0ZVNlbGVjdGlvbldp
dGhQYXN0ZWJvYXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdAog
ewogICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmIChbdHlwZXMgY29u
dGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVG
cm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CisgICAgICAgIGlmIChhdXRvIGNv
cmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtz
ZWxmIF9mcmFtZV0pKSkgewogICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEgPSBjb3JlQXJjaGl2ZSA/IGNvcmVBcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSA6
IDApCiAgICAgICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSBmb3JUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDE3ZWEwYmE3
MDQyOTkwMTA0MjYwMmVlZmQ4YjhkMzRlODQ3NjFiMDUuLmU3N2YxYmNiNjg4NDVjYjgzMTM0MzY0
YWNhZDMxZjBjNzgyZTNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTQ3MzUsOCArNDczNSw2IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dy
b3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRP
ckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc2MCw4
ICs0NzU4LDYgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAq
KWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwg
U3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDVjMDc3MTIxMWVhZWQ2NDkwNzNl
MTAzZTkwNGE1ZWM5MDQ5YjQ2M2YuLmJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4
ZjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVm
cmVzaCgpCiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6
OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBhdXRvIHBhY2thZ2Ug
PSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKICAgICAg
ICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAg
ICAgICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5NWZiYzVlZjdiM2M5OGRiMTc2
YzNkNjQxOWYwZTMxYzI4MWVmMTc4Li5kMTMyNGVjNTFmYTYyMWI3OWRiZGQ0M2U4NThlMTNjZjMz
ZWRmOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQo
RG9jdW1lbnQmKQogewogICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwogICAgIGlmICghc3RhcnQo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbih0aGlz
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbigqdGhp
cyk7CiB9CiAKIFBsdWdpblZpZXc6On5QbHVnaW5WaWV3KCkKQEAgLTQxMCw4ICs0MTAsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAg
ICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3Ry
ZWFtIGZvciBpdC4gb3RoZXJ3aXNlLAogICAgICAgICAvLyBqdXN0IHBhc3MgaXQgb2ZmIHRvIHRo
ZSBsb2FkZXIKICAgICAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRl
KHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5u
b3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdp
bi0+cXVpcmtzKCkpOwotICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOworICAgICAg
ICAgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZy
YW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVn
aW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAg
ICAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBz
dHJlYW0tPnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUg
dGFyZ2V0IGZyYW1lIGlzIG91ciBmcmFtZSwgd2UgY291bGQgZGVzdHJveSB0aGUKQEAgLTQ1NCw4
ICs0NTQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3Qq
IHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgY3N0ciA9IHJlc3VsdFN0cmluZy51dGY4KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5T
dHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxv
YWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24o
KSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFu
Y2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0p
OworICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFy
ZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCks
IHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkp
OworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJl
YW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlcXVlc3RVUkwsIGNzdHIpOwogICAgIH0KIH0KQEAg
LTY5MCwxMSArNjkwLDExIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1Z2lu
Vmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRvIHJvb3QgPSBtX3BhcmVu
dEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwotICAgIFJlZlB0cjxKU0M6
OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6
OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6
OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOwogCiAg
ICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7Cisg
ICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApp
bmRleCA3Y2ZjN2E5YTgyZTcyYzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5ZjRlLi5iNWI2MGE4MDk5
MWQ2MDcxMGI4NzA2MzAyNDAyMWQ2NTA5MDYzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzE3LDcgKzMxNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBWZWN0b3I8Ym9vbCwgND4gbV9wb3B1cFN0YXRlU3RhY2s7CiAK
LSAgICAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPiA+IG1fc3RyZWFtczsKKyAgICAg
ICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPj4gbV9zdHJlYW1zOwogICAgICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFBsdWdpblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogCiAgICAgICAg
IGJvb2wgbV9pc1dpbmRvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDgw
ODcyMDc2NGQ3NjRkYmFkYTU1MDNiZmY4YzZhMmRjMjRlYjRmNGEuLmVlODE5OGE4ODI3MTY4MWU1
MWJjMWNlYzIxNzU1ZTFmNTc0ZGRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTEwNjEsNyArMTA2MSw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZXR1cm4g
V2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyog
cGx1Z2luVmlldykgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyYgcGx1Z2luVmlldykgY29uc3QKIHsK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkBAIC0xMDcy
LDIzICsxMDcyLDIzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93
ZWJGcmFtZSk7Ci0gICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkp
OworICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LnBhcmVudEZyYW1lKCkpOwogCi0gICAg
aWYgKCFwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTCBw
bHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAg
aWYgKCFwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKSkpOwogICAgICAg
ICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAg
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNU
UlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKICAgICAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblBh
Z2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoIXBsdWdpblZpZXctPm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAo
IXBsdWdpblZpZXcubWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdl
YktpdEVycm9yTUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2Vy
SW5mby5nZXQoKSwga2V5LCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5
LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnaW5O
YW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKKyAgICBpZiAocGx1Z2luVmlldy5w
bHVnaW4oKSkgeworICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2lu
KCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3
KiBwbHVnaW4KICAKICAgICBpbnQgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcgZGVzY3JpcHRp
b247Ci0gICAgc3dpdGNoIChwbHVnaW5WaWV3LT5zdGF0dXMoKSkgeworICAgIHN3aXRjaCAocGx1
Z2luVmlldy5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIFBsdWdpblN0YXR1c0Nhbk5vdEZpbmRQ
bHVnaW46CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVn
SW47CiAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFdFQl9VSV9TVFJJTkcoIlRoZSBwbHVnLWlu
IGNhblx4RTJceDgwXHg5OXQgYmUgZm91bmQiLCAiV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z2lu
IGRlc2NyaXB0aW9uIik7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBs
dWdpbgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVz
b3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9y
Q29kZSwgcGx1Z2luVmlldy0+dXJsKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJl
c291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5W
aWV3LnVybCgpLCBTdHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRvcHRD
T00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0JhZy5n
ZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVkV2l0
aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBs
dWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgRnJh
bWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1
Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQs
IHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOwor
ICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6
ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2Fk
TWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0YXR1
c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0xMTgw
LDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1Bs
dWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFt
ZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMs
ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luVmll
dyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxl
bWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZh
LWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxv
YWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2lu
Vmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIw
NTZhZTMxMmE1M2NkY2RiMjRiY2IwYmFhZDZmNzVjODcyNjVlNjEuLmE5NjVmNTkxOWVlZjQyYzE2
ZWYyNTJiMmUzYzI1MGFmNmU3YTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgc2V0V2ViRnJh
bWUoV2ViRnJhbWUqIHdlYkZyYW1lKSB7IG1fd2ViRnJhbWUgPSB3ZWJGcmFtZTsgfQogICAgIFdl
YkZyYW1lKiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJhbWU7IH0KIAotICAgIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5WaWV3
KikgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdl
YkNvcmU6OlBsdWdpblZpZXcmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZi
NjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZi
ZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2
NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2Vi
VVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1p
bWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5n
VVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVS
TCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlw
ZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3
ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBk
YXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAq
IFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVv
ZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBwbGFpblRl
eHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5j
b2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVm
ZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0cik7CkBA
IC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhf
SW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1lOjpsb2Fk
SFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8g
QlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1s
U3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CisgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3Ry
aW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAg
ICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VV
UkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4
IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlkZjZiOTBk
MGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1
LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBi
YXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5j
b2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRl
eHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMp
OwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VT
aXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JO
b3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2
ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6fkNBVmll
dygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENB
Vmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+
IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6c2V0Q29u
dGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1
bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRlYzAxNTJl
NTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3
MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3IEBAIGNs
YXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5
TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVmUHRyPENB
Vmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxDQVZpZXc+
IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAgIHR5cGVk
ZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lk
KiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4
MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVkN2U2NWFk
ODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5r
LmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAg
ICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlzcGxheUxp
bms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCitS
ZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGll
bnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxpbmsoY2xp
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsK
IH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMu
LmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5
TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlzcGxheUxp
bmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlM
aW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlzcGxheUxp
bms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxDVkRpc3Bs
YXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3BsYXlMaW5r
KCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVy
c2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4u
Y2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZl
cnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgSFJF
U1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2Us
IFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5I
ZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFj
ZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVl
YjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElX
ZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3R3JvdXAg
PSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2
aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3JsZCkKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91
cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAo
IXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357802</attachid>
            <date>2018-12-20 01:19:32 -0800</date>
            <delta_ts>2018-12-20 08:20:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181220181931.patch</filename>
            <type>text/plain</type>
            <size>406829</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDE3NTMzYzgwNDE5NTljYTM1YTIzNzlhMzE4ODhjMGEwYTQ1MjVjLi5lNmJiOWUyZjg5MzI5YjYx
OTc1NDcyYmY4ZDVkYjNmOWE1ZWNlMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOC0xMi0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90
RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6Cisg
ICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2Up
OgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFj
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5Q
YXJhbGxlbCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdl
bnRSZWNlaXZlQnJvYWRjYXN0KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1
ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVBbGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6
CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9w
ZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyYWI5MTFmZGY3Y2IzNDQ2ZTU2YWZhOGY0OWZkYmNjZDUzODU5MzU2Li5iZmExYzgw
OGZiNzgwMjg3ZGRlZjc3NDExNzQ4YTJjN2VjYzdlMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
Mzk2IEBACisyMDE4LTEyLTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1F
OjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFt
ZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFE
ZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVBZGFwdGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdp
blJlbmRlclBhc3MpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVu
ZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVU
ZXh0dXJlVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdl
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3Rp
ZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldFN0YXJ0
SW5kZXgpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0dldEVuZEluZGV4KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHA6CisgICAgICAgIChnZXRTZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2NvbnZlcnRUb05TUmFu
Z2U6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNo
b3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMpOgorICAgICAgICAqIGNzcy9Gb250
RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgor
ICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRz
KToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJhc2U6
OmNyZWF0ZUNTU09NV3JhcHBlciBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgor
ICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVuZGVyZWRSZWN0
c0Zvck1hcmtlcik6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToKKyAg
ICAgICAgKiBkb20vUG9pbnRlckV2ZW50Lmg6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpjcmVhdGUpOgor
ICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4
dFRvUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1do
aXRlc3BhY2VGb3JEZWxldGVkQXV0b2NvcnJlY3Rpb25BZnRlckNvbW1hbmQpOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRP
ZldvcmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5v
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQ
cmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJn
ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxl
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0Fw
cGx5QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGluZUFuZElt
cGxpY2l0U3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpt
ZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0UHJvcGVydGllc05vdEluKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBw
bHlQYXJhZ3JhcGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTWFrZVRleHRXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1h
a2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KToKKyAgICAgICAgKiBlZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1h
bmQ6OmZvcm1hdFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSk6Cisg
ICAgICAgICogZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjp0YXJnZXRSYW5nZXMgY29u
c3QpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0
eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQ6OnRhcmdldFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2Vy
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1Rv
T3BlbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0YXRpb25D
b21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRv
QXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNs
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVu
dCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGh0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
bVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlh
bFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5l
d1RhYik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXNDU1NSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcjo6a2V5UGF0aEZyb21JREJLZXlQYXRoKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUpOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSFRNTFBhcnNlcjo6YWRkUmVzb3VyY2VUb0FyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJj
ZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERpc3RhbmNlKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgICogcGFn
ZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5pdFdpdGhTaW1w
bGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9u
c0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJu
ZWxzRm9yQXppbXV0aEVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jl
c2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZnVs
ZmlsbFJlcXVlc3RXaXRoS2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1l
dGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRh
dGVUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnlQbGF5ZXJPZlZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBl
Z1RzU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFj
a0VuY3J5cHRpb25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPVHJhY2tFbmNyeXB0aW9u
Qm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJBbmltYXRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRp
b25Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tp
ZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29v
a2llU3RvcmFnZU9ic2VydmVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llU3RvcmFnZU9i
c2VydmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRl
bVRvU291cE1lc3NhZ2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cE1lc3NhZ2VCb2R5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpTZWFy
Y2hQb3B1cE1lbnVXaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51V2luOjpw
b3B1cE1lbnUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjphcHBseUNvbW1vbkJ1dHRvblBhZGRpbmdUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpw
YWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5l
cik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpTdG9yYWdlKToKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmFy
ZWEgY29uc3QpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAg
ICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAgICAg
ICogdGVzdGluZy9HQ09ic2VydmF0aW9uLmg6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9t
U291cmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQp
OgorCiAyMDE4LTEyLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIGJ1aWxkIGFmdGVyIHIyMzk0MTAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggM2YyN2E5NjVjYzZjM2UyZDI3MjliZGY1MDZlNjI5ZTUyNjdhODgyNS4uNzc1ZTY4
Y2NlY2E1NDBjZDZmYzNlMjg3ZWQxMzIyNjlhODY3YzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MzYgQEAKKzIwMTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2VXaXRoTmFtZTpib2R5Ol0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgdGFrZVNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NuYXBzaG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90
aWZ5UG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2Nl
cnRpZmljYXRlX2Zvcl9ob3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJh
c2U2NEVuY29kZWRQTkdEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlU3ViZnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3Rp
Y3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVG
cm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9X
ZWJJbnNwZWN0b3JQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFu
Z2UgaW5pdFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFw
c2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2Fy
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojpz
bmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6d2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpw
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9s
bGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VEaWN0
YXRlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmVwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSk6CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1h
c3NpZ25tZW50IG9wZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVk
IGZyb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYWQ2ZmE4MDVlNmM3MTcyNWQxMjRjOTc3NWYx
OGNhNGI4NzZiMzljOS4uNTkyNzY0YWViZDdiMzIxZmJjZjFmNDE0ODViNTg4MTYyNTI4YjMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMi0yMCAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8
PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYSk6CisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3Jv
dXAuaDoKKwogMjAxOC0xMi0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255
LmNvbT4KIAogICAgICAgICBbV2luXVtXZWJLaXRMZWdhY3ldW0NsYW5nXSBXZWJLaXQuaCB3YXJu
aW5nOiAnSVdlYkVkaXRpbmdEZWxlZ2F0ZTI6OnNob3VsZEluc2VydE5vZGUnIGhpZGVzIG92ZXJs
b2FkZWQgdmlydHVhbCBmdW5jdGlvbiBbLVdvdmVybG9hZGVkLXZpcnR1YWxdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggZTg0NGY5MDUxM2MzMzZjMjRlNjM5ZmVmNjk4YmQ4MzgxYjY0
NGFjMi4uZDcxNDdjZmM0M2M1YjE2OGZlMThkNzg4NmVhZWMwOTc4MGI0MzgxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTIwICBZdXN1a2Ug
U3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+
IGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjgwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcDoKKyAg
ICAgICAgKFNlYXJjaFBvcHVwTWVudUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKToKKyAgICAgICAg
KFNlYXJjaFBvcHVwTWVudUlPUzo6cG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
YmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBlbmNsb3NpbmdS
YW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisgICAgICAgICgtW1dlYlZp
c2libGVQb3NpdGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhDb3JyZWN0aW9uSW5kaWNhdG9yXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dl
YlBERlZpZXdQbGFjZWhvbGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTgt
MTItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlYjFkMTEwMDg4
NTg0M2QwMmY0NDYxYjgyMTc1YzUxMjYwZGE1YTk4Li5kODZhODI5NTIxMzMxNjkxM2U2MDUwYzNm
ZDEwYTIzZmM3MWFkODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzIgQEAKKzIwMTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAg
ICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAg
ICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3RhbnRpYXRlUGx1Z2lu
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHRQbHVnaW5SZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9h
ZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAg
KFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckl0ZW0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIGdldERpY3RhdGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3dyaXRl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRUeXBlczp0b1Bhc3RlYm9hcmQ6Y2FjaGVkQXR0cmlidXRl
ZFN0cmluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJs
YWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3Ry
dWN0b3IgYW5kIG1vdmUtYXNzaWdubWVudCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2
YWx1ZSBiZWluZyBtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjZj
MTI2YjcyMTM3MzM5NzI3YjI2ZjMzOWYwOThiMjczZmJlZmNkNy4uYTk1NDlhMmUyZWUwNmVkYjE0
ODg1YTkwYmQ5MjAxOTA3OWZhMjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDE4LTEyLTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNs
b3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVm
cmVzaCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Ymlu
ZGluZ0luc3RhbmNlKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbiBjb25zdCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6
bG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcp
OgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oOgorICAgICAgICAqIFdlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHA6CisgICAgICAgIChXS1FDQTo6
Q1ZEaXNwbGF5TGluazo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NWRGlzcGxheUxpbmsuaDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0ltYWdlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXS1FDQTo6Z2V0SW1hZ2VDb3B5KToKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisKIDIw
MTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYv
T3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9y
IHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAppbmRleCA0YWRjNzY5ZTZlNmE2OTAxODQ5
MDA0MmEzMzIxMTBjZWNhZDhmM2E4Li45OTNiZjJjZmEyZWEwYTYzY2NmOTcwMTg4NGI3OTMxYTgz
NzUyOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJh
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBA
IC0xODUsNyArMTg1LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhC
eXRlc05vQ29weShKU0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXkKIAogICAgIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSA9IGVsZW1lbnRTaXplKHRvVHlwZWRBcnJheVR5cGUoYXJyYXlUeXBl
KSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQqIHApIHsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgWz1dKHZvaWQq
IHApIHsKICAgICAgICAgaWYgKGRlc3RydWN0b3IpCiAgICAgICAgICAgICBkZXN0cnVjdG9yKHAs
IGRlc3RydWN0b3JDb250ZXh0KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAppbmRleCAxNzNkMDNlNWY5OWNmYWZi
MzFiNzE1ZjZhMGE4YmU0Y2JhYjcxODhmLi4wZDc5NDJhYWY3OWFkMmE2N2Y5NmQ3MjQ0MmQ5YjUx
MjhlNDhmNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRXYXRjaHBvaW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2F0Y2hwb2ludHMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3
V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCgKICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gY29t
bW9uLndhdGNocG9pbnRzLmFkZChjb2RlQmxvY2spOwogICAgIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludCogbmV1dGVyaW5nV2F0Y2hwb2ludCA9CiAgICAgICAgIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlKHZtKTsKLSAgICBuZXV0ZXJpbmdXYXRjaHBvaW50LT5z
ZXQoKS0+YWRkKHdhdGNocG9pbnQpOworICAgIG5ldXRlcmluZ1dhdGNocG9pbnQtPnNldCgpLmFk
ZCh3YXRjaHBvaW50KTsKICAgICBjb2RlQmxvY2stPmFkZENvbnN0YW50KG5ldXRlcmluZ1dhdGNo
cG9pbnQpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHNldCB0aGlzIHdhdGNocG9p
bnQgYXQgYWxsIGZvciBzaGFyZWQgYnVmZmVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IDE2Yzk5MjMwNzAxYWExZmVjNzAwZWZlMTNiMTczZWU5ZmYzYWFjMWEuLjhiMGQxYTI3
N2E0NDZhZjc3NWUwYzdmM2JiMWYxZGQyY2IxMDFjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0zMDYsOCArMzA2LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDAuMDEpCiAgICAgLCBtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRnVsbFRpbWVyKHRo
aXMpKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRy
eUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKLSAgICAsIG1fc3dlZXBlcihhZG9wdFJlZihuZXcgSW5j
cmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKLSAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRv
cHRSZWYobmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCisgICAgLCBtX3N3ZWVwZXIoYWRv
cHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQorICAgICwgbV9zdG9wSWZOZWNl
c3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCiAgICAg
LCBtX2RlZmVycmFsRGVwdGgoMCkKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAsIG1fZGVsYXll
ZFJlbGVhc2VSZWN1cnNpb25Db3VudCgwKQpAQCAtMjMzOSw3ICsyMzM5LDcgQEAgR0NBY3Rpdml0
eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCiAKIEluY3JlbWVudGFsU3dl
ZXBlciYgSGVhcDo6c3dlZXBlcigpCiB7Ci0gICAgcmV0dXJuICptX3N3ZWVwZXI7CisgICAgcmV0
dXJuIG1fc3dlZXBlci5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlv
blRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBkYjIzMDA0OTY1ZjhhMmFjZWY4N2NjOTNlZTU2ZGM5OTA3MWMxNTc2Li5hZjBmMDA0YzFlNjk4
YWI1Yjc5MDM2NWRjODJlNzhmZTdkMDkwZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC02MjksOCArNjI5LDggQEAgY2xhc3MgSGVhcCB7CiAgICAgCiAgICAgUmVmUHRyPEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7CiAgICAgUmVmUHRyPEdD
QWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKLSAgICBSZWZQdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgUmVmUHRyPFN0b3BJZk5lY2Vzc2FyeVRp
bWVyPiBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyOworICAgIFJlZjxJbmNyZW1lbnRhbFN3ZWVwZXI+
IG1fc3dlZXBlcjsKKyAgICBSZWY8U3RvcElmTmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNz
YXJ5VGltZXI7CiAKICAgICBWZWN0b3I8SGVhcE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IDYyMGRkMTU5
ODA2N2U4YzA0YzdlYzVkNjYzYTI2YjBhODYxMmNjNGUuLmI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIElzb0NlbGxTZXQ6On5Jc29DZWxsU2V0KCkKICAgICAg
ICAgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD46OnJlbW92ZSgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxs
ZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3Vy
Y2UoKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVkVGFzazxNYXJrZWRCbG9jazo6
SGFuZGxlKigpPiB7CiAgICAgcHVibGljOgpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8U2hhcmVk
VGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0
eU1hcmtlZEJsbwogICAgICAgICBib29sIG1fZG9uZSB7IGZhbHNlIH07CiAgICAgfTsKICAgICAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRhc2soKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUYXNrKCp0aGlzKSk7CiB9CiAKIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxv
Y2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9ja0luZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5oCmluZGV4IDE2YzljYmIyYjdj
MzI5NzQyN2Q4NzQ2MmJkODI0YTEzNjg2YzBjZTcuLmRhZGE2NzJjNDkxZGMwMzgxZjU4ZmExYTY3
MmI2YzZjMGI3ZTJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSXNvQ2VsbFNldCA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxJc29DZWxsU2V0PiB7CiAgICAgCiAgICAgYm9vbCBjb250YWlucyhIZWFwQ2VsbCog
Y2VsbCkgY29uc3Q7CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAK
ICAgICAvLyBUaGlzIHdpbGwgaGF2ZSB0byBkbyBhIGNvbWJpbmVkIHNlYXJjaCBvdmVyIHdoYXRl
dmVyIFN1YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbCB1c2VzIGFuZAogICAgIC8vIG91ciBtX2Js
b2Nrc1dpdGhCaXRzLgpAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICB2b2lkIGZvckVhY2hNYXJr
ZWRDZWxsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAg
UmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtlZENlbGxJ
blBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNp
dG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuYyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxp
bmVzLmgKaW5kZXggYWM0MTJhNzc4MWFkNTM2ODY5MTRlNGMzZmIwMjYzMWYwMjJkOWNmYi4uY2U3
ZGU4ZTE5MGVhOGU1M2Y5MzM2NGM3Y2YxZmNlNWVkMzRhNmY3NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLVJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0
b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
JiBmdW5jKQorUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6
Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xh
c3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1
YmxpYzoKQEAgLTEwNiwxMiArMTA2LDEyIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZp
c2l0b3ImKT4+IElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjCiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIElzb0NlbGxTZXQmIG1fc2V0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsK
KyAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tT
b3VyY2U7CiAgICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9
OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRl
eCBkMzc3ZjlhZWFmYjhkMzVlNzAzNmQwZDkyODcyMTMzMTBhZmI4YjMxLi5lMTRhMzc0OTIyN2Y3
NDY3NjBhYThhNDA5NDA0YWYyZDQ0MGViMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3Vic3BhY2UuY3BwCkBAIC04OSw3ICs4OSw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIFN1YnNw
YWNlOjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbERp
cmVjdG9yeVNvdXJjZSgpCitSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IFN1YnNw
YWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1Ymxp
YyBTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPiB7CiAgICAgcHVibGljOgpAQCAtMTEyLDEw
ICsxMTIsMTAgQEAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBTdWJzcGFj
ZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKQogICAgICAgICBMb2NrIG1fbG9jazsKICAgICB9
OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayhtX2ZpcnN0RGlyZWN0b3J5KSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFy
YWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPE1hcmtlZEJs
b2NrOjpIYW5kbGUqKCk+PiBTdWJzcGFjZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291
cmNlKCkKIHsKICAgICByZXR1cm4gY3JlYXRlUGFyYWxsZWxTb3VyY2VBZGFwdGVyPEJsb2NrRGly
ZWN0b3J5KiwgTWFya2VkQmxvY2s6OkhhbmRsZSo+KAogICAgICAgICBwYXJhbGxlbERpcmVjdG9y
eVNvdXJjZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYmEzYTE0
YzYzZWM3Mjg1ZGQ0ZDRmZTJmM2VlYjdiOGFkOWE1ZjRiMS4uODNlZjRkNzQ5ZmJjODY3ODY3NWM5
MjM0ODA0NzczZGIxOGNhYzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShjb25zdCBGdW5jJik7CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+PiBwYXJhbGxlbERpcmVjdG9y
eVNvdXJjZSgpOworICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gcGFyYWxs
ZWxEaXJlY3RvcnlTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgog
ICAgIHZvaWQgZm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKQEAgLTc4LDcgKzc4LDcg
QEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9p
ZCBmb3JFYWNoTm90RW1wdHlNYXJrZWRCbG9jayhjb25zdCBGdW5jJik7CiAgICAgCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBwYXJhbGxlbE5vdEVt
cHR5TWFya2VkQmxvY2tTb3VyY2UoKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgogICAgIHZvaWQgZm9yRWFjaExhcmdlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7CkBAIC04Nyw3
ICs4Nyw3IEBAIGNsYXNzIFN1YnNwYWNlIHsKICAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNv
bnN0IEZ1bmMmKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJh
bGxlbChjb25zdCBGdW5jJik7CisgICAgUmVmPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYp
Pj4gZm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAppbmRleCBl
ODNiMzgyZGY4MDZlZjI0ZmUwZGE4MGM1MGUyODYwOTc0MGE2MjYzLi4xNjcxMjdmZjQzODQzZWI2
MTRlMGIxYTZjZjc2OTNhNTBhN2JhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZUlubGluZXMuaApAQCAtODQsNyArODQsNyBAQCB2b2lkIFN1YnNwYWNlOjpmb3JF
YWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZv
ckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJiBmdW5jKQorUmVmPFNoYXJlZFRh
c2s8dm9pZChTbG90VmlzaXRvciYpPj4gU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJh
bGxlbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGNsYXNzIFRhc2sgOiBwdWJsaWMgU2hhcmVk
VGFzazx2b2lkKFNsb3RWaXNpdG9yJik+IHsKICAgICBwdWJsaWM6CkBAIC0xMjEsMTMgKzEyMSwx
MyBAQCBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9y
RWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbgogICAgICAgICAKICAgICBwcml2YXRlOgogICAg
ICAgICBTdWJzcGFjZSYgbV9zdWJzcGFjZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8TWFy
a2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CisgICAgICAgIFJlZjxTaGFyZWRU
YXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Jsb2NrU291cmNlOwogICAgICAgICBGdW5j
IG1fZnVuYzsKICAgICAgICAgTG9jayBtX2xvY2s7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9WaXNp
dExhcmdlQWxsb2NhdGlvbnMgeyB0cnVlIH07CiAgICAgfTsKICAgICAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
YXNrKCp0aGlzLCBmdW5jKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDU4OTY2MTY0MDIwZjg4YjZlOTc4Mjg5YjI0OGJhYjU5OTZkNGNmNzAu
LmFkZDVhNGUyYWI1MWJjY2JhNGM3NDk1MmE0YWQ2OTY2ZjRjM2VhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAg
ICAgICBtZXNzYWdlID0gV29ya2VyOjpjdXJyZW50KCkuZGVxdWV1ZSgpOwogICAgIH0KICAgICAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUobWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOworICAgIGF1dG8gbmF0aXZlQnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CiAgICAgQXJy
YXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01v
ZGUoKTsKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShz
aGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggNGU1ZWYxNTQxYjRiNDYy
ZGVjMDQ2MmVjOTE2MjA4ZDVlMTk5OTcxZi4uNmM1NmQ1OWYxNzFjNTk4ZDQ2MjRhYmZmNTliMTZi
NzRhMGVmMTRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmNwcApAQCAtMjg5LDIwICsyODksMjAgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1w
SW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAw
LCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6
c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBB
cnJheUJ1ZmZlcjo6c2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdAogewogICAg
IHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdpbiksIGNsYW1wSW5kZXgoZW5kKSk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikg
Y29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlKGRvdWJsZSBiZWdpbikg
Y29uc3QKIHsKICAgICByZXR1cm4gc2xpY2VJbXBsKGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZjxBcnJheUJ1ZmZlcj4gQXJy
YXlCdWZmZXI6OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAog
ewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7Ci0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOworICAgIGF1dG8gcmVz
dWx0ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgp
KSArIGJlZ2luLCBzaXplKTsKICAgICByZXN1bHQtPnNldFNoYXJpbmdNb2RlKHNoYXJpbmdNb2Rl
KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuaAppbmRleCBmNjk5Yzk0NWFlNDA0ZTJlMGJiZDdjZmJjNWU5NDlkMjgz
ZWE4YmRkLi4zMGZiYTZhNmEwODQ2YTE3MmIzOWYxNjdjYTJlNDRjMDAxYmYyNWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEyOCw4ICsxMjgs
OCBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJh
eUJ1ZmZlcj4gewogCiAgICAgaW5saW5lIHNpemVfdCBnY1NpemVFc3RpbWF0ZUluQnl0ZXMoKSBj
b25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPEFycmF5QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBl
bmQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2Uo
ZG91YmxlIGJlZ2luKSBjb25zdDsKICAgICAKICAgICBpbmxpbmUgdm9pZCBwaW4oKTsKICAgICBp
bmxpbmUgdm9pZCB1bnBpbigpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGNsYXNzIEFycmF5QnVmZmVy
IDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CiAgICAgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlSW50ZXJuYWwoQXJyYXlCdWZmZXJDb250ZW50cyYmLCBj
b25zdCB2b2lkKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBvbGljeSk7CiAgICAgQXJyYXlCdWZm
ZXIoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNl
SW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBSZWY8QXJyYXlC
dWZmZXI+IHNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAg
ICBpbmxpbmUgdW5zaWduZWQgY2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0OwogICAgIHN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgY2xhbXBWYWx1ZShkb3VibGUgeCwgdW5zaWduZWQgbGVmdCwg
dW5zaWduZWQgcmlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAppbmRleCBk
MWE2YzJiOTZjYTVhOGZmN2Y3YTMxNGU2MDJhMWFjYTgyNTRjMTI4Li42NGZmZjRhODdiMDVjMzk4
Yzg4MTFlOGRiNmM1ZDNkNjZhMTAwODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6c19pbmZvID0gewogCiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6
OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYgdm0pCiAgICAgOiBCYXNlKHZtLCB2
bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X3NldChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKKyAgICAsIG1fc2V0
KGFkb3B0UmVmKCpuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKIHsKIH0KIApAQCAtNjIs
NyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSkKIAogdm9pZCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQ6OmZpcmVBbGwoKQogewotICAgIHNldCgpLT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVy
IHdhcyBuZXV0ZXJlZCIpOworICAgIG1fc2V0LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVy
IHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmgKaW5kZXggOWE2ZjcxYTk2OGNjMTk0NmEwZDc5MzYxMWUwNTJiZDZlYmJlMDFh
Ny4uZTVkNmQwOTc0YTU4ZWJiMGIzYTNlODgxNTU0NGE1YTU4ZmM0MjMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKICAgICAKLSAgICBXYXRjaHBvaW50
U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAgIFdhdGNocG9pbnRTZXQmIHNl
dCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBmaXJlQWxsKCk7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZN
Jik7CiAgICAgCi0gICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworICAgIFJlZjxXYXRj
aHBvaW50U2V0PiBtX3NldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAppbmRleCA2YzBiOTcxMDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdlLi4xZDMyY2Yz
MmIyNzdhMTU4ZDllMWNlNTVkNWYxY2M0YWE4ZDkyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAt
NTYsOSArNTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1
ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAg
ZW5kID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CiAgICAgCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2lu
LCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOworICAgIGF1dG8gbmV3QnVm
ZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApp
bmRleCBiNzUxZWVhOWY1NTI0Mjc0MGRkMjdmZjBiOTgzYTBiMmQwZDI2NDY5Li5kZjFmNGRmOTA0
NmE0NTgyYmNjMDQ5NTMzOWVlY2ViZGEyY2E5YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2
aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAgICAgIH0KIAogICAgICAgICAvLyA2
LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVt
LgotICAgICAgICBSZWZQdHI8Q0RNPiBpbXBsZW1lbnRhdGlvbiA9IENETTo6Y3JlYXRlKGRvY3Vt
ZW50LCBrZXlTeXN0ZW0pOworICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVh
dGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CiAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggNDg5OGNjYzYzYWMyZjQyZWE3MGUwN2E4
M2U0NWJiZDViZjQ2NDJmYi4uODMxYWZkMTg5Y2VmYjZkY2JhZGYzMDVkN2FmNmExYTYwYzg1NjZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjQx
LDcgKzI0MSw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBjb25zCiAgICAgaWYgKGlzVVJMU2VhcmNo
UGFyYW1zKCkpCiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygp
LmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNCbG9iKCkpIHsKLSAgICAgICAgUmVmUHRyPEZv
cm1EYXRhPiBib2R5ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGJvZHkgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVuZEJsb2IoYmxvYkJvZHkoKS51
cmwoKSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCBS
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29ucwogICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgp
LmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzRm9ybURhdGEoKSkgewogICAgICAgICBBU1NFUlQo
IWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRh
PiBib2R5ID0gY29uc3RfY2FzdDxGb3JtRGF0YSo+KCZmb3JtRGF0YUJvZHkoKSk7CisgICAgICAg
IGF1dG8gYm9keSA9IG1ha2VSZWYoY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgp
KSk7CiAgICAgICAgIGJvZHktPmdlbmVyYXRlRmlsZXMoJmRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSk7CiAgICAgICAgIHJldHVybiBib2R5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMmIzMzNlNTE2YmVh
ZDdmZjY0OWY0ZTgxZjE0NmJlZTk4NjI5NTQ1OC4uNTUzNjg5NDU3MDkwY2JkNzVkMzkwODFjNjYz
NDYzNTQ2ZGNmNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTMwNCwxMCArMzA0LDEwIEBAIHZvaWQgR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBzdWNjZXNzQ2Fs
bGJhY2ssIFJlCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8gbm90
aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFj
ayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOworICAgIHN0YXJ0
UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKLSAgICBtX29uZVNob3RzLmFkZChub3RpZmllcik7
CisgICAgbV9vbmVTaG90cy5hZGQoV1RGTW92ZShub3RpZmllcikpOwogfQogCiBpbnQgR2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxi
YWNrLCBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIFBvc2l0
aW9uT3B0aW9ucyYmIG9wdGlvbnMpCkBAIC0zMTUsMTQgKzMxNSwxNCBAQCBpbnQgR2VvbG9jYXRp
b246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNr
LCBSZWZQdHI8UAogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywg
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOworICAgIGF1dG8g
bm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOworICAgIHN0
YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKICAgICBpbnQgd2F0Y2hJRDsKICAgICAvLyBL
ZWVwIGFza2luZyBmb3IgdGhlIG5leHQgaWQgdW50aWwgd2UncmUgZ2l2ZW4gb25lIHRoYXQgd2Ug
ZG9uJ3QgYWxyZWFkeSBoYXZlLgogICAgIGRvIHsKICAgICAgICAgd2F0Y2hJRCA9IG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+Y2lyY3VsYXJTZXF1ZW50aWFsSUQoKTsKLSAgICB9IHdoaWxlICgh
bV93YXRjaGVycy5hZGQod2F0Y2hJRCwgV1RGTW92ZShub3RpZmllcikpKTsKKyAgICB9IHdoaWxl
ICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgbm90aWZpZXIuY29weVJlZigpKSk7CiAgICAgcmV0
dXJuIHdhdGNoSUQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcAppbmRleCAyNThkODlhNWFkYWJjYTU4OGExOWE0OGQ5NzhmNmVlMjIx
ZjhkZTdlLi4xODQ3NDM5MTkwYThiNzliZWY3MDY0MzJmZDJmOWQ3NTU2OTA3MzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC05
NywxMSArOTcsMTEgQEAgdWludDY0X3QgSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogICAg
IHJldHVybiBtX2luZm8udmVyc2lvbigpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
RGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xpc3Q+IElE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgbmFtZSA6IG1faW5mby5vYmplY3RTdG9yZU5hbWVzKCkpCiAgICAgICAgIG9iamVjdFN0
b3JlTmFtZXMtPmFwcGVuZChuYW1lKTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5zb3J0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBh
MzgzMTY2ZDhiZjdlYmNkNGUwOTM5NTk0MDIyZGY0OTdmMTVlZTM4Li5mYzNlMTJiZjUzZmUwN2Y2
Y2RjMTk4YjllZTYxNTdjOTQ4MjY5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSURCRGF0YWJh
c2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZl
bnRUYXJnZXQKICAgICAvLyBJREJEYXRhYmFzZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgp
IGNvbnN0OwogICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdDsKLSAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgT2JqZWN0U3RvcmVQYXJh
bWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4ga2V5UGF0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA0YmJkZTJiYmViNTkxMWZiMzExMWNiMzUxN2ZjZjc2YTIzM2EyOTIzLi42NmNlYzBjZTY2NTMx
MTg3NjUyNzBlMGFkMzE2MTFjNzc5NjYzOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xMjIsMTEgKzEyMiwxMSBA
QCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBj
b25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1f
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVh
dGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6
IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA2ZmRkM2YzZjAwOGZjYzEwMmY3Mzc3MjBlNTE3
MjE0Y2ZmZDE5MGYyLi5jZmM3ZGY3MjBjY2E2OTc0OGZkYzY1NTEyYjlmMjYyNTJmNmQ2ZjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdDsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1l
cygpIGNvbnN0OwogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbigpOwogICAgIGJvb2wg
YXV0b0luY3JlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmRmZmU2OGUxMmNkMjRkZTQ2Njdl
ODI3MWZjOTc5ZjdhYmFjMmUxZi4uYjgyYjY2YTFkMjNmN2FmNTQzODNiMjkzM2MyNTNlYzQzMzYx
MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcApAQCAtMzcyLDEzICszNzIsMTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIG1fb3BlblJlcXVlc3RzLnJl
bW92ZSgmcmVxdWVzdCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0
aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikK
K3ZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKICAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBvcGVyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAg
ICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwor
ICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbi5j
b3B5UmVmKCkpOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlkZW50aWZpZXIs
IFdURk1vdmUob3BlcmF0aW9uKSk7CiAKICAgICBzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1l
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmgKaW5kZXggNWI4NDk4NjQ0ZmQ5M2Y4OGVmZjBjYjZmY2I3YzYyMmQxNjRiYmM2YS4uMWY3
Njc1M2JlZDViNTVhODcxMmQ3YTJkZjUyYmRkOGNmODBmOGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0xNjIsNyArMTYy
LDcgQEAgY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZlbnQKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21t
aXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMoY29uc3QgSURCRXJyb3Im
KTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYpOworICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOwogICAgIHZvaWQgcGVuZGluZ09wZXJhdGlv
blRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBlODU1MTI1MzFiNDY0ZDNkMzYxZTM0
YjNiODlhYWMxMzZkMGIxZmVjLi44ZGRiNTZlMTc4YjcyZWYyMWE2NjZlYjE2OWRmYzE2ZWU5ODky
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtMTgxLDQwICsxODEsMzcgQEAg
Y2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGljIFRyYW5zYWN0aW9u
T3BlcmF0aW9uIHsKICAgICB9CiB9OwogCi1pbmxpbmUgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0
aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK2lubGluZSBSZWY8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShjb25z
dCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYpKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSk7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0
ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVy
Zm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1w
bDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJh
bnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+
IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0
RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29u
c3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rp
b25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUsIHBlcmZvcm0s
IHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24p
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEs
IE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEsIHR5cGVuYW1l
IE1QMiwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDM+Ci1SZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0
ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVy
Zm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEsIE1QMiwgTVAzKSwKQEAgLTIyMiwyNCAr
MjE5LDIyIEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFt
ZXRlcjMpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25J
bXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1l
dGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJh
dGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
PE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVy
MSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEs
IHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURC
UmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxKSwKICAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBh
cmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBy
ZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyPgotUmVm
UHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1Jl
ZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAg
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElE
QlJlc3VsdERhdGEmKSwKQEAgLTI0NywxMiArMjQyLDExIEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgY29uc3QgUDEmIHBhcmFt
ZXRlcjEsCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24g
PSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVx
dWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwotICAgIHJl
dHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5z
YWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBs
ZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1QMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0
ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAg
ICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBs
ZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjYxLDggKzI1NSw3
IEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMp
CiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1Q
MSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9w
ZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25J
bXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9y
bSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmNwcAppbmRleCAxNGJiOTc3NTM2YmJmYmZmMmVhYzYzMDkwNjQwOTQ0
MGRiZmEzY2ZjLi4zYWE0M2E5OWFlMDk4MWM4ZmMwZGY1MTZjYmNlYTZmYjQxODc2MTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
Y3BwCkBAIC0xMTAsOCArMTEwLDcgQEAgdm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShj
b25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYWludHMsIFByb21pc2UmJgogICAgICAgICB2
aWRlb0NvbnN0cmFpbnRzLnNldERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKCk7CiAKICAgICBhdXRv
IHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRvY3VtZW50LCB7IE1lZGlhU3Ry
ZWFtUmVxdWVzdDo6VHlwZTo6VXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3RyYWludHMpLCBX
VEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpIH0sIFdURk1vdmUocHJvbWlzZSkpOwotICAgIGlmIChy
ZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJlcXVlc3QtPnN0YXJ0KCk7
CiAKICAgICByZXR1cm47CiB9CkBAIC0xMjMsOCArMTIyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEoY29uc3QgU3RyZWFtQ29uc3RyYWludHMmIGNv
bnN0cmEKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAK
ICAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRvY3VtZW50LCB7
IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhLCB7IH0sIGNyZWF0ZU1lZGlh
Q29uc3RyYWludHMoY29uc3RyYWludHMudmlkZW8pIH0sIFdURk1vdmUocHJvbWlzZSkpOwotICAg
IGlmIChyZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJlcXVlc3QtPnN0
YXJ0KCk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggZTEwYjk2YmM5
MWQ2ZmU1OGNjMGFiOWVjYTYxMjZhZjJiMzY4MTkzYy4uYTFjYjc0YmE2MTliYjcyNGU0YTZlMDU3
YjlkOWZkYjkzODA3MDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw5ICs0OSw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJl
cXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJl
cXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmIHBy
b21pc2UpCitSZWY8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgRE9NUHJvbWlz
ZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGRvY3VtZW50LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUocHJvbWlzZSkpKTsKICAgICByZXN1bHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IGRlNTFmZDlmYzQzZWIyOTdlNWQyYTI3ZTc2
NGFhNGQyN2MzMGE1ZjEuLjZkZTdlNWM4ZDdiYTQxM2UyMDM2OGU1NDAyNzgwNzUxN2I3NTFkOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lZGlhUmVxdWVz
dD4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYs
IERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYmKTsKKyAgICBz
dGF0aWMgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhU3RyZWFt
UmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlhU3RyZWFtPj4m
Jik7CiAgICAgdmlydHVhbCB+VXNlck1lZGlhUmVxdWVzdCgpOwogCiAgICAgdm9pZCBzdGFydCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5k
ZXggMGZmMGUyMDQzODBlN2ZkZGJjMDA4MGJjNTRjYWE4N2E5NzNlMDhlZi4uNzUwNjhlMTkwYTE5
YTQ0OTQwNjU5ZGJkZDM3NGRmMjc4NGQ5YmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBBdWRp
b1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1i
ZXJPZlZhbHVlcywgYm8KIAogICAgIC8vIE5vdyBzdW0gYWxsIG9mIHRoZSBhdWRpby1yYXRlIGNv
bm5lY3Rpb25zIHRvZ2V0aGVyICh1bml0eS1nYWluIHN1bW1pbmcganVuY3Rpb24pLgogICAgIC8v
IE5vdGUgdGhhdCBjb25uZWN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBtb25vLCBidXQgd2UgbWl4
IGRvd24gdG8gbW9ubyBpZiBuZWNlc3NhcnkuCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBzdW1taW5n
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOworICAgIGF1
dG8gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNl
KTsKICAgICBzdW1taW5nQnVzLT5zZXRDaGFubmVsTWVtb3J5KDAsIHZhbHVlcywgbnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX3JlbmRlcmluZ091dHB1dHMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDg4YWUwNGFiYmUzOWU1MTczNGViYjAxN2UyMGYyNjFmYmIwNDFl
NTYuLmI5Y2MyMGNkMmU1YWZjNzYxMWIzNzAzMDZlMTA0MTI4NDdiMjA4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtODcsOCArODcsOCBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxp
emUoKQogICAgIC8vIENyZWF0ZSBkb3VibGUgYnVmZmVycyBvbiBib3RoIHRoZSBpbnB1dCBhbmQg
b3V0cHV0IHNpZGVzLgogICAgIC8vIFRoZXNlIEF1ZGlvQnVmZmVycyB3aWxsIGJlIGRpcmVjdGx5
IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVhZCBieSBKYXZhU2NyaXB0LgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBp
bnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0
ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVSYXRlKSA6IDA7
Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gb3V0cHV0QnVmZmVyID0gbV9udW1iZXJPZk91
dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRvIGlucHV0QnVm
ZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKKyAgICAg
ICAgYXV0byBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMgPyBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1w
bGVSYXRlKSA6IDA7CiAKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKGlucHV0QnVmZmVy
KTsKICAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChvdXRwdXRCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCmlu
ZGV4IDA5MWEzMGEyNmY1MTliZGM2ODM5ZDBiYzY3ZjA1ODY2M2I2NzRhZDEuLjdlMTNkMDYwYjM1
MTZkMjVlMGIyM2M5ZGQ2NDA0ZjdhYjA2MzViYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBA
QCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBSZWZQdHI8U1FMUmVzdWx0U2V0PiByZXN1bHRTZXQgPSBTUUxSZXN1bHRTZXQ6
OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0OjpjcmVhdGUoKTsK
IAogICAgIC8vIFN0ZXAgc28gd2UgY2FuIGZldGNoIHRoZSBjb2x1bW4gbmFtZXMuCiAgICAgcmVz
dWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNRTFN0YXRl
bWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgLy8gRm9yIG5vdywgdGhpcyBzZWVtcyBz
dWZmaWNpZW50CiAgICAgcmVzdWx0U2V0LT5zZXRSb3dzQWZmZWN0ZWQoZGF0YWJhc2UubGFzdENo
YW5nZXMoKSk7CiAKLSAgICBtX3Jlc3VsdFNldCA9IHJlc3VsdFNldDsKKyAgICBtX3Jlc3VsdFNl
dCA9IFdURk1vdmUocmVzdWx0U2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKaW5kZXggM2QxNTRhYzVhMjFhZTYxYzY1N2Ez
MDBmYWQ5NjM2YmEwZDgzZDkwNy4uMGRjNDExYWUzMDNlNGIwODZlZGJmOWY4NjhmODVkYjRkMWFj
NjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkBAIC00MCwx
MCArNDAsNyBAQCBSZWY8V2ViR1BVPiBXZWJHUFU6OmNyZWF0ZSgpCiB2b2lkIFdlYkdQVTo6cmVx
dWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdl
YkdQVUFkYXB0ZXJQcm9taXNlJiYgZGVmZXJyZWQpIGNvbnN0CiB7CiAgICAgYXV0byBhZGFwdGVy
ID0gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGRlc2NyaXB0b3IpOwotICAgIGlmICghYWRhcHRlcikK
LSAgICAgICAgZGVmZXJyZWQucmVqZWN0KCk7Ci0KLSAgICBkZWZlcnJlZC5yZXNvbHZlKCphZGFw
dGVyKTsKKyAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIuZ2V0KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuY3BwCmluZGV4IGVlZWM0ZGY2OGM2MmU0MTdkNGRiM2I3MTEyMjM0ZGYzY2UyZmU5
YTguLjc3ZjlmNDkxZTRmYzE2MTllMDBkYjkyNjc0OGVhYWJhYmJkNTExYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCkBAIC0zNCwxMCAr
MzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQWRhcHRlcj4g
V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShjb25zdCBX
ZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBGSVhNRTogVmFs
aWRhdGlvbiBvbiBkZXNjcmlwdG9yLgotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVQWRh
cHRlcihkZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQWRhcHRl
cihkZXNjcmlwdG9yKSk7CiB9CiAKIFdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoY29uc3Qg
V2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKaW5kZXggNGI4ZWZmNTIxM2I2YmYyYzk1MDJl
NjE2M2U2YTQ4ZDZkNDViM2ZlYy4uOGQwNGU1NGJmMmE2NDA4ZTllODgyNTRjODIwNGNlYzU1YzE2
ODA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIu
aApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3I7CiAKIGNs
YXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVBZGFwdGVyPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUoY29uc3QgV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUFkYXB0ZXI+IGNy
ZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwogCiAgICAgUmVmUHRyPFdlYkdQ
VURldmljZT4gY3JlYXRlRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVCdWZmZXIuY3BwCmluZGV4IDM0OTQxZDBlYTVmNzkyNTFjYjQ4ZGRlYmY3NDEz
NDNmOWU0YmE3MDkuLjkwOWE1Yzc2NDJmMjRhZjY0MjQ4ZDk5OWRjMzFjNGU0MjBmNDA4NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcApAQCAt
MzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVCdWZm
ZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKQorUmVmPFdl
YkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkpOwogfQogCiBXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKaW5k
ZXggZTI3NjQyNWJkNDJiNWQ2ODJmYmUyNDI4YTQwMDZlMjNmNDkyMzg3NS4uNTFhZWJmMmUyYTc4
NWExOWRhM2IwZGI2ODY4YWRhY2Q3Y2JjYjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gY3JlYXRlKFJl
ZjxHUFVCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVmZmVyPiBjcmVhdGUoUmVm
PEdQVUJ1ZmZlcj4mJik7CiAKICAgICBjb25zdCBHUFVCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggZGJiODAzYmUyNzMyMWI5
YmU2Y2RmNTlkOTExYWZiYzAzMzg0Mjk0Mi4uYjZlY2FhYTE1ZTQyYWRjOGUyZTUxYTQ1ZTI3YTRk
NDY4NGExMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZl
cjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVDb21t
YW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZm
ZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVQ29tbWFuZEJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVD
b21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBXZWJHUFVDb21tYW5kQnVmZmVy
OjpXZWJHUFVDb21tYW5kQnVmZmVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKQEAg
LTY1LDggKzY1LDkgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVDb21t
YW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGUKICAgICAgICAgZ3B1UmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IgeyBjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVy
ZSgpLCBjb2xvckF0dGFjaG1lbnQuY2xlYXJDb2xvciB9KTsKICAgICB9CiAKLSAgICBhdXRvIGVu
Y29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29tbWFuZEJ1ZmZlci5nZXQo
KSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpOwotICAgIHJldHVybiBlbmNvZGVy
ID8gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rlci5yZWxlYXNl
Tm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3ZlKGdwdVJlbmRl
clBhc3NEZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggNzJkZjMxMmZm
ODgwYjc4ZjdlY2ExMTY5MzI1MjYzOTI0MzdiZDFlZi4uOThlZTQwY2RkZDQ0NGIxMDU2NWJjZDQ3
ZDM3NDg0MzVjYmNiZTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiAKIGNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+
JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZjxHUFVD
b21tYW5kQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUNvbW1hbmRCdWZmZXImIGNvbW1hbmRC
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5kZXggOTQxNWMz
NWZiMWIxNGI1MzUyMTAxOGQzZDdiMTYwNjNjMWYyYzMzYi4uNmNiZTQzMWU2NGVkMjgzZmE1OGU5
OWY2Y2NjZTY3ZjIyNjYzYmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCkBAIC00OSw4ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGUoUmVmPFdlYkdQVUFk
YXB0ZXI+JiYgYWRhcHRlcikKIHsKLSAgICBhdXRvIGRldmljZSA9IEdQVURldmljZTo6Y3JlYXRl
KCk7IC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4gY3JlYXRpbmcgbV9k
ZXZpY2UuCi0gICAgcmV0dXJuIGRldmljZSA/IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoV1RG
TW92ZShhZGFwdGVyKSwgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7CisgICAg
aWYgKGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKSkgLy8gRklYTUU6IFRha2UgYWRh
cHRlciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoV1RGTW92ZShhZGFwdGVyKSwgZGV2aWNlLnJlbGVh
c2VOb25OdWxsKCkpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV2ViR1BVRGV2aWNlOjpX
ZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQVURldmljZT4m
JiBkZXZpY2UpCkBAIC02Myw4ICs2NCw5IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJl
ZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlCiBSZWZQ
dHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVmFsaWRhdGlv
biBvbiBkZXNjcmlwdG9yIG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT5jcmVh
dGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRv
ci51c2FnZSB9KTsKLSAgICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpjcmVhdGUoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBidWZmZXIgPSBt
X2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNjcmlwdG9yLnNp
emUsIGRlc2NyaXB0b3IudXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNy
ZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRlQmluZEdyb3Vw
TGF5b3V0KFdlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25z
dApAQCAtODYsOCArODgsOSBAQCBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdlYkdQVURldmlj
ZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BVUGlwZWxpbmVMYXlvdQogUmVmUHRyPFdlYkdQ
VVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFdoYXQgY2FuIGJlIHZhbGlkYXRlZCBoZXJlPwotICAgIGF1dG8gbW9kdWxlID0gbV9kZXZpY2Ut
PmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRv
ci5jb2RlIH0pOwotICAgIHJldHVybiBtb2R1bGUgPyBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0
ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChhdXRvIG1vZHVs
ZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ciB7IGRlc2NyaXB0b3IuY29kZSB9KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVs
ZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogc3RhdGljIE9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiB2YWxpZGF0
ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQpAQCAtMTA4LDE0ICsxMTEsMTYgQEAgUmVmUHRyPFdlYkdQVVJlbmRl
clBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRl
clBpcGUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBwaXBlbGlu
ZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50U3RhZ2UpLCBk
ZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3RhdGUgfSk7Ci0g
ICAgcmV0dXJuIHBpcGVsaW5lID8gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShwaXBlbGlu
ZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gcGlwZWxpbmUgPSBt
X2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdlKSwgZGVzY3Jp
cHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0pKQorICAgICAg
ICByZXR1cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShwaXBlbGluZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQVUNvbW1hbmRC
dWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
YXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAg
ICByZXR1cm4gY29tbWFuZEJ1ZmZlciA/IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21t
YW5kQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21t
YW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSkKKyAgICAgICAgcmV0
dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BVUXVldWU+IFdl
YkdQVURldmljZTo6Z2V0UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDFhMWM1MmNiYzk3
NTBjYjc0YTZkYjc2NTdiMmNlODFkNmEwNzA4MWEuLmRhZjFiMDgyMjdkNDY1NjAzOWMzNzJkMzUz
MWMwZmY5ODY0N2I0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYg
Y29tbWFuZEJ1ZmZlciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCitSZWY8
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUo
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmVmPEdQVVJlbmRlclBh
c3NFbmNvZGVyPiYmIGVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RG
TW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOwogfQogCiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYgY3JlYXRvciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIuaAppbmRleCAzMTI5NmUzZTllODI4ZTEwNDIxMGVkNDA1OTc4ZTJlMmYzMWZjMDdm
Li44N2E3ZWFmMTlmMDk5MDcxZGI3ZDNhZjBhOGQxNGEwMGVlOTJhNThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV2ViR1BVQnVmZmVyOwogCiBjbGFzcyBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0Vu
Y29kZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYm
KTsKIAogICAgIC8vIEZJWE1FOiBMYXN0IGFyZ3VtZW50IHNob3VsZCBiZSBWZWN0b3I8dW5zaWdu
ZWQgbG9uZz4uIFdoeSBpcyB0aGUgZ2VuZXJhdGVkIGNvZGUgaW5jb3JyZWN0bHkgYXNzdW1pbmcg
dGhlIElETCB3YW50cyBhIHNlcXVlbmNlPHVuc2lnbmVkIGludD4/CiAgICAgdm9pZCBzZXRWZXJ0
ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mJiwg
VmVjdG9yPHVuc2lnbmVkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCAzY2NmM2MwZGEyNjU1NmFmMzhm
OTczODYyYTQ4OGVjMGMzMWVhOWZhLi4xMDZjNTc2ODBkOTc1NzkxZmZmMzM4MWMxZjlkNjYxMTM5
Mjg2NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKK1JlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWY8R1BVUmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVS
ZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CiB9CiAKIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxp
bmU+JiYgcGlwZWxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCAyYzhiODY2OGZhZjZiZTA5MTQ5NDU1MWZjNzNj
YWNkOTIwZjk3ZDIyLi4zOTE3ZmFkNzY3ZmNjYjBlZDc1YmRlYjc0Y2E2YTBkYTEzY2M4Zjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVJlbmRlclBpcGVs
aW5lPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4g
Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZT4gY3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CiAKICAgICBS
ZWY8R1BVUmVuZGVyUGlwZWxpbmU+IHJlbmRlclBpcGVsaW5lKCkgeyByZXR1cm4gbV9yZW5kZXJQ
aXBlbGluZS5jb3B5UmVmKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKaW5kZXggZTgyM2IwNDRhOGYwMmNkNmJjNTky
MzA0MWNmOGU1OTZiODYxYjk4ZS4uOTk0YzJlY2EwYTk4YmM1ZjZkMzY0ZDkzNjA5ZGY5Y2QyYTFj
N2YzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJNb2R1bGUuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUo
UmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCitSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBX
ZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1v
ZHVsZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RG
TW92ZShtb2R1bGUpKSk7CiB9CiAKIFdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BVU2hhZGVyTW9k
dWxlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAppbmRleCA0MjAyOTk0ZDQ3ZWMy
NGExZmUwOWE2ZWI0YzZmNzQ1N2EwYWM0MThkLi42NDY2MGIzMWU0NTZmZmEwODA1NmRlZTU1YjZj
YWQ0NWIzMzM3OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVNo
YWRlck1vZHVsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJH
UFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsKIAogICAgIGNv
bnN0IEdQVVNoYWRlck1vZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGUucHRy
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJl
LmNwcAppbmRleCBjNjc4MGVmNjFiMDI5OWZlZTE5NWYxMjVmNTZjZTRkOGU4NjJjNzI3Li45ZDlk
N2Y5NjNiZDJlOTE1N2Q4NWNkZDM3YzE4MzA5ZTI2MzZjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcApAQCAtNDQsOCArNDQsOSBAQCBX
ZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUpCiAK
IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCkKIHsKLSAgICBhdXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUtPmNyZWF0ZURl
ZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHJldHVybiBncHVUZXh0dXJlID8gV2ViR1BVVGV4dHVy
ZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0VGV4dHVyZVZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoZ3B1VGV4dHVy
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwCmluZGV4IDA0NTlhNTNhMjg4ZWNmM2IyNjhmYzJjMDY2NDViNzRi
MTIzNDY1MWMuLjcyNjU5NDVhMjNlOWMxMGQyNmE3MDNkZmU0NDJkMGY0N2FiMGYwMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5j
cHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2Vi
R1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQVVRleHR1cmU+
JiYgdmlldykKK1JlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZpZXc6OmNyZWF0
ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKIH0KIAogV2ViR1BVVGV4dHVyZVZp
ZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaAppbmRleCA0MGZk
ODE0OTJiMDgxZGZjZGM5MWJlZjUzODJhZDNmNzk4YTkzNmY3Li5mYmViOGJjNjY1NjA0Mjc3ZTBk
ZjM5NTAzZjg3OTFiZWNhMDkyYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkdQVVRleHR1cmVWaWV3PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVUZXh0
dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQ
VVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmPEdQVVRl
eHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuY29weVJlZigpOyB9CiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5k
ZXggZTI5Njk0NmRkZjI1YjRhZTYyNjZkOTVlYzJkMTBjNzNjNDRiNjM3Yi4uODA5MDQxMTM1ZGVj
MDk2ZmQ5MDNkNDFmNGUxNTc5YWExZDNlZWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzk5LDEzICsxNzk5LDEzIEBAIFJlZlB0
cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShSZWZQdHI8
UmFuZ2U+IG9yaWdpbmFsUmFuCiAgICAgaWYgKGVuZFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAg
ICBlbmRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoJm9yaWdpbmFsUmFuZ2Ut
PmVuZENvbnRhaW5lcigpKTsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHNlYXJjaFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0g
ICAgaWYgKCFzZWFyY2hSYW5nZSB8fCBzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCisgICAgYXV0
byBzZWFyY2hSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24pOworICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5U
ZXh0KCpzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwg
b3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBy
ZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwg
eyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCiBzdGF0aWMgYm9vbCBpc1JlcGxhY2VkTm9kZU9yQlIo
Tm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
QVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggNmZmNjQ0Y2Y1ZjBkMGEyOTgxYjRjZTdkOGFhYjkz
MzY3NmNkMDlmMC4uZjdjZDNhYThhZGRhNmE0YmNmYTQxMDk0ZWQ0NThjYmMzN2YxZmMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNo
ZUF0ay5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZQogICAg
ICAgICAvLyBDb25zaWRlciBwcmV2aW91cyB0ZXh0IG9iamVjdHMgdGhhdCBtaWdodCBiZSBwcmVz
ZW50IGZvcgogICAgICAgICAvLyB0aGUgY3VycmVudCBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0byBl
bnN1cmUgd2UgZW1pdCB0aGUKICAgICAgICAgLy8gcmlnaHQgb2Zmc2V0IChlLmcuIG11bHRpbGlu
ZSB0ZXh0IGFyZWFzKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7Ci0gICAgICAgIG9m
ZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0
KCkpOworICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgbm9kZS0+
cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKKyAgICAgICAgb2Zmc2V0VG9FbWl0ID0gb2Zmc2V0
ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSk7CiAgICAgfQogCiAgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIsIGRldGFpbC5kYXRhKCksIG9mZnNldFRvRW1p
dCwgdGV4dFRvRW1pdC5sZW5ndGgoKSwgdGV4dFRvRW1pdC51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggYTZlOTYzZGVhYmY3ZDAxZjUwNzg5M2IwMjYyMzIz
NGY2MDhkYTYwNy4uYmMxNmU0YjI5MDMxMTM5ZGM2NGQ2YzIzNjg5YWVkOTQ2NzUwNDdiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTI2MCw4ICsyNjAsOCBAQCBzdGF0aWMgZ2lu
dCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBlcmxpbmsqIGxp
bmspCiAgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVj
dCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRv
Y3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhG
b3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0aWMgZ2ludCB3ZWJr
aXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBsaW5rKQpAQCAt
Mjg2LDggKzI4Niw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcmxpbmtHZXRF
bmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwg
bGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdldFJhbmdlTGVu
Z3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5v
ZGUocGFyZW50Tm9kZSksIGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkpOworICAgIHJl
dHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5wdHIoKSk7CiB9
CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNWYWxpZChBdGtI
eXBlcmxpbmsqIGxpbmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5kZXgg
MThjOWU5YjU3OTdjOTkxNmQyNjI1YTlmYjQwYzY3ZmY2MzEwMzdkZS4uZGE0MDJkYTBiZTBjZmM0
MTViMGVlZDU3YjQ0ZmYyZDc5YWJjYzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcApAQCAtNDA2LDEzICs0MDYsMTMgQEAgc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zm
c2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmwKIAog
ICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0ZWQgcmFuZ2UgaW5zaWRlIHRo
ZSBvYmplY3QuCiAgICAgUG9zaXRpb24gcGFyZW50Rmlyc3RQb3NpdGlvbiA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlSW5QYXJlbnQg
PSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9zaXRpb24sIG5v
ZGVSYW5nZVN0YXJ0KTsKKyAgICBhdXRvIHJhbmdlSW5QYXJlbnQgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9zaXRpb24sIG5vZGVSYW5nZVN0YXJ0KTsKIAog
ICAgIC8vIFNldCB2YWx1ZXMgZm9yIHN0YXJ0IG9mZnNldHMgYW5kIGNhbGN1bGF0ZSBpbml0aWFs
IHJhbmdlIGxlbmd0aC4KICAgICAvLyBUaGVzZSB2YWx1ZXMgbWlnaHQgYmUgYWRqdXN0ZWQgbGF0
ZXIgdG8gY292ZXIgc3BlY2lhbCBjYXNlcy4KLSAgICBzdGFydE9mZnNldCA9IHdlYkNvcmVPZmZz
ZXRUb0F0a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdl
SW5QYXJlbnQuZ2V0KCksIHRydWUpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IG5vZGVSYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5vZGVSYW5nZUVu
ZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2Rl
UmFuZ2UuZ2V0KCksIHRydWUpOworICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRr
T2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVu
dC5wdHIoKSwgdHJ1ZSkpOworICAgIGF1dG8gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2Rl
LT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKKyAgICBpbnQgcmFu
Z2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5wdHIoKSwgdHJ1
ZSk7CiAKICAgICAvLyBTcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgd2hlbiB3
b3JraW5nIHdpdGggKl9FTkQgYm91bmRhcmllcy4KICAgICBpZiAoc2VsZWN0aW9uLmFmZmluaXR5
KCkgPT0gVVBTVFJFQU0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
aW5kZXggOGM3YjFjZjM4YjljYjg4ZGI3OGM2OThlNmEwNjc2NjQ5ZTJjMGU3NC4uN2ZiNjJmOGU5
ZDBhN2QzZWNhZTcwMmE0Mzk1NjJmYzFjNWMwMjM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTI0MDEsMTIgKzI0MDEsMTIgQEAgLSAoTlNSYW5nZSlfY29u
dmVydFRvTlNSYW5nZTooUmFuZ2UgKilyYW5nZQogICAgIGlmICgmcmFuZ2UtPmVuZENvbnRhaW5l
cigpICE9IHNjb3BlICYmICFyYW5nZS0+ZW5kQ29udGFpbmVyKCkuaXNEZXNjZW5kYW50T2Yoc2Nv
cGUpKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKLSAgICBS
ZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCks
IHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgp
KTsKKyAgICBhdXRvIHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRvY3VtZW50KCks
IHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgp
KTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBzY29wZSk7Ci0g
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5n
ZS5nZXQoKSk7CisgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgdGVzdFJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENv
bnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVzdFJhbmdlLT5z
dGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgZW5kUG9zaXRpb24gPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CisgICAgaW50IGVuZFBvc2l0aW9u
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwogICAgIHJldHVy
biBOU01ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdFRhc2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcAppbmRleCA5ZmMzMDZjY2UwZmEzZThhODVjN2NmZWUwZGExMzYzODg1MGQ4
NzE1Li4zNTQ1ZDVkNTExZmY4NjgxOThiMTkzNTJhMDhkNGUxZDI1NmEzM2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAK
QEAgLTc4LDggKzc4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+LAogSlNHbG9iYWxPYmplY3RU
YXNrOjpKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayh7IH0pCiB7Ci0gICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNhbGxiYWNrID0g
SlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNr
KSk7Ci0gICAgbV90YXNrID0gW2NhbGxiYWNrXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBhdXRvIGNhbGxiYWNrID0gSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAgbV90YXNrID0gW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjYWxsYmFj
ay0+Y2FsbCgpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCA2MGI4YzUyNTcyNGVhNzg3MDljOTgxZWZhMmE5M2NiODUz
N2ZmOTkzLi5jNzQzMzRlOGE3NDYzMmZmN2U2NjU3ZGQyZGE5ZjQxMDY1ODZiNWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIwOSw4
ICsyMDksOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNH
bG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogewogICAgIEpTRE9NV2luZG93QmFz
ZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9iamVjdCk7CiAK
LSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01pY3JvdGFza0Nh
bGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNy
b3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgW2NhbGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gY2FsbGJhY2sgPSBK
U01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Cisg
ICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCAzODBhZDViZDE1MjAxM2U4OTZiODdhYjQxNjU1NTc2MjJmN2UxNmNmLi5kODMxNjA0
Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMzMs
OSArMTMzLDkgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIHsKICAgICBKU1dvcmtlckdsb2Jh
bFNjb3BlQmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxiYWNrPiBjYWxsYmFj
ayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2sp
KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNP
YmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9N
Q2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2Nh
bGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBj
b250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggY2E0Zjg3MTg5Y2MyOTUxOTk2
Yzg5ZDEzOGMzNTY2YTMxYzBjYzI0OS4uZGY5NDc2YTE2YmIzZmJjOGM0OGM2ZWM3ZDY4YjNjMmVi
ZDY1YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyTWFjLm1tCkBAIC04NSwxMCArODUsMTAgQEAgUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCgK
ICAgICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gW3dpZGdldFZpZXcgY3JlYXRlUGx1Z2luU2Ny
aXB0YWJsZU9iamVjdF07CiAgICAgICAgIGlmICghbnBPYmplY3QpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RPYmplY3QpKTsK
KyAgICAgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRl
KG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RPYmplY3QpKTsKICAgICAgICAgLy8gLWNyZWF0ZVBsdWdp
blNjcmlwdGFibGVPYmplY3QgcmV0dXJucyBhIHJldGFpbmVkIE5QT2JqZWN0LiAgVGhlIGNhbGxl
ciBpcyBleHBlY3RlZCB0byByZWxlYXNlIGl0LgogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qo
bnBPYmplY3QpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIHJldHVybiBXVEZN
b3ZlKGluc3RhbmNlKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTk5ODEwODViNTUw
NWM3NDVjOTc1YTZkOTdhYmM1OGNlYWUxYzVmOS4uMWZlMzAwYmM0ZjMxNDRmMmZhZDhhMjgzZDUw
OWNjYTQwOTRmZWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODIzLDcgKzI4MjMsNyBAQCBjbGFzcyBDbG9u
ZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJ
bnRTaXplIGltYWdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFsZW5ndGggfHwgKGltYWdlU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSA8PSBsZW5n
dGgpOwotICAgICAgICAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVzdWx0ID0gSW1hZ2VEYXRhOjpj
cmVhdGUoaW1hZ2VTaXplKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSW1hZ2VEYXRhOjpj
cmVhdGUoaW1hZ2VTaXplKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAg
ICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC0yOTU4
LDcgKzI5NTgsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc2hh
cmVkQnVmZmVycy0+YXQoaW5kZXgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVmZmVycy0+YXQo
aW5kZXgpKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSkpOwogICAgICAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBnZXRKU1ZhbHVlKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgICAgICBtX2djQnVm
ZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3cocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CkBAIC0zNDg0LDcgKzM0ODQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgq
ZXhlYywgdmFsdWUpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoKmV4ZWMsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoZXhlYywgc2NvcGUuZXhjZXB0aW9uKCktPnZhbHVlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCmluZGV4IDVmMjg1ZTkxYjhkZjVkNTE1
ZTU1NjBkNDQ5NjVkYTY0MDQxNTRlYjQuLjFiNzg5NmJlMTkwNTBlNzNiNTNmZDk1NzUyZjI1NWY4
M2E5YzMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgK
QEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgT2JqY0NsYXNzOwogCiBjbGFzcyBPYmpjSW5zdGFuY2Ug
OiBwdWJsaWMgSW5zdGFuY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8T2JqY0luc3Rh
bmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4mJik7CisgICAg
c3RhdGljIFJlZjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIsIFJlZlB0cjxS
b290T2JqZWN0PiYmKTsKICAgICB2aXJ0dWFsIH5PYmpjSW5zdGFuY2UoKTsKICAgICAKICAgICBz
dGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqLCBKU0dsb2JhbE9iamVjdCog
ZXhjZXB0aW9uRW52aXJvbm1lbnQgPSAwKTsgLy8gQSBudWxsIGV4Y2VwdGlvbkVudmlyb25tZW50
IG1lYW5zIHRoZSBleGNlcHRpb24gc2hvdWxkIHByb3BvZ2F0ZSB0byBhbnkgZXhlY3V0aW9uIGVu
dmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
aW5kZXggMGFlYzBjZWVhZjljNmMyYTYyZTJiMDg1YmEwZTdiYzRmZjhlYTFjZC4uMDUxZGFjYWZm
YzY2YWRmNzI0MmNjNDYwMWNkMzJhNWMxMTdmZmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xMDQsMTYgKzEwNCwxNyBAQCBPYmpjSW5zdGFu
Y2U6Ok9iamNJbnN0YW5jZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+JiYgcm9vdE9i
amVjdCkKIHsKIH0KIAotUmVmUHRyPE9iamNJbnN0YW5jZT4gT2JqY0luc3RhbmNlOjpjcmVhdGUo
aWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCitSZWY8T2JqY0lu
c3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmpl
Y3Q+JiYgcm9vdE9iamVjdCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJDYWNoZSgpLmFk
ZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWluc3RhbmNlLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKLSAgICAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4gd3JhcHBlciA9IGFk
b3B0UmVmKG5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9iamVjdCkpKTsK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIuZ2V0KCk7CisgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0UmVmKCpuZXcgT2JqY0luc3RhbmNlKGluc3RhbmNlLCBXVEZN
b3ZlKHJvb3RPYmplY3QpKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFw
cGVyLnB0cigpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKLSAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCiBPYmpjSW5zdGFu
Y2U6On5PYmpjSW5zdGFuY2UoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggN2IyNmUzYWRhYzVmYmQ2MTMyMmM2MjZmNjli
NDNkMjgyZWY0MzU2MS4uYmJlYTM2Y2EwYjAxMDk2Njg0YmNiN2JhOGQ3MGE0OWE3ZDI3ZTVjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlv
bk9mZnNldFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydAogICAgIHJl
dHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUF1dG8pOwogfQogCi1SZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gZG9lcyBOT1QgbG9vayBhdCB2aXNpdGVkIGluZm9ybWF0aW9uLCBzbyB0aGF0IGNv
bXB1dGVkIHN0eWxlIGRvZXNuJ3QgZXhwb3NlIHRoYXQuCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlk
KCkpCkBAIC00MjE3LDEyICs0MjE3LDEyIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAgICAgcmV0dXJuIGNvcHlQ
cm9wZXJ0aWVzSW5TZXQoY29tcHV0ZWRQcm9wZXJ0aWVzLCBudW1Db21wdXRlZFByb3BlcnRpZXMp
OwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
b3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQp
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOworICAgIHJldHVy
biBsaXN0OwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKQEAgLTQyNTQsMTIgKzQyNTQsMTIgQEAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaWRlc1Nob3J0aGEKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAotUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkK
K1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5
VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9y
dGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFy
YXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyAr
K2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1
cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC00MzU0LDggKzQz
NTQsOCBAQCBSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNr
Z3JvdW5kU2hvcnRoYW5kVmFsdWUoKQogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yWzNdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAgfTsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0
ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5k
UHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
cHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOwotICAgIGxpc3QtPmFwcGVuZCgqZ2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRv
cikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBw
cm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0b3IpKSk7CisgICAgbGlzdC0+YXBwZW5kKGdldENT
U1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRo
YW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3Ip
KSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA5MzgzODc5OGYyNDYxYWYzZTdmYzJjNzlk
OWI5M2U4ZTM2OWVkMWRjLi5lY2JmMDRmNmM5NWU3NWQ1NjMzZjUwNWVhYmQxY2M0M2MyN2VjODAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCkBAIC04NywxNCArODcsMTQgQEAgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciB7CiAg
ICAgUmVuZGVyRWxlbWVudCogc3R5bGVkUmVuZGVyZXIoKSBjb25zdDsKIAogICAgIFJlZlB0cjxD
U1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFNWR1Bh
aW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIGN1
cnJlbnRDb2xvcikgY29uc3Q7CisgICAgUmVmPENTU1ZhbHVlPiBhZGp1c3RTVkdQYWludEZvckN1
cnJlbnRDb2xvcihTVkdQYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBDb2xvciYs
IGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0OwogICAgIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9wZXJ0eUlELCBjb25z
dCBSZW5kZXJTdHlsZSYsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFkanVz
dFBpeGVsVmFsdWVzKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xv
ck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7Cisg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwogCi0gICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9w
ZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwogICAgIFJlZjxD
U1NWYWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUHNldWRvSWQgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJhOS4uMDk1Mjdm
MWIxMjZjN2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBDU1NGb250RmFj
ZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAgICAgICAgaWYg
KG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygp
KSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
YnVmZmVyKTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9
IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmluZygpLCB3cmFw
cGluZyk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSks
IG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgbV9pbW1lZGlh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERh
dGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2Vz
cyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVk
IGluIHdoZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwgb3Igbm90LiBM
dWNraWx5LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMTJj
ZGE1NDVkN2JjYzc1ZGVkYjdhNzk1MzUxYmQ2ZjAwMzY3NGZjMi4uYmNmMDkyODFlODA5MGJmZTlj
ODk1MjIyMmEyOWI4ODcxNWZjZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMjU5LDExICsyNTksMTEgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
OjpydWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+
IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1dG8gcnVsZUxp
c3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQgcnVsZUNvdW50
ID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVDb3VudDsgKytp
KQogICAgICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7Ci0gICAgcmV0dXJu
IHJ1bGVMaXN0OworICAgIHJldHVybiBXVEZNb3ZlKHJ1bGVMaXN0KTsKIH0KIAogRXhjZXB0aW9u
T3I8dW5zaWduZWQ+IENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxl
U3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGEyNGE1
MzYyNjg5MGE4YTkxZDExNzM4Y2E5YTU4YTQ1MzcxYmI4YjguLmUzNDkxNzEyODc4OTBiOTg3NGE3
MDRhYjdiNDFiZjY5Y2RhNTVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMzczLDcg
KzM3Myw3IEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QKICAgICBtX2Jh
Y2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+cmFuZ2Vz
KCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX2JhY2tpbmctPnJhbmdlcygpKQogICAgICAgICB2
YWx1ZXMtPmFwcGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdlLmZyb20sIHJh
bmdlLnRvKSk7CiAgICAgcmV0dXJuIHZhbHVlcy0+Y3NzVGV4dCgpOwpAQCAtMzkwLDcgKzM5MCw3
IEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tp
bmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+ZmVhdHVyZVNl
dHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIm5vcm1hbCJfczsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
ICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX2JhY2tpbmctPmZlYXR1cmVTZXR0aW5ncygpKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKEZvbnRUYWco
ZmVhdHVyZS50YWcoKSksIGZlYXR1cmUudmFsdWUoKSkpOwogICAgIHJldHVybiBsaXN0LT5jc3NU
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFw
cGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
aW5kZXggZmRiOGUzYWY3OWFjNjJiNzg5NTYwYjgzYzM3ZWI3NDNjOGZlNjEyZi4uYmRlZmVjNGE3
ZmE3YzQwYjM2OWEwYTNkMmYwZTNkMzZiNzI4Nzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtNzksOSArNzksOSBAQCB2b2lkIEluc3Bl
Y3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKFN0eWxlU2hl
ZXRDb250ZW50cyogcwogewogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwot
ICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZSgqc3R5bGVTaGVldCk7Ci0gICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0
LmFkZChzdHlsZVNoZWV0V3JhcHBlcik7Ci0gICAgY29sbGVjdChzdHlsZVNoZWV0V3JhcHBlci5n
ZXQoKSk7CisgICAgYXV0byBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZSgqc3R5bGVTaGVldCk7CisgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LmFkZChzdHls
ZVNoZWV0V3JhcHBlci5jb3B5UmVmKCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIu
cHRyKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggMzMxZTgzNjNmYWU4N2FiNDUzZmMxZTdkNTUzOWUwOTgwNmZiMTM1Mi4uYjNl
NGI5YTBjNTRmYjkzNjdlMDQ2NzE0MjI1OTQ5N2NiMjE0MWQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRh
dGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoR2x5cGhPcmllbnQKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJy
YXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBkYXNoZXMpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBW
ZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBkYXNoZXMpCiB7CiAgICAgaWYgKGRhc2hlcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZU5vbmUpOwpAQCAtNjAsMTAgKzYwLDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1
CiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRU
eXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwgY29u
c3QgQ29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3QKK1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUeXBlIHBh
aW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgQ29s
b3ImIGN1cnJlbnRDb2xvcikgY29uc3QKIHsKICAgICBpZiAocGFpbnRUeXBlID49IFNWR1BhaW50
VHlwZTo6VVJJTm9uZSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGF1dG8gdmFsdWVz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICB2YWx1ZXMt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpDU1NfVVJJKSk7CiAgICAgICAgIGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRU
eXBlOjpVUklOb25lKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSk7CkBAIC03MSw3ICs3MSw3IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JD
dXJyZW50Q29sb3IoU1ZHUGFpbnRUCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKGN1cnJlbnRDb2xvcikpOwogICAgICAgICBlbHNlIGlmIChwYWlu
dFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpVUklSR0JDb2xvcikKICAgICAgICAgICAgIHZhbHVlcy0+
YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY29sb3IpKTsKLSAgICAgICAgcmV0dXJu
IHZhbHVlczsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUodmFsdWVzKTsKICAgICB9CiAgICAgaWYg
KHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ1ZWU5MzRkMjMwMWU4YjMwMTgyZGZkOTdkNTBkMTAy
NjI2YTQzZTEuLmJmY2M2MjQzOTk0ZDAwNzE0MWFkY2FmNzlmZWQ3MDYwZmM5YjgxMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODAsOCArMTk4MCw4IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0gcHJpbWl0aXZl
VmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGNzc1VybCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNz
c1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOworICAgICAgICAgICAgYXV0byBvcGVyYXRp
b24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoV1RGTW92ZShvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggMGRjMTA5OGY1NGY4NGJiZjJiYTdiYmEz
NTk3MWI2OGQ1YTlkYmJlYy4uMWVlZmViOGJkMTBjMjU0YjgyNGJjMDZjZDViOGFlZjA2NjAyMTg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBzdHJ1Y3Qg
U2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkQmFzZSB7CiAK
IENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9PSBzaXplb2YoU2FtZVNpemVB
c1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVm
UHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVh
dGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwgbnVsbHB0cik7CiB9CiAKLVJl
ZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSog
cGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsgCiAgICAgcmV0dXJuIGNyZWF0
ZUNTU09NV3JhcHBlcihudWxscHRyLCBwYXJlbnRSdWxlKTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBA
QCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNvbnN0CiAgICAgQ1JB
U0goKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3Jh
cHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29u
c3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CiB7CiAgICAg
UmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9IGNvbnN0X2Nh
c3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE2OSwxMSArMTY5LDEzIEBAIFJlZlB0cjxD
U1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQsIENTCiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5ZnJhbWU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIEFTU0VSVChydWxlKTsKKwogICAgIGlmIChwYXJlbnRS
dWxlKQogICAgICAgICBydWxlLT5zZXRQYXJlbnRSdWxlKHBhcmVudFJ1bGUpOwotICAgIHJldHVy
biBydWxlOworICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHVuc2lnbmVk
IFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRl
eCA2ODA3MTQxZmVlYTcxYjA3NmFmYTlhNGE2OWEzY2QyNmZjNTMyMjg4Li43MTgwNTIzMTM4NDQw
MzJmNzVjOWM2Y2QxZTVhYTkzZGJlZGQ0MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCkBAIC04
NCw4ICs4NCw4IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVk
QmFzZSB7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgbmVl
ZCBmb3IgdGhlIG51bGwgcGFyZW50IHZlcnNpb24uCi0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0
OwotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50
UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHls
ZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0OworICAgIFJlZjxDU1NSdWxlPiBj
cmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5
T3JpZ2luID0gZmFsc2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgU3R5bGVSdWxlQmFzZSA6
IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUmVmUHRyPENTU1J1bGU+IGNyZWF0ZUNTU09N
V3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkg
Y29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKICAgICB1bnNpZ25l
ZCBtX3R5cGUgOiA1OwogICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3VwcG9ydCBnZXRN
YXRjaGVkQ1NTUnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKaW5kZXggMGZlZTg0Y2Q3ZWIyNjc5MmUzZGY2ZDQ2N2U5MGE2MmYxZmQwY2M1NC4u
ODE0ZDQ2YjA1YTY3YzE1OTlhMjMyOGMzODMyZmU0MGFmNWI2MzNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBD
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjp+Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cigpCiAgICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUobV90YXJnZXQucHRyKCkpOwogfQogCi1S
ZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQorUmVmPENoaWxkTGlz
dE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9y
Q3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHsKICAgICBBY2N1bXVsYXRvck1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IGFjY3VtdWxhdG9yTWFwKCkuYWRkKCZ0YXJnZXQsIG51bGxwdHIpOwog
ICAgIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBhY2N1bXVsYXRvcjsKQEAg
LTcwLDcgKzcwLDggQEAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxk
TGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKEMKICAgICAgICAgYWNjdW11bGF0
b3IgPSBhZG9wdFJlZihuZXcgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcih0YXJnZXQsIE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbih0
YXJnZXQpKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhY2N1bXVsYXRvci5n
ZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yOworICAgIEFTU0VSVChhY2N1bXVs
YXRvcik7CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIGlu
bGluZSBib29sIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmlzQWRkZWROb2RlSW5PcmRl
cihOb2RlJiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5oCmluZGV4IDliOTQzNzE2ZGJjODRjOTNiMjZmMjkzMWJlYTgzZTdkMTEzYWVhNTguLjI5NjY3
Njc3NjhmMGQ3MTQ3NDJlMzZiY2U1YjYxMDg2OTc3ZjkxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDsKIC8vIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3IgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHk7IENoaWxkTGlzdE11dGF0aW9uU2Nv
cGUgaXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCiBjbGFzcyBDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYpOworICAgIHN0YXRpYyBSZWY8Q2hpbGRMaXN0
TXV0YXRpb25BY2N1bXVsYXRvcj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYpOwogICAgIH5D
aGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCk7CiAKICAgICB2b2lkIGNoaWxkQWRkZWQoTm9k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAppbmRleCBkNTVjNTZmMTM2OTMyNThiNzJkZmNiZGE1NDZiYmM3YzZmODlhMzAyLi41YjA4NjMw
YzMzMDBiOWE3OTAyZmE3YmNiZTIyZDZlMWMyYzY2YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMTYxLDkgKzE2MSw3IEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXIoUmVuZGVyZWREb2N1bWVudE1h
cmtlciYgbWFya2VyLCBOb2RlJiBuCiAgICAgQVNTRVJUKCFub2RlLmRvY3VtZW50KCkudmlldygp
IHx8ICFub2RlLmRvY3VtZW50KCkudmlldygpLT5uZWVkc0xheW91dCgpKTsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgcmVmYWN0b3IgdGhpcyBzbyB0aGF0IHdlIGRvbid0IHVzZSBSYW5nZSAo
YmVjYXVzZSB3ZSBvbmx5IGhhdmUgb25lIE5vZGUpLCBidXQgc3RpbGwgc2hhcmUgY29kZSB3aXRo
IGFic29sdXRlVGV4dFF1YWRzKCkuCi0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFJh
bmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0T2Zmc2V0KCks
ICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOwotICAgIGlmICghbWFya2VyUmFuZ2UpCi0gICAg
ICAgIHJldHVybjsKKyAgICBhdXRvIG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRv
Y3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1hcmtlci5lbmRP
ZmZzZXQoKSk7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVNYXJrZXJRdWFkczsKICAg
ICBtYXJrZXJSYW5nZS0+YWJzb2x1dGVUZXh0UXVhZHMoYWJzb2x1dGVNYXJrZXJRdWFkcywgdHJ1
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5k
ZXggMGQ4YjZiY2U3NWUxZjA3NWU4YjNlYWZiODUyMTk3NWQ2MjgzYmM4ZC4uMTUwYTc4ZDU5MDMx
NmM3ZTE0NDE5ZDgyYWNiNzliODA0YzYyYjhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIHZvaWQgSW5saW5l
U3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJp
bmcmIHRleHQpCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dJbmxpbmVTdHls
ZShkb2N1bWVudC51cmwoKSwgbV9zdGFydFRleHRQb3NpdGlvbi5tX2xpbmUsIHRleHQsIGhhc0tu
b3duTm9uY2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
bWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CisgICAgYXV0byBtZWRpYVF1ZXJpZXMgPSBNZWRpYVF1
ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQp
KTsKIAogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVuIl9zLCB0cnVl
KTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiX3MsIHRydWUpOwog
ICAgIExPRyhNZWRpYVF1ZXJpZXMsICJJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0
IGV2YWx1YXRpbmcgcXVlcmllcyIpOwotICAgIGlmICghc2NyZWVuRXZhbC5ldmFsdWF0ZSgqbWVk
aWFRdWVyaWVzKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMpKQorICAgIGlm
ICghc2NyZWVuRXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpICYmICFwcmludEV2YWwu
ZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fc3R5bGVTY29wZSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRP
d25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
ICAgICAgICBpZiAoYXV0byogY2FjaGVkU2hlZXQgPSBpbmxpbmVTdHlsZVNoZWV0Q2FjaGUoKS5n
ZXQoKmNhY2hlS2V5KSkgewogICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFNoZWV0LT5pc0NhY2hl
YWJsZSgpKTsKICAgICAgICAgICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxp
bmUoKmNhY2hlZFNoZWV0LCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsKLSAgICAgICAg
ICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92ZShtZWRpYVF1
ZXJpZXMpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJlZSgpKQogICAg
ICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQudGl0bGUoKSk7CiAKQEAgLTIw
Myw3ICsyMDMsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGF1dG8gY29udGVudHMgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShTdHJpbmcoKSwgcGFyc2VyQ29udGV4dEZvckVsZW1l
bnQoZWxlbWVudCkpOwogCiAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGlu
ZShjb250ZW50cy5nZXQoKSwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7Ci0gICAgbV9z
aGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92ZShtZWRpYVF1ZXJpZXMpKTsKICAgICBp
ZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUo
ZWxlbWVudC50aXRsZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50
ZXJFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCmluZGV4IGNmMDkx
NDMxMjhjOWUyYjEzOTJlYTlmYzk3ZGM4ZTAwNWRhYjRmZmEuLmRmMmFlOGJiZDgxOTMyYmM0NmMz
NjZjMDdjZGU3YjgwOThmZDJhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb2lu
dGVyRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgUG9pbnRlckV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQg
ewogICAgICAgICBib29sIGlzUHJpbWFyeSB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIHN0YXRp
YyBSZWZQdHI8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJ
bml0JiYgaW5pdGlhbGl6ZXIpCisgICAgc3RhdGljIFJlZjxQb2ludGVyRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXRp
YWxpemVyKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9y
LmgKaW5kZXggMDExMjcyMDA3YjE1N2EwNDljZWQ3YmM0OWEzYzk2OTMxODMyYWFhYy4uNWExY2I5
ZWE4YTI5M2E5ZjI2NzEwYzg2OTMxODI1OGUwNGQ3ZWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgZW51bSBjbGFzcyBVc2Vy
R2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNzIFVzZXJHZXN0dXJlVG9r
ZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKKyAgICBzdGF0aWMg
UmVmPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBz
dGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJlVHlwZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJl
VHlwZSkpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Vc2VyR2VzdHVyZVRva2VuKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCA1ODJiZTBkZTU5MzJjNWNiZTQ5YzUxZjBjODFiOGRjOTgwNzE3ZDFlLi41
MTZkNzZlYTRkMTdhZDgzMzRmY2ZhODgzZDc0OTkyY2YzOWI3ZjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0ZXJu
YXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgLy8gcmVsYXRpdmUgdG8g
dGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFwaC4gV2UgdXNlIGNv
cnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoCiAgICAgLy8gdG8gc3RvcmUgdGhpcyB2YWx1
ZS4gSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRvIGZpcnN0IGNyZWF0
ZSBhIHJhbmdlCiAgICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQgb2YgcGFyYWdyYXBo
IHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZS4KLSAgICBSZWZQ
dHI8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5nZSA9IFJhbmdl
OjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9uLT5zdGFy
dFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSk7CisgICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24tPnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVj
dGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0aW9u
LT5zdGFydFBvc2l0aW9uKCkpOwogCiAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbk9mUmFuZ2VX
aXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7CiAgICAgaWYgKCFzdGFydFBv
c2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZl
VGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9mIGF1dG9jb3JyZWN0aW9uIHNvIHRoYXQgd2Ug
Y2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2UuCi0gICAgaW50
IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UuZ2V0KCkpOworICAg
IGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1JhbmdlLnB0cigpKTsK
IAogICAgIC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhv
ZCBtYXkgd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCiAgICAgYXV0byBy
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKQEAgLTI2NiwxMiArMjY2
LDEyIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVk
U3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Io
bV9mcmFtZSk7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxlY3Rpb25PZkNvcnJlY3RlZCwgRnJh
bWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGcmFtZVNlbGVjdGlv
bjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkp
OworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5lbmQoKSk7CiAKICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1h
cmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJrZXJzLnJlbW92
ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZT4geyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVj
dGVkIH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBp
bmdNYXJrZXIpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFya2Vycy5yZW1v
dmVNYXJrZXJzKHJhbmdlLnB0cigpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJl
Y3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBw
aW5nTWFya2VyKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwgRG9jdW1lbnRN
YXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwg
RG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQpAQCAtNDQzLDEyICs0NDMsMTAgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5n
KEVkaXRDb21tYW5kQ29tcG9zaXRpb24KIHsKICAgICBpZiAoIWNvbW1hbmQtPndhc0NyZWF0ZUxp
bmtDb21tYW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCkpOwotICAg
IGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVjdGlvbigpLnN0
YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCkpOwogICAgIERvY3VtZW50
TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2Vycygp
OwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVw
bGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFya2Vycy5hZGRNYXJrZXIocmFu
Z2UucHRyKCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFya2Vycy5hZGRN
YXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9u
KTsKIH0KIAogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQpAQCAtNTI2LDE1ICs1MjQsMTUgQEAgdm9pZCBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrUHJlY2VkaW5nV2hpdGVzcGFjZUZvckRlbGV0ZWRB
dXRvY29ycmVjdGlvbkEKICAgICBpZiAoZW5kT2ZTZWxlY3Rpb24gPT0gcHJlY2VkaW5nQ2hhcmFj
dGVyUG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4gcHJlY2Vk
aW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIHBy
ZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7Ci0gICAgU3RyaW5nIHN0
cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7CisgICAgYXV0
byBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1l
bnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9uKTsKKyAgICBT
dHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdlLnB0cigpKTsK
ICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCAhZGVwcmVjYXRlZElzRWRpdGluZ1doaXRlc3Bh
Y2Uoc3RyaW5nW3N0cmluZy5sZW5ndGgoKSAtIDFdKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gTWFyayB0aGlzIHdoaXRlc3BhY2UgdG8gaW5kaWNhdGUgd2UgaGF2ZSBkZWxldGVkIGFuIGF1
dG9jb3JyZWN0aW9uIGZvbGxvd2luZyB0aGlzCiAgICAgLy8gd2hpdGVzcGFjZS4gU28gaWYgdGhl
IHVzZXIgdHlwZXMgdGhlIHNhbWUgb3JpZ2luYWwgd29yZCBhZ2FpbiBhdCB0aGlzIHBvc2l0aW9u
LCB3ZQogICAgIC8vIHdvbid0IGF1dG9jb3JyZWN0IGl0IGFnYWluLgotICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5nZXQo
KSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmlnaW5hbFN0cmlu
Z0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+
bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIoKSwgRG9jdW1l
bnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3RE
ZWxldGVkQXV0b2NvcnJlY3Rpb24pOwogfQogCiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxhY2VkQnlSZXN1bHQoY29uc3QgVGV4dENo
ZWNraW5nUmVzdWx0JiByZXN1bHQsIFJhbmdlJiByYW5nZVdpdGhBbHRlcm5hdGl2ZSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmdUb0JlUmVwbGFjZWQpCkBAIC01NzUsMjEgKzU3MywxOSBAQCBib29sIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0
IERvY3VtZW50TWFya2VyJgogICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvcihtYXJrZXIsIGVu
ZE9mV29yZFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIE5vZGUqIG5vZGUgPSBlbmRPZldvcmRQb3NpdGlvbi5jb250YWluZXJOb2Rl
KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1l
LmRvY3VtZW50KCksIG5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIuZW5k
T2Zmc2V0KCkpOwotICAgIGlmICghd29yZFJhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQoKSk7CisgICAg
YXV0byB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG5vZGUs
IG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOworICAgIFN0
cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UucHRyKCkpOwogICAgIGlmICgh
Y3VycmVudFdvcmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX29yaWdp
bmFsVGV4dCA9IGN1cnJlbnRXb3JkOwogICAgIHN3aXRjaCAobWFya2VyLnR5cGUoKSkgewogICAg
IGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgotICAgICAgICBtX3JhbmdlV2l0aEFsdGVy
bmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RG
TW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBlbXB0eVN0cmluZygpOwogICAg
ICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxs
aW5nU3VnZ2VzdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudDoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHdvcmRSYW5n
ZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29yZFJhbmdlKTsK
ICAgICAgICAgbV9kZXRhaWxzID0gbWFya2VyLmRlc2NyaXB0aW9uKCk7CiAgICAgICAgIHN0YXJ0
QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uKTsKICAg
ICAgICAgYnJlYWs7CkBAIC01OTksNyArNTk1LDcgQEAgYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVudE1hcmtlciYK
ICAgICAgICAgYXV0byYgbWFya2VyRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0
YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1h
cmtlckRhdGEub3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0
aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBt
YXJrZXJEYXRhLmNvbnRleHQ7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihB
bHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGMzZDgxNGFkMWQz
ZmRhNmFmODY5Njg4YmZjMmNhMWI3OWM5NWM2YTMuLjdhM2ExNjAwZmJhOTM3ZGFkNzQyNmY3NGI2
MDM2OTcxZmM4Y2UyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCkBAIC0yNTAsMTAgKzI1MCwxMCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICBpZiAoIXNjb3BlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgUmVmUHRy
PFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAgIGF1dG8gc3Rh
cnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShz
Y29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpKTsKKyAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBm
aXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgaW50IGVuZElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CiAK
ICAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQoc3RhcnRPZlBhcmFncmFwaCh2aXNp
YmxlU3RhcnQpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFN0YXJ0KGVuZE9m
UGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCkpOwpAQCAtMjg0LDEwICsyODQsMTIgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5
bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBoKHBhcmFncmFw
aFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB0cnVl
KTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRS
YW5nZSkKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigp
LCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB7CisgICAgICAgIGF1dG8gc3RhcnRS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0
YXJ0SW5kZXgsIDAsIHRydWUpOworICAgICAgICBhdXRvIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpOwor
ICAgICAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRSYW5nZSkKKyAgICAgICAgICAgIHVwZGF0ZVN0
YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNv
cHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKQEAgLTEw
NTEsOSArMTA1Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5
bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIE5vZGUqCiAgICAgICAgICAgICBlbGVt
ZW50c1RvUHVzaERvd24uYXBwZW5kKCpzdHlsZWRFbGVtZW50KTsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlVG9QdXNoRG93biA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gc3R5bGVUb1B1c2hEb3duID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUoKTsKICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqY3VycmVudCkpCi0gICAgICAg
ICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2FzdDxIVE1MRWxl
bWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsK
KyAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGRvd25jYXN0
PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24u
cHRyKCkpOwogCiAgICAgICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwgZ28gdGhyb3VnaCBjaGls
ZHJlbiBvbiBlYWNoIGxldmVsCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgYWdncmVnYXRl
IGlubGluZSBjaGlsZCBlbGVtZW50cyB0b2dldGhlciBzbyB0aGF0IHdlIGRvbid0IHdyYXAgZWFj
aCBjaGlsZCBzZXBhcmF0ZWx5LgpAQCAtMTA3Miw3ICsxMDc0LDcgQEAgdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlJiBzdHls
ZSwgTm9kZSoKICAgICAgICAgICAgIC8vIEFwcGx5IHN0eWxlIHRvIGFsbCBub2RlcyBjb250YWlu
aW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8gdGFyZ2V0Tm9kZQog
ICAgICAgICAgICAgLy8gQnV0IGlmIHdlJ3ZlIHJlbW92ZWQgc3R5bGVkRWxlbWVudCB0aGVuIGFs
d2F5cyBhcHBseSB0aGUgc3R5bGUuCiAgICAgICAgICAgICBpZiAoJmNoaWxkICE9IHRhcmdldE5v
ZGUgfHwgc3R5bGVkRWxlbWVudCkKLSAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9Q
dXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgICAgICAgICBh
cHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLnB0cigpKTsK
IAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5leHQgbm9kZSBmb3IgdGhlIG91dGVyIGxv
b3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAgICAgICAvLyBXaGVuIHJlYWNoZWQgdGFy
Z2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9uIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBj
dXJyZW50IGlubmVyIGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKaW5kZXggYzBlNWM5Y2U3NTdmNTY3YWNhOTYyMmFhODgyNzEzZTVmNWE4
ODFlMS4uZDdmNjc3NWU5ZDQyM2EyNzZlMWQyODc5MDljMzZiYmM3YmY1ZTU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTM4Miw4
ICszODIsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiAgICAgaWYgKCFmaXJzdFJhbmdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1Jhbmdl
OjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2UpOwotICAgIHJldHVybiB7IDEsIHJhbmdlIH07
CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqZmlyc3RSYW5n
ZSkgfTsKIH0KIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0ZUVkaXRDb21t
YW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpIGNvbnN0CkBAIC03NjgsMTUgKzc2NywxNSBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdN
YXJrZXJzKFRleHQmIG5vZGUsIHVuc2lnbgogICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYg
bWFya2VyQ29udHJvbGxlciA9IGRvY3VtZW50KCkubWFya2VycygpOwogICAgIGF1dG8gbWFya2Vy
cyA9IGNvcHlNYXJrZXJzKG1hcmtlckNvbnRyb2xsZXIubWFya2Vyc0luUmFuZ2UoUmFuZ2U6OmNy
ZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwgb2Zmc2V0ICsgY291bnQpLCBE
b2N1bWVudE1hcmtlcjo6YWxsTWFya2VycygpKSk7CiAgICAgcmVwbGFjZVRleHRJbk5vZGUobm9k
ZSwgb2Zmc2V0LCBjb3VudCwgcmVwbGFjZW1lbnRUZXh0KTsKLSAgICBSZWZQdHI8UmFuZ2U+IG5l
d1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwg
b2Zmc2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKKyAgICBhdXRvIG5ld1JhbmdlID0g
UmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwgb2Zmc2V0ICsg
cmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1hcmtlciA6
IG1hcmtlcnMpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobWFya2Vy
LmlzRGljdGF0aW9uKCkpIHsKLSAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2Vy
KG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRpb24oKSwgbWFy
a2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CisgICAgICAgICAgICBtYXJr
ZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5cGUoKSwgbWFy
a2VyLmRlc2NyaXB0aW9uKCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2VyLm1ldGFkYXRh
KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBt
YXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2VyLnR5cGUoKSwg
bWFya2VyLmRlc2NyaXB0aW9uKCkpOworICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtl
cihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCkpOwog
ICAgIH0KIH0KIApAQCAtMTQxNCwxNCArMTQxMywxNCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICAgICAgCiAgICAgICAgICAgICBzdGFydEluZGV4ID0gMDsKICAgICAgICAgICAg
IGlmIChzdGFydEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVT
dGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAg
ICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJh
bmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAgIHN0YXJ0
SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAg
ICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGVu
ZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3Zl
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLmdldCgp
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTE0MzcsMTQgKzE0MzYsMTQgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKICAgICAvLyBzdGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGlyZWN0bHkgdG8g
Y3JlYXRlIGEgUmFuZ2U7IHRoZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKICAgICBQb3NpdGlv
biBzdGFydFJhbmdlQ29tcGxpYW50ID0gc3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7
CiAgICAgUG9zaXRpb24gZW5kUmFuZ2VDb21wbGlhbnQgPSBlbmQucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFJhbmdlQ29t
cGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJl
Y2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
OworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VD
b21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBlbmRS
YW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGFuIGluZWZmaWNpZW50IHdheSB0byBwcmVzZXJ2ZSBzdHlsZSBvbiBub2RlcyBp
biB0aGUgcGFyYWdyYXBoIHRvIG1vdmUuIEl0CiAgICAgLy8gc2hvdWxkbid0IG1hdHRlciB0aG91
Z2gsIHNpbmNlIG1vdmVkIHBhcmFncmFwaHMgd2lsbCB1c3VhbGx5IGJlIHF1aXRlIHNtYWxsLgog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsKICAgICAvLyBUaGlzIHVzZWQg
dG8gdXNlIGEgdGVybmFyeSBmb3IgaW5pdGlhbGl6YXRpb24sIGJ1dCB0aGF0IGNvbmZ1c2VkIHNv
bWUgdmVyc2lvbnMgb2YgR0NDLCBzZWUgYnVnIDM3OTEyCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3Jh
cGhUb01vdmUgIT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUpCi0gICAgICAgIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1
YWxBcHBlYXJhbmNlKCpyYW5nZSwgbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6Tm8s
IENvbnZlcnRCbG9ja3NUb0lubGluZXM6OlllcyksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBzZXJpYWxpemVQ
cmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShyYW5nZS5nZXQoKSwgbnVsbHB0ciwgQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZTo6Tm8sIENvbnZlcnRCbG9ja3NUb0lubGluZXM6OlllcyksIGVtcHR5U3Ry
aW5nKCkpOwogCiAgICAgLy8gQSBub24tZW1wdHkgcGFyYWdyYXBoJ3Mgc3R5bGUgaXMgbW92ZWQg
d2hlbiB3ZSBjb3B5IGFuZCBtb3ZlIGl0LiAgV2UgZG9uJ3QgbW92ZSAKICAgICAvLyBhbnl0aGlu
ZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBlbXB0eSBwYXJhZ3Jh
cGggY2FuIGhhdmUgc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDFiYzliNDBlNmZlOWNhNzk3Y2JmNjdlNzZkNmU2NjU1
ZWIwOTc1YTYuLmE2ZDE3NjBjMmIwY2Y5NGY5ODIxMzNlMjEyZGU0NWMxOWRkZjUyYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtNjkzLDkgKzY5Myw5IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJh
Z3JhcGhzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3Zl
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZE9mUGFyYWdy
YXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xpZW50KCktPnNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBsYWNlZC5n
ZXQoKSkpCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaWYgKCFmcmFtZSgpLmVkaXRvcigpLmNsaWVu
dCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5wdHIoKSwgcmFuZ2VUb0JlUmVw
bGFjZWQucHRyKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFw
aHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJzIGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291
bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0IGxldCBibG9jawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAKaW5kZXggY2NhNGVkZTFiYTQ0YzIzM2E2MzgxODc3ZWFjYTU4MTU4NzRlZWU1Yy4u
ODZkMDIxZDE4YTQ3OTEzZWVhMGI3NjY0OGVmOWZmOWNmMDQyZDVkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE3LDkgKzExMTcsOSBAQCBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGlu
dCBpbgogICAgIGlmIChpbmRleCA8PSAwKQogICAgICAgICByZXR1cm4geyBmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUoJm5vZGUpLCBET1dOU1RSRUFNIH07CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOworICAgIGF1dG8gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CiAgICAgcmFuZ2UtPnNlbGVjdE5vZGVD
b250ZW50cyhub2RlKTsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdCgqcmFuZ2UpOworICAgIENo
YXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKICAgICBpdC5hZHZhbmNlKGluZGV4IC0g
MSk7CiAgICAgcmV0dXJuIHsgaXQuYXRFbmQoKSA/IHJhbmdlLT5lbmRQb3NpdGlvbigpIDogaXQu
cmFuZ2UoKS0+ZW5kUG9zaXRpb24oKSwgVVBTVFJFQU0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA2NDIxNmM5ODYwNjRiNjdlZTM5OTVlMDAxMzg5ZDFj
OGFkYjQ3MzhhLi5iMzhjMTUwOWVlOTc5YmU5ZTQwZmUzYmFkMjkwZDQ3NDI2NjAwMDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03MTQsNyArNzE0LDcgQEAg
dm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IHBhcmVudFN0eWxlID0gY29weVByb3BlcnRpZXNGcm9tQ29tcHV0ZWRTdHlsZShu
b2RlLnBhcmVudE5vZGUoKSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7Ci0gICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gbm9kZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJm5vZGUsIEVk
aXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gbm9kZVN0eWxlID0gRWRpdGluZ1N0
eWxlOjpjcmVhdGUoJm5vZGUsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwogICAgIG5vZGVT
dHlsZS0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoKnBhcmVudFN0eWxlKTsKIAogICAgIE11
dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlID0gbm9kZVN0eWxlLT5zdHlsZSgpOwpAQCAtODI4
LDggKzgyOCw4IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVP
ZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgYm9vbCBzaG91bGRSZW1v
dmVTdHJpa2VUaHJvdWdoID0gc3RyaWtlVGhyb3VnaENoYW5nZSgpID09IFRleHREZWNvcmF0aW9u
Q2hhbmdlOjpSZW1vdmU7CiAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSB8fCBzaG91bGRS
ZW1vdmVTdHJpa2VUaHJvdWdoKSB7CiAgICAgICAgIGlmIChSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2
YWx1ZUxpc3QgPSB0ZXh0RGVjb3JhdGlvblZhbHVlTGlzdCgqaW5saW5lU3R5bGUpKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBuZXdWYWx1ZUxpc3QgPSB2YWx1ZUxpc3QtPmNv
cHkoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGV4dHJhY3RlZFZhbHVlTGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1
dG8gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5KCk7CisgICAgICAgICAgICBhdXRvIGV4
dHJhY3RlZFZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
IAogICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB1bmRlcmxpbmUgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuZGVybGlu
ZSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lICYmIHZhbHVlTGlzdC0+
aGFzVmFsdWUodW5kZXJsaW5lLnB0cigpKSkgewpAQCAtODUwLDcgKzg1MCw3IEBAIGJvb2wgRWRp
dGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVu
dCYgZWxlbWVudCwgUmVmCiAgICAgICAgICAgICBpZiAoZXh0cmFjdGVkVmFsdWVMaXN0LT5sZW5n
dGgoKSkgewogICAgICAgICAgICAgICAgIGNvbmZsaWN0cyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgaWYgKG5ld1ZhbHVlTGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIG5ld0lu
bGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBuZXdWYWx1
ZUxpc3QpOworICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuZXdWYWx1ZUxpc3QpKTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1v
dmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKIApAQCAtMTA3MSw3ICsxMDcx
LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24m
IHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAvLyBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpcmVzIHRoYXQgdGhpcyBmdW5jdGlvbiBvbmx5
IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiB3YXMg
bW9kaWZpZWQgaW4gdGhlIGZ1dHVyZSB0byBkZWxldGUgYWxsIHJlZHVuZGFudCBwcm9wZXJ0aWVz
LCB0aGVuIGFkZCBhIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUKICAgICAvLyB3aGljaCBvbmUg
b2YgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiBvciBjb21wdXRlZFN0eWxlIGlzIGNhbGxlZC4KLSAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0gRWRpdGluZ1N0
eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1
dG8gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBvc2l0aW9u
LCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBTdHlsZVByb3BlcnRpZXMqIHN0eWxl
QXRQb3NpdGlvbiA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24tPm1fbXV0YWJsZVN0eWxlLmdldCgp
OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKQEAgLTExNTgsNyArMTE1OCw3
IEBAIHN0YXRpYyBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFjdEVkaXRpbmdQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVyCiAKIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZUlu
bGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgQ1NT
UHJvcGVydHlPdmVycmlkZU1vZGUgbW9kZSwgUHJvcGVydGllc1RvSW5jbHVkZSBwcm9wZXJ0aWVz
VG9JbmNsdWRlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlRnJvbVJ1bGVzID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlRnJvbVJ1bGVzID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUoKTsKICAgICBzdHlsZUZyb21SdWxlcy0+bWVyZ2VTdHlsZUZyb21SdWxl
c0ZvclNlcmlhbGl6YXRpb24oZWxlbWVudCk7CiAKICAgICBpZiAoZWxlbWVudC5pbmxpbmVTdHls
ZSgpKQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVG
cm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8g
VGhlIHByb3BlcnR5IHZhbHVlLCBpZiBpdCdzIGEgcGVyY2VudGFnZSwgbWF5IG5vdCByZWZsZWN0
IHRoZSBhY3R1YWwgY29tcHV0ZWQgdmFsdWUuICAKICAgICAvLyBGb3IgZXhhbXBsZTogc3R5bGU9
ImhlaWdodDogMSU7IG92ZXJmbG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQogICAgIC8vIEZJ
WE1FOiBUaGVyZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS81MTk1
MTIzPiBTbGFzaGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KLSAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGZyb21Db21wdXRlZFN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciBjb21w
dXRlZFN0eWxlKCZlbGVtZW50KTsKIAogICAgIHsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRF
bGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIG1f
bXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgqZnJvbUNvbXB1dGVkU3R5
bGUpOworICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdChmcm9t
Q29tcHV0ZWRTdHlsZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZVByb3BlcnRpZXNJ
blN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlVG9SZW1vdmVQcm9wZXJ0aWVzRnJv
bSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCB2
b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVs
ZW1lbnQmIGVsZW1lbnQsIE5vZGUqCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVy
dGllc05vdEluKCptX211dGFibGVTdHlsZSwgKnN0eWxlRnJvbU1hdGNoZWRSdWxlcyk7CiAKICAg
ICAvLyAyLiBSZW1vdmUgc3R5bGUgcHJlc2VudCBpbiBjb250ZXh0IGFuZCBub3Qgb3ZlcnJpZGRl
biBieSBtYXRjaGVkIHJ1bGVzLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGNvbXB1dGVkU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0LCBFZGl0aW5nUHJvcGVydGllc0luRWZm
ZWN0KTsKKyAgICBhdXRvIGNvbXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250
ZXh0LCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBpZiAoY29tcHV0ZWRTdHlsZS0+
bV9tdXRhYmxlU3R5bGUpIHsKICAgICAgICAgaWYgKCFjb21wdXRlZFN0eWxlLT5tX211dGFibGVT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikpCiAg
ICAgICAgICAgICBjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwpAQCAtMTgwMiw3
ICsxODAyLDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChUJiBzdHlsZSkKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGV4dHJh
Y3RQcm9wZXJ0aWVzTm90SW4oU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVdpdGhSZWR1bmRhbnRQcm9w
ZXJ0aWVzLCBUJiBiYXNlU3R5bGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gcmVzdWx0
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMpOwor
ICAgIGF1dG8gcmVzdWx0ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0aFJlZHVuZGFu
dFByb3BlcnRpZXMpOwogICAgIHJlc3VsdC0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoYmFz
ZVN0eWxlKTsKICAgICBBU1NFUlQocmVzdWx0LT5zdHlsZSgpKTsKICAgICBSZWY8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlID0gKnJlc3VsdC0+c3R5bGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCBlZjFmZDI0MDY0NjNlMzc4YTE4YWIyZWY5MDZjYzBiNGNj
MWZmZDcyLi5hNWU4NTg0ZjRhZTg3NzIzMTRmNjNmMzQxN2JjMGNkNmU0NjE3NmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xNzk1LDkgKzE3OTUsOSBAQCB2b2lkIEVkaXRvcjo6
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxl
ID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24gPT0gV3JpdGluZ0RpcmVjdGlvbjo6
TGVmdFRvUmlnaHQgPyAibHRyIiA6IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0aW9uOjpSaWdo
dFRvTGVmdCA/ICJydGwiIDogImluaGVyaXQiLCBmYWxzZSk7Ci0gICAgYXBwbHlQYXJhZ3JhcGhT
dHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0
aW9uKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUucHRyKCksIEVk
aXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBXcml0aW5nRGlyZWN0aW9uIEVk
aXRvcjo6YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0CkBAIC0y
MDIzLDggKzIwMjMsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogCiAgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFydCwgZXh0
ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4
KHN0YXJ0LCBiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsKLSAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5v
ZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7Ci0gICAgICAg
ICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5n
ZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpObyk7
CisgICAgICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJhc2VOb2Rl
LT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOworICAgICAgICAg
ICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVkUmFuZ2UucHRy
KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6Tm8pOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cAppbmRleCA1NmNhNWJmMGE3Zjg5MzQwZWM3YjI0MmYwMTViMGU1NzhjYzM5ZDU3Li45ZmRhYzFk
NjExOTUzOGFjZTNkNGJmOGMwZWUzMTc5ZjQ3YzhiZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTE0MiwxNiArMTQyLDE2IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNl
LCBFZGl0QWN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKIHsK
LSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3Bl
cnR5VmFsdWUpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUg
d2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8K
ICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rp
b24oc3R5bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFy
YWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9t
RE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5UGFyYWdy
YXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFn
cmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTgyLDI3ICs1ODIsMjcgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZUp1c3RpZnlSaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHls
ZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUuZWRp
dG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVj
dGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIoKSwgRWRpdEFj
dGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0
KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLmVkaXRvcigp
LmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24p
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0
aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CisgICAgYXV0
byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlUnRsKTsKLSAg
ICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRX
cml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLnB0
cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCmlu
ZGV4IDZmNTMyMDhmZTZjMjE0OGEwMjU2MzdiNjEwZWIzMmFkYzZmMDE4NzIuLmU0MzZjN2ZkZTIx
ZGJiMjAzNGI1OWM1Yjk1Mjg5ZmEzY2ZlZDcwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCB2b2lkIEZvcm1h
dEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQ
b3NpdGlvbiYgZW5kLAogICAgIFJlZlB0cjxOb2RlPiBvdXRlckJsb2NrID0gKHN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCkgPT0gbm9kZVRvU3BsaXRUbykgPyBzdGFydC5kZXByZWNhdGVkTm9kZSgpIDog
c3BsaXRUcmVlVG9Ob2RlKCpzdGFydC5kZXByZWNhdGVkTm9kZSgpLCAqbm9kZVRvU3BsaXRUbyk7
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVBZnRlckluc2VydGlvblBvc2l0aW9uID0gb3V0ZXJCbG9j
azsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCks
IHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9uKTsKICAgICBFbGVtZW50KiByZWZOb2Rl
ID0gZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChlbmQpOwogICAgIEVsZW1lbnQqIHJvb3QgPSBl
ZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydCk7CiAgICAgLy8gUm9vdCBpcyBudWxsIGZvciBl
bGVtZW50cyB3aXRoIGNvbnRlbnRlZGl0YWJsZT1mYWxzZS4KICAgICBpZiAoIXJvb3QgfHwgIXJl
Zk5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2so
cmVmTm9kZS0+dGFnUU5hbWUoKSkgJiYgc3RhcnQgPT0gc3RhcnRPZkJsb2NrKHN0YXJ0KQotICAg
ICAgICAmJiAoZW5kID09IGVuZE9mQmxvY2soZW5kKSB8fCBpc05vZGVWaXNpYmx5Q29udGFpbmVk
V2l0aGluKCpyZWZOb2RlLCAqcmFuZ2UpKQorICAgICAgICAmJiAoZW5kID09IGVuZE9mQmxvY2so
ZW5kKSB8fCBpc05vZGVWaXNpYmx5Q29udGFpbmVkV2l0aGluKCpyZWZOb2RlLCByYW5nZS5nZXQo
KSkpCiAgICAgICAgICYmIHJlZk5vZGUgIT0gcm9vdCAmJiAhcm9vdC0+aXNEZXNjZW5kYW50T2Yo
KnJlZk5vZGUpKSB7CiAgICAgICAgIC8vIEFscmVhZHkgaW4gYSBibG9jayBlbGVtZW50IHRoYXQg
b25seSBjb250YWlucyB0aGUgY3VycmVudCBwYXJhZ3JhcGgKICAgICAgICAgaWYgKHJlZk5vZGUt
Pmhhc1RhZ05hbWUodGFnTmFtZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwCmluZGV4IGMxOWI3NzRhZDZiMzAzYjM5NTBjNmExMTU3NDA1Zjk0
OGJhY2NhYzIuLjRlYzBiNGU1NWMzZWFmNjQwOGYyNTA1OTk2Y2ExZGNkYWE1ZjIzNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcApAQCAtODMs
MTMgKzgzLDEzIEBAIHZvaWQgUmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8g
R2V0IHRoZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlzIGVkaXRhYmxlIHJvb3QsIGl0J3MgdGhlIHN0
eWxlIHRoYXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAvLyBjb250ZW50IHRoYXQgd2UncmUgb3BlcmF0
aW5nIG9uLgogICAgIE5vZGUqIHJvb3QgPSBlbmRpbmdTZWxlY3Rpb24oKS5yb290RWRpdGFibGVF
bGVtZW50KCk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZGVmYXVsdFN0eWxlID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUocm9vdCk7CisgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShyb290KTsKIAogICAgIC8vIFdlIHdhbnQgdG8gcmVtb3ZlIGV2ZXJ5dGhpbmcg
YnV0IHRyYW5zcGFyZW50IGJhY2tncm91bmQuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBh
Y2Nlc3Mgc3R5bGUoKS4KICAgICBkZWZhdWx0U3R5bGUtPnN0eWxlKCktPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsKIAotICAgIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQo
KSwgZGVmYXVsdFN0eWxlLmdldCgpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kLCBl
ZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxl
Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHlsZS5wdHIoKSwgaXNFbGVtZW50
Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmNwcAppbmRleCA1MDJiYzA0ZDM1M2IyODNlMTg5MmVkZTI0OGM4YmUwNjY1ZGY3MDkxLi4wNDFm
OWQxMTdkNmEwMWViMmM1ODVhOGIyMTRkMzNkY2U4ZDg4MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCkBAIC04
OSw4ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29t
bWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiAKIFZlY3RvcjxSZWZQdHI8U3Rh
dGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1JhbmdlOjpjcmVh
dGVGcm9tUmFuZ2UoKm1fcmFuZ2VUb0JlUmVwbGFjZWQpOwotICAgIHJldHVybiB7IDEsIHJhbmdl
IH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqbV9yYW5n
ZVRvQmVSZXBsYWNlZCkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA0
ODA0ZTkwYThlMjI5Y2I5ODRkNmY0Yzc2NTFjMmY5MThiNWVjNTY1Li5mODIzOWQyYWE3MWZmYzFm
NzE1MTc2ZWEwZjUzNjZhMjYwZDk3ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHls
ZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBkb3du
Y2FzdDxTdHlsZWRFbGVtZW50Pihub2RlLmdldCgpKTsKIAogICAgICAgICBjb25zdCBTdHlsZVBy
b3BlcnRpZXMqIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGUoKTsKLSAgICAgICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZShpbmxpbmVTdHlsZSk7CisgICAgICAgIGF1dG8gbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7CiAgICAgICAgIGlmIChpbmxpbmVTdHlsZSkgewogICAg
ICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8UXVhbGlmaWVkTmFtZT4gYXR0cmlidXRlczsKQEAgLTc2Niw3ICs3NjYsNyBAQCBz
dGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2VtZW50RnJh
Z21lbnQmIGZyYWdtZW50LCBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBOb2Rl
KiB3cmFwcGluZ1N0eWxlU3BhbiA9IHRvcE5vZGU7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4g
c3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2VydGlvblBvcy5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBzdHlsZUF0SW5zZXJ0aW9uUG9z
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVBdEluc2VydGlvblBvcy0+c3R5
bGUoKS0+YXNUZXh0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFyaXNvbiBp
cyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0eWxlcy4KQEAgLTgwNCw3ICs4MDQsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKEluc2VydGVk
Tm9kZXMmIGluc2VydGVkTm9kZXMpCiAgICAgaWYgKCF3cmFwcGluZ1N0eWxlU3BhbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUoKSk7CisgICAgYXV0byBz
dHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5pbmxpbmVTdHls
ZSgpKTsKICAgICBDb250YWluZXJOb2RlKiBjb250ZXh0ID0gd3JhcHBpbmdTdHlsZVNwYW4tPnBh
cmVudE5vZGUoKTsKIAogICAgIC8vIElmIE1haWwgd3JhcHMgdGhlIGZyYWdtZW50IHdpdGggYSBQ
YXN0ZSBhcyBRdW90YXRpb24gYmxvY2txdW90ZSwgb3IgaWYgeW91J3JlIHBhc3RpbmcgaW50byBh
IHF1b3RlZCByZWdpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBjMTA5ZGIwNGI3ZTcwZDgwZjFhNDhmODU4ZGY0
ZGJjMzZhZjM3ODNiLi43ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdlMDc2YTVlYTk4MzgyMzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTEyNCw4ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZDo6aW5wdXRFdmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0YXRpY1Jhbmdl
Pj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIHsKLSAg
ICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5n
ZShtX3JhbmdlVG9CZUNvcnJlY3RlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2UgfTsKKyAgICBy
ZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VUb0JlQ29ycmVj
dGVkKSB9OwogfQogCiBSZWZQdHI8RGF0YVRyYW5zZmVyPiBTcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAwMGEyNTdmMDdjNjY3MWI3NjgzYWIz
ZTQ3MmYxYTlmMzU3YWQ3NzNhLi5lODllODcwYTU2YjcwOTQ2YzdhZDdlYmJjMWNlOTUxNDBjNTIw
ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CkBAIC0zMzcsOCArMzM3LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgaWYg
KGluU2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBtX3Jhbmdl
LT5lbmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjaGFyYWN0
ZXIgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJhbmdlIHRvIHRo
ZSBlbmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIHdpbGwgd2Fu
dCB0byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCi0gICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCks
IG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgY3VycmVudEVuZE9mZnNldCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAg
ICAgICAgICBhdXRvIGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgY3VycmVudEVu
ZE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNSYW5nZS5wdHIo
KSk7CiAgICAgICAgICAgICBsYXN0SXRlcmF0aW9uID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoY3VycmVudFN0YXJ0T2Zmc2V0IDwgY3VycmVudEVuZE9mZnNldCkgewpAQCAtMzk3LDgg
KzM5Nyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5n
T3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgaWYgKCFt
aXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFkR3JhbW1hclBo
cmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0YWlsTG9jYXRp
b24pKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9IHNwZWxsaW5n
TG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Zmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwYXJh
Z3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNw
ZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdyYXBoT2Zmc2V0
QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBhcmFncmFwaE9m
ZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdyYXBoUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGluZ09mZnNl
dCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UucHRy
KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3Bl
bGxpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5kT2Zmc2V0ID0g
c3BlbGxpbmdPZmZzZXQ7CkBAIC00MDgsOCArNDA4LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIs
IGIKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFtbWFyUGhyYXNl
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNl
dCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShw
YXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFy
dFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShwYXJhZ3Jh
cGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5zdGFydFBvc2l0
aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHBhcmFncmFwaE9mZnNldEFzUmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IGdyYW1tYXJQaHJhc2VPZmZzZXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3OWI0M2NlYjI4MzY3Zjg4NWVh
YjVlZGNhOThhMjJjZTVhMmE4ZDYxLi42NzA2M2VlMTU2MmFlMzFmMjIwMjViMzU4NTExZmRmNGQ5
OThhNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTI2
NSw4ICsyNjUsOCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpcwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGNtZCA9IFR5cGluZ0NvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9ucywgY29tcG9zaXRpb25U
eXBlKTsKLSAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1lLmdldCgpLCAqY21kLCBz
ZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOworICAgIGF1dG8gY21kID0g
VHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdUZXh0LCBvcHRp
b25zLCBjb21wb3NpdGlvblR5cGUpOworICAgIGFwcGx5VGV4dEluc2VydGlvbkNvbW1hbmQoZnJh
bWUuZ2V0KCksIGNtZC5nZXQoKSwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJyZW50U2VsZWN0
aW9uKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9jdW1lbnQm
IGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMpCkBAIC00OTksOCArNDk5LDcgQEAgYm9vbCBUeXBp
bmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCBjb21t
YW5kVHlwZSwgVGV4dEcKICAgICBpZiAoIXJhbmdlIHx8IGlzRWRpdGluZ1RleHRBcmVhT3JUZXh0
SW5wdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGlu
ZygqdGhpcywgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJpbmRpbmdzKCkp
OwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiBzdGF0aWNSYW5nZSA9IFN0YXRpY1JhbmdlOjpj
cmVhdGVGcm9tUmFuZ2UoKnJhbmdlKTsKLSAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxs
QXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIHN0YXRpY1JhbmdlIH0pOworICAgIHJldHVybiBmcmFt
ZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGljUmFuZ2U6OmNy
ZWF0ZUZyb21SYW5nZSgqcmFuZ2UpIH0pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OnR5cGlu
Z0FkZGVkVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZUZvckFkZGVkVHlw
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IGY0ZjlkNTBl
ZDEyMDVmODg0NTRiNmU4NmE0YTFiZmY0YzRkYTIxYmYuLjE3YjQ0MGU2MjdjOTc5OTEyZTk5YzFj
Njk5YzI5OTM4YjE0YTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKQEAgLTE4OTMsMTAgKzE4OTMsMTAgQEAgaW50IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG8KICAgICBi
b29sIHRoaXNJc1N0YXJ0ID0gKHZwIDwgb3RoZXIpOwogCiAgICAgLy8gU3RhcnQgbXVzdCBjb21l
IGZpcnN0IGluIHRoZSBSYW5nZSBjb25zdHJ1Y3Rvci4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRv
Y3VtZW50KCksCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IHZwIDogb3RoZXIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IG90aGVyIDogdnAp
KTsKLSAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdl
dCgpKTsKKyAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdl
LnB0cigpKTsKIAogICAgIHJldHVybiAodGhpc0lzU3RhcnQgPyAtZGlzdGFuY2UgOiBkaXN0YW5j
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRl
eCA1Y2NmNDQ2MjQwOTY4MTNlODY5MjdlYjMwMzkzMjQ4OWZmMDI5YjkxLi41ZGU3MTZmYTFhYzRh
OWI2OWM4NWYwOTY2YmEyOTNiZmFiYjI2YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEVkaXRvcjo6d3Jp
dGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1lKTsKKyAgICBhdXRvIGFyY2hpdmUg
PSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1lKTsKICAgICBp
ZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9T
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3Bw
CmluZGV4IDc1ZjU0YTEzMTA0YTM0ZjM4ZDFkNjg0YTM3ZjJlYTg5NjM0MjFkMTguLjJjNGI2MGQw
MTQzMzExMTVjYjkxMmM3MGVkOWZjYzViMjUzNGYzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC02Nyw4ICs2Nyw4IEBA
IHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiAgICAgRWxlbWVudCogcm9vdCA9
IGFmdGVyUmVzdWx0cy5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKICAgICAvLyBGSVhNRTogQWRk
IHRoZSByZXN1bHQgbWFya2VyIHVzaW5nIGEgUG9zaXRpb24gY2FjaGVkIGJlZm9yZSByZXN1bHRz
IGFyZSBpbnNlcnRlZCwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIFRleHRJdGVyYXRvcnMuCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZVRvRW5kID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKE5vZGUgKilyb290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRl
ZXBFcXVpdmFsZW50KCkpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgocmFuZ2VUb0VuZC5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byByYW5nZVRvRW5kID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKE5vZGUg
Kilyb290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkpOworICAgIGludCBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5wdHIoKSwgdHJ1ZSk7
CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExlbmd0aDsKIAogICAgIGlm
IChzdGFydEluZGV4ID49IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQppbmRleCBmMzdmZGU3ZmY0NWRiYjU1YTU1NjAyOTgyZWVmMmM4OWNjNGU0Yzc3Li4yMzBmNWUz
YjQxNzMyYjFlNjI4NDUwOWQxNDQ1NTg3ZGEzZGYyOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24g
ZGlyCiAgICAgLy8gSWYgdGhlIHRleHQgaGFzIGxlZnQgb3IgcmlnaHQgYWxpZ25tZW50LCBmbGlw
IGxlZnQtPnJpZ2h0IGFuZCByaWdodC0+bGVmdC4gCiAgICAgLy8gT3RoZXJ3aXNlLCBkbyBub3Ro
aW5nLgogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc2VsZWN0aW9uU3R5bGUgPSBFZGl0aW5n
U3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpKTsKKyAgICBhdXRvIHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2Vs
ZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAgICAgaWYgKCFz
ZWxlY3Rpb25TdHlsZSB8fCAhc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpCiAgICAgICAgICByZXR1
cm47CiAKQEAgLTEzOCwxNyArMTM4LDE3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50
Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxl
ID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBuZXdWYWx1ZSk7Ci0gICAgYXBwbHlQYXJhZ3JhcGhT
dHlsZShzdHlsZS5nZXQoKSk7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5wdHIoKSk7
CiB9CiAKIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogewogICAgIC8v
IFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBzdHlsZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgbW9kaWZ5
IGJ5IGFwcGx5aW5nIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgogICAgIAotICAgIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1fZnJhbWUuZG9j
dW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7Ci0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS5nZXQoKS0+c3R5bGUoKS0+bXV0YWJs
ZUNvcHkoKTsKKyAgICBhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7CisgICAgYXV0byBkZWZhdWx0U3R5
bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8g
VGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHBy
b3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCiAgICAgZGVmYXVs
dFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1
LCAyNTUsIDI1NSwgMC4wKSIpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1v
dmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGRlZmF1bHRTdHlsZS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7IC8vIGltcGxlbWVudHMg
dW5kZXJsaW5lCiAKICAgICAvLyBGSVhNRSBhZGQgRWRpdEFjdGlvbjo6TWF0Y2hTdGx5ZSA8cmRh
cjovL3Byb2JsZW0vOTE1NjUwNz4gVW5kbyByaWNoIHRleHQncyBwYXN0ZSAmIG1hdGNoIHN0eWxl
IHNob3VsZCBzYXkgIlVuZG8gTWF0Y2ggU3R5bGUiCi0gICAgYXBwbHlTdHlsZVRvU2VsZWN0aW9u
KGRlZmF1bHRTdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6Q2hhbmdlQXR0cmlidXRlcyk7CisgICAg
YXBwbHlTdHlsZVRvU2VsZWN0aW9uKGRlZmF1bHRTdHlsZS5wdHIoKSwgRWRpdEFjdGlvbjo6Q2hh
bmdlQXR0cmlidXRlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGdldEltYWdlKEVsZW1lbnQmIGltYWdl
RWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2UsIENhY2hlZEltYWdlKiYgY2FjaGVkSW1hZ2Up
CkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
UGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KIAogICAgIFBvc2l0
aW9uIGJlZm9yZUltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVBbmNob3IpOwogICAgIFBvc2l0aW9uIGFmdGVySW1hZ2VQb3NpdGlvbigmaW1hZ2VF
bGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKLSAgICBSZWZQdHI8UmFu
Z2U+IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgpLCBi
ZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOwotICAgIGNsaWVudCgpLT5n
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UuZ2V0KCksIHBhc3RlYm9h
cmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOworICAgIGF1
dG8gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3VtZW50KCksIGJl
Zm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7CisgICAgY2xpZW50KCktPmdl
dENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5wdHIoKSwgcGFzdGVib2Fy
ZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7CiAKICAgICBw
YXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KaW5kZXggNDYyMmY4NjZiZDIwNjExODVmMzI5NTVlZTdlNzliZTFk
NjkyZjI1Zi4uM2ZlNmY0ZTdlNDUyMTI1YjUxZmExZmM3ZDQ4MDYxYzJjNDZiYjc3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTYwLDggKzE2MCw4IEBAIHZv
aWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4g
cHJvdGVjdG9yKG1fZnJhbWUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFu
Y2hvcikpOwotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOworICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBv
c2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246
OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9O
b3RTZXRGb2N1cyk7CiAKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
OwogCkBAIC0xNzYsOSArMTc2LDkgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGJvb2wgY2hvc2VQbGFpblRleHQ7
Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdlYkNvbnRlbnRG
cm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KSkg
eworICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50
RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgcmFuZ2UuZ2V0KCksIHRydWUsIGNob3NlUGxhaW5U
ZXh0KSkgewogICAgICAgICBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQoKm5vZGUs
ICpmcmFnbWVudCk7Ci0gICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQs
IHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpCisgICAgICAgIGlmIChz
aG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLnB0cigpLCBFZGl0b3JJbnNlcnRB
Y3Rpb246OlBhc3RlZCkpCiAgICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQucmVs
ZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCks
IGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKTsKICAgICB9
CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVi
b2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGlt
YWdlRWxlbWVudCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOworICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAppbmRleCAzMWUxOGE1MWM4YmJiNDllYTE0NjQ3ZmY0NDFjNTQ3MGFlMjkw
NGFiLi4wZTFjYzIyNmVjNWMxMDJmNGY3M2QwNDExNWZkNzc3OWYxZTdhOGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RhdGljIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0FuZElubGluZURlY2woTm9kZSYgbm9kZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KG5vZGUpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsKKyAgICBhdXRvIHN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsKICAgICBzdHls
ZS0+bWVyZ2VTdHlsZUZyb21SdWxlcyhlbGVtZW50KTsKLSAgICByZXR1cm4gc3R5bGU7CisgICAg
cmV0dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRQcmVzZW50
YXRpb25hbChjb25zdCBOb2RlKiBub2RlKQpAQCAtMTIxMSw4ICsxMjExLDggQEAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1
bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gSSBj
YW4gZmluZCwgaXQgbG9va3MgbGlrZSB3ZSB3YW50IHRvIHN0YXJ0IHBhcnNpbmcgdGhlIGZyYWdt
ZW50IGluIHRoZSBJbkJvZHkgaW5zZXJ0aW9uIG1vZGUuCiAgICAgICAgIC8vIFVuZm9ydHVuYXRl
bHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIHBhcnNlci4KICAgICAg
ICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBoZXJlIGJ5IHBhc3NpbmcgaW4gYSBmYWtlIGJv
ZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUgZnJhZ21lbnQuCi0gICAgICAgIFJlZlB0cjxI
VE1MQm9keUVsZW1lbnQ+IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUob3V0cHV0
RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcsIGZha2VCb2R5
LmdldCgpKTsKKyAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRl
KG91dHB1dERvYyk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBm
YWtlQm9keS5wdHIoKSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9w
bGFpbiIpCiAgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUo
b3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDA0MzQxMjkwMmE0MGZlNDE3MWI3NjUy
ZDk4YjBhM2UyZTI4ZDUxNTcuLjg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAt
MjE3LDkgKzIxNyw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKIHsKICAgICBpZiAobV92YXJpYWJsZUxlbmd0
aCAmJiBtX3RvdGFsQnl0ZXMgPiBtX2J5dGVzTG9hZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gbmV3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xvYWRlZCk7Ci0K
LSAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsKKyAgICAgICAgbV9yYXdEYXRhID0gbV9yYXdE
YXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKICAgICAgICAgbV90b3RhbEJ5dGVzID0gbV9i
eXRlc0xvYWRlZDsKICAgICB9CiAgICAgY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBkN2UyYjc1YTQ1MzEyMGIwMmQ3Yzc0MmQ0
NjBmNDZhNGRkNTk5NDhlLi5kNzgxMTBjYzllZGI5ZGEwMDRkNDE1ODRhYzQ5ZGJhZTAwMjRlOWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAt
MjgxLDcgKzI4MSw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5k
QXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKIAogc3RhdGljIGlubGluZSBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0
aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5
VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwog
ICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVt
cGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZm
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzNTQyOWYx
Yzg2YjBjMWVhOTk3OGZkYTRjZjlhZTA0ZWI0M2YwZTk1Li5iOGIwNGFjYjk2NTU2NzBiMjQ4Y2M4
N2NkMWRhOGM2ZDc2NTgzYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXllciopCiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSkKIHsKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXMpOwor
ICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAKICAgICAvLyBEb24ndCBzZXQgdGhl
IGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVlIHdpbGwgc2V0IGl0IGluIEdlbmVyaWNFdmVu
dFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5nIGl0IGhlcmUKICAgICAvLyB3aWxsIHRyaWdn
ZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9u
LgpAQCAtNjQ0NSw3ICs2NDQ1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRp
YUNvbnRyb2xzKCkKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzPiBtZWRpYUNvbnRyb2xzID0gTWVkaWFD
b250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGF1dG8gbWVkaWFDb250cm9scyA9IE1l
ZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKaW5kZXggZmY5NmY0ZjI0MzViMDk4ZTA2NjYyZjMzY2MyMDVlMDAwYjM3OTE2ZC4u
MjI0ODA3YTI2MzRmMDFlOTMzNDllNzdhOTNjZjQ1MDFkYWZkMWUzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00NzMsOSArNDczLDkgQEAgSFRNTFRhYmxl
RWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25z
dAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IEhU
TUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCitSZWY8U3R5bGVQcm9wZXJ0
aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogewotICAgIFJl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUoKTsKIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCk7CiAgICAgc3dpdGNoIChjZWxsQm9yZGVycygpKSB7CkBAIC01MTEsNyArNTExLDcgQEAg
UmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2Vs
bFN0eWxlKCkKICAgICBpZiAobV9wYWRkaW5nKQogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlQYWRkaW5nLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9wYWRkaW5nLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAKLSAgICByZXR1cm4gc3R5bGU7CisgICAgcmV0
dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJs
ZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdhMTk4MWEzOTkxM2Iw
Li5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBIVE1MVGFi
bGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAgIENlbGxCb3JkZXJz
IGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVh
dGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFy
ZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRhMGJkYmNlMzkzYjg4
Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4NTUwNjI5ZjRjMDlj
MzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgVVJM
VXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFN0cmluZyBV
UkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBhdXRvIG9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1cm4gb3JpZ2luLT50
b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYWI4OWZmOWU4N2Q1ZGIzODg3OTZiOTQ1OTJjNzFj
OTlkNzQ1OTkyOC4uY2YxYjUzYmRiMjNmNzk4ZmIyMTM4Yjk2ODk1MDQ4OTE5YmM0MjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmCiAgICAgLy8g
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBh
Z2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2Vu
CiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5v
ZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25lckRvY3VtZW50LmZy
YW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6
OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGluc2lkZVRlbXBs
YXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1dG8gZWxlbWVudCA9
IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJE
b2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAoYXV0byogZWxlbWVu
dEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVyRG9jdW1lbnQsIGxv
Y2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKaW5kZXggODU0ZWE3N2ZhOGM3NDcwZmZkYmZlNTI2OTVkMmFmMzQ1NjFjYTYxNi4u
MGIxNDY3OWJjY2UwMTNmYjM4NWVhNWYzOTBhODI0NmUxYjNmNjRjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CkBAIC0xMjIsNyArMTIyLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElu
bmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclMKICAgICAgICAgLy8g
U2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAgLy8gc3R5bGUg
dG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5vdCBiZSBp
biBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBmb3IgdGhlIHJvb3Qg
ZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgICAgICBp
bnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxLjAsIGZhbHNlIH0p
OwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgRml4ZWQg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmlu
ZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDguLjM1YzI5MzI5MmVi
MDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9tQ3VlVGV4dChE
b2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7Ci0gICAgUmVm
UHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0ZSgpOworICAgIGF1
dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5zZXRTdGFydFRpbWUo
bV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9jdXJyZW50RW5kVGlt
ZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9TdHJpbmcoKSk7CiAg
ICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0aW5ncyhtX2N1cnJl
bnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7CisgICAgbV9jdWVsaXN0
LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGll
bnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQyOTQyYmU4NzZjMzkz
OTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYg
bm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcg
PSBub2RlLnByZXZpb3VzU2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxk
IHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG1fZG9jdW1l
bnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUobV9kb2N1
bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgZnJh
Z21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgpID8gbm9kZS5wYXJl
bnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsKICAgICBlbHNlCkBA
IC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNoU3VwcG9ydDo6cGF0
Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAgICAgaWYgKGlubmVy
UGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCkuaGFzRXhjZXB0aW9u
KCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCi0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2RlLCAqZnJhZ21l
bnQsIG5vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9yLnJlcGxhY2VDaGls
ZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAppbmRleCA5YjY4YzRiMDVjM2I2M2VhMWVmZjcxYjAxYWU5YjE1OWZiY2U2N2QzLi44YjY3
NjJmZDU5NWE0M2ExMzFlZTBhNzVlMWMyMDY3ZDAwMmFjMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4o
bV9jb250ZXh0KSkgewogICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3duY2FzdDxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RhdGUg
OiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAg
YXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogCiAgICAgICAgICAg
ICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJzZXRUcmFuc2Zvcm0i
X3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5zZm9ybSkpOwogICAg
ICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhGb3JLZXkoImdsb2Jh
bEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMzLDcgKzUzMyw3IEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5zcGVj
dG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZT4obV9jb250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYgKE9wdGlvbmFsPFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXM+IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0V2ViR0xCYXNlLmdldENvbnRleHRB
dHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIGF1dG8gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQtPnNldEJv
b2xlYW4oImFscGhhIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzLT5hbHBoYSk7CiAgICAgICAg
ICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigiZGVwdGgiX3Ms
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmRlcHRoKTsKICAgICAgICAgICAgIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJzdGVuY2lsIl9zLCB3ZWJHTENvbnRleHRB
dHRyaWJ1dGVzLT5zdGVuY2lsKTsKQEAgLTY0Myw4ICs2NDMsOCBAQCBSZWY8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5n
JiBuYW1lLAogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRlcnNEYXRhKSk7CiAg
ICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVzKSk7CiAKLSAgICBSZWZQdHI8
U2NyaXB0Q2FsbFN0YWNrPiB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwotICAgIGFjdGlvbi0+YWRkSXRlbShpbmRleEZv
ckRhdGEoV1RGTW92ZSh0cmFjZSkpKTsKKyAgICBhdXRvIHRyYWNlID0gSW5zcGVjdG9yOjpjcmVh
dGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6
OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAgYWN0aW9u
LT5hZGRJdGVtKGluZGV4Rm9yRGF0YSh0cmFjZS5wdHIoKSkpOwogCiAgICAgcmV0dXJuIGFjdGlv
bjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4ZTFjNDgyOWRmZjViZWFjMWQ2ZmMwMzIwOWNl
YmZkMGM0NTA1Nzc0Li5hMGMzODg3YTZlZmMyYTA1MWMzYTM1MzE0N2Q3MTM2Y2Y4YWM4YWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBt
YWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2JsYW5rIl9zLCBM
b2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJl
ciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5
OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIElu
aXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAKICAgICBib29sIGNyZWF0ZWQ7Ci0gICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyhtYWluRnJhbWUsIG1h
aW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgeyB9LCBjcmVhdGVkKTsKKyAgICBh
dXRvIGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFpbkZyYW1lLCBX
VEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQxOWYyYWM4NTc2YjI5MmNjY2M3YWM5ZWMzMDgzMzQ0
MTk4ZWUwZTEuLjY4NzE2NTRjZWQ4N2MxY2U4YzI5ODM2ZjgxZDdmYzg0YTMzNWI3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0
KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gbGlzdCA9
IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGxpc3QgPSBTdGF0aWNDU1NS
dWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4mIGxpc3RSdWxl
cyA9IGxpc3QtPnJ1bGVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHN0eWxl
U2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBsaXN0UnVsZXMuYXBwZW5k
KHN0eWxlU2hlZXQtPml0ZW0oaSkpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVy
dGllcygpIGNvCiAKICAgICAgICAgYXV0byBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKIAotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQorICAgICAgICBh
dXRvIHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3Jl
YXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKQogICAgICAgICAg
ICAgLnJlbGVhc2UoKTsKQEAgLTY5NiwxMSArNjk2LDExIEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygp
IGNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5v
bmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUs
IHByb3BlcnR5LmNvcHlSZWYoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSW5hY3Rp
dmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5z
ZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVy
dHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpbXBsaWNpdCA9IG1fc3R5bGUtPmlz
UHJvcGVydHlJbXBsaWNpdChuYW1lKTsKQEAgLTEzMzIsMTIgKzEzMzIsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICBpZiAoIW1fcGFyc2VkU3R5
bGVTaGVldC0+aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8
U3R5bGVTaGVldENvbnRlbnRzPiBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpj
cmVhdGUoKTsKKyAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNy
ZWF0ZSgpOwogICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRl
eHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1l
bnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0
LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURh
dGFSZXN1bHQuZ2V0KCkpOwotICAgIENTU1BhcnNlcjo6cGFyc2VTaGVldEZvckluc3BlY3Rvcihj
b250ZXh0LCBuZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwg
aGFuZGxlcik7CisgICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9yKGNvbnRleHQs
IG5ld1N0eWxlU2hlZXQucHRyKCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBoYW5kbGVy
KTsKICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEoV1RGTW92ZShydWxlU291
cmNlRGF0YVJlc3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1NvdXJj
ZURhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZmRkNWM3ZTA1NTIxYTkxNmU0NDM5OTAy
MjFlMGNhYzJkNjU1NDkwMC4uZTM4ZDFhMzgzZDMzOTQyMTRiN2JhOGJmNDA1NmZhZjgzNGJhMDA5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lkIEluc3BlY3RvckNh
bnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmlu
Z0NvbnRleAogCiAgICAgY29udGV4dC5jYW52YXNCYXNlKCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOwog
Ci0gICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9y
Q2FudmFzOjpjcmVhdGUoY29udGV4dCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52
YXMuc2V0KGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMpOwor
ICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoY29udGV4
dCk7CisgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3BlY3RvckNhbnZh
cy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKIAogICAgIGlmICgh
bV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNS
ZW5kZXJpbmdDb250ZXgKICAgICBpZiAobV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQp
IHsKICAgICAgICAgUmVjb3JkaW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwogICAgICAgICBy
ZWNvcmRpbmdPcHRpb25zLmZyYW1lQ291bnQgPSBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVD
b3VudC52YWx1ZSgpOwotICAgICAgICBzdGFydFJlY29yZGluZygqaW5zcGVjdG9yQ2FudmFzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0NhcHR1cmUsIFdU
Rk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOworICAgICAgICBzdGFydFJlY29yZGluZyhpbnNwZWN0
b3JDYW52YXMuZ2V0KCksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhdG9y
OjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDU4MTczYWNhM2Y3NGJjMmYzOTM0NjU2NzQxZTUwNTFl
NGYxMTJhYzguLjk2YmM4N2VmOGMxYWZkODk3YmQyNmJmMjI2OWU0MTA1NTk0ZGVhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNzYsMTQgKzE3NiwxNCBAQCBzdGF0aWMgUmVmUHRyPEtl
eVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYg
aWRiS2V5UAogICAgICAgICByZXR1cm4gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRo
OjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CiAKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKFtdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgIFJlZlB0cjxLZXlQYXRo
PiBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpTdHJp
bmcpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCku
c2V0VHlwZShLZXlQYXRoOjpUeXBlOjpTdHJpbmcpLnJlbGVhc2UoKTsKICAgICAgICAga2V5UGF0
aC0+c2V0U3RyaW5nKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwogICAgIH0sIFtd
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpIHsKICAgICAgICAgYXV0byBhcnJheSA9IEpT
T046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyaW5n
IDogdmVjdG9yKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsKLSAgICAgICAg
UmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBh
dGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8ga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVhc2UoKTsKICAg
ICAgICAga2V5UGF0aC0+c2V0QXJyYXkoV1RGTW92ZShhcnJheSkpOwogICAgICAgICByZXR1cm4g
a2V5UGF0aDsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyYjYwYzQ1Yjc4ODU5OGEwNjU5Yjhm
YWRjODU3NmIzOTFiODRlNWQxLi41YzFjYTkyOTQwZmFkZDJlZmY2ZmM1MDczMmE4ZDJjMzlkYTM2
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmFyY2hpdmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCiB7
CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCiAgICAgRnJhbWUmIGZyYW1lID0g
bWFpbkZyYW1lKCk7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1haW4gZnJhbWUi
X3M7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggMTdhYWQ0ZGIyZjJhMmUzYjA1MzVkYjZmZGE2MTAzY2E5MWQ5NGM3NC4uYTI4ZWM2OGNk
MzlkNDQ1MTRjZTcyNjZhODM3OGJmMTMzYjZjYWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTM4MywxNCArMzgzLDE0IEBAIGNsYXNzIEVtcHR5U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmluYWwgOiBwdWJs
aWMgU3RvcmFnZU5hbWVzcGFjZSB7Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFn
ZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gY29weShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2UpOyB9CisgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0
b3JhZ2VBcmVhKTsgfQorICAgICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKikg
ZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CiAg
ICAgfTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZpbmFsOwotICAg
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZpbmFsOwor
ICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5z
aWduZWQpIGZpbmFsOwogfTsKIAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyIGZpbmFs
IDogcHVibGljIFVzZXJDb250ZW50UHJvdmlkZXIgewpAQCAtNTEzLDIyICs1MTMsMjIgQEAgdm9p
ZCBFbXB0eUVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYpCiB7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwogfQogCi1SZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCitSZWY8U3Rv
cmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkNjczZTkwOTFhNGIxOWMxNzU0
ZGZmMTNlMjc0MTE5ZTRjYWRkYTUuLjQ4MGZiMmExZjc1YjNiZmM1MDI1NWViMmZmMDdkMDUwZmIy
OTA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTMzOCw3ICsx
MzM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJh
bWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChuZXdVUkwpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHJlZmVycmVyKTsKKyAgICAgICAgYXV0byByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKTsKICAgICAgICAgYWRkSFRUUE9yaWdpbklmTmVl
ZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsKICAgICB9CiAgICAgaWYg
KCZtX2ZyYW1lLnRyZWUoKS50b3AoKSAhPSAmbV9mcmFtZSkKQEAgLTM0OTksNyArMzQ5OSw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNv
bnN0IFN0cmluZyYgY29udGVudCwgY29uCiAKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CiAg
ICAgY2FzZSBYRnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewotICAgICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAgICAgICAg
YXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgICAgIGlmICgh
b3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnBhcmVudCgpKSB7CkBAIC0zNjQ5LDcgKzM2NDksNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRU
eXBlIGxvYQogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwotICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKKyAgICAgICAgYXV0byBzZWN1cml0eU9yaWdp
biA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVmZXJyZXIoKSk7CiAg
ICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdpbi0+dG9T
dHJpbmcoKSk7CiAgICAgICAgIGFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0c0lmTmVlZGVk
KHJlcXVlc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggZTFkNjBlYjkwZTdiNzM0OTdjMWFhZGMxYjM0ZWQ3YzM1YzQ2YWU2
ZS4uNGJhZDE4M2UwODU0OGM0N2RkZDk4MjI5ZWU5ZTYyYjRlYjQ5YjVjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlcgogICAgIFN0cmluZyBtb2RlID0gbG9hZFJl
c291cmNlU3luY2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
cnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckds
b2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmlu
ZygpKTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3
b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25z
LCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdl
UXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAmJiByZXN1
bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5y
dW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA1ZmQzOWJlN2Jk
MTQwYmVlNDJiOTFhMjhhZjg2ZGY3NGE3ZTc0ZDcyLi5jM2I1ZTNlMWYyMjkzNDEwNjY2MjYwOWI0
YTAxMDM5YzIwZTkxMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xMzEsMTYgKzEzMSwxNiBAQCB2b2lkIE1IVE1M
UGFyc2VyOjphZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJlc291cmNlLCBN
SFRNTEFyY2hpdmUqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBzdWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdWJm
cmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CiAgICAgc3ViZnJhbWUtPnNldE1haW5SZXNv
dXJjZSgqcmVzb3VyY2UpOwotICAgIG1fZnJhbWVzLmFwcGVuZChzdWJmcmFtZSk7CisgICAgbV9m
cmFtZXMuYXBwZW5kKFdURk1vdmUoc3ViZnJhbWUpKTsKIH0KIAogUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwgY29uc3QgU3RyaW5nJiBlbmRPZlBhcnRCb3VuZGFyeSwgY29uc3QgU3RyaW5nJiBlbmRP
ZkRvY3VtZW50Qm91bmRhcnksIGJvb2wmIGVuZE9mQXJjaGl2ZVJlYWNoZWQpCiB7CiAgICAgQVNT
RVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnku
aXNFbXB0eSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5kYXJ5Lmlz
RW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBpZiAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJpbmFyeSkg
ewpAQCAtMjExLDcgKzIxMSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRl
bnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBG
SVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNo
b3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdh
eXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNz
ZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUg
b25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKaW5kZXggZWU5N2IyYmQ0ZmQwNzIyYjViYTNiZDVmYWVlMWJjNmRmYzE2NjYyMC4u
Zjg2MzEzNTJjMjIwZGQxZmI1NDU4MTI1N2JlNTY4NTk4ZjNmNmQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMTYsMTEgKzIxNiw4IEBAIGJv
b2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBj
b25zdCBVUkwmIHVybCwgY29uc3QKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQgPSBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIHJlbW92ZUltYWdlRnJvbUNhY2hl
KHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50cnkgaWYg
aXQgYWxyZWFkeSBleGlzdHMuCiAKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0gICAgaWYg
KCFiaXRtYXBJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBjYWNoZWRJ
bWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0
KCksIHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8gYml0bWFw
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKKyAg
ICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBi
aXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAK
ICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAg
ICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgp
KTsKQEAgLTU0MSw3ICs1MzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNX
aXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVz
b3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVybCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJl
c291cmNlLnVybCgpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9yaWdpbi0+ZXF1YWwoJm9y
aWdpbikpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291
cmNlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDVmYWM4N2E1
Y2ZjOGE3YWFmMDI4MDJkOGVmYTUxYTVhYjBkODI5NmMuLjE5ZjhmNTI3NWFjZTZiYTI3ZmM0NTJj
NmZmN2I2OGMzNzM1MWMzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0ODQs
NyArMTQ4NCw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NT
UnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAKICAgICBib29sIGFsbG93Q3Jv
c3NPcmlnaW4gPSBmcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVk
Q1NTUnVsZXNEaXNhYmxlZCgpOwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBydWxl
TGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1bGVMaXN0ID0g
U3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcnVsZSA6IG1hdGNo
ZWRSdWxlcykgewogICAgICAgICBpZiAoIWFsbG93Q3Jvc3NPcmlnaW4gJiYgIXJ1bGUtPmhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQ5NCw3
ICsxNDk0LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NS
dWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKICAgICBpZiAocnVsZUxpc3QtPnJ1
bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBy
dWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIFJlZlB0cjxXZWJL
aXRQb2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShOb2Rl
KiBub2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKQEAgLTIyNDUsNyArMjI0NSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1l
IGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVu
dCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJlZmVyZW5jZXMg
YSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wgY3JlYXRlZDsK
LSAgICBSZWZQdHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KCphY3Rp
dmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHdpbmRvd0Zl
YXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQogICAgICAgICBy
ZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDc5NDJhMGRiZTBiYTY3ZTQxMjczMTY0MmNjZTA3NzAzYzY0YWIxMDku
LmVkM2ZlOTM3YzlhMjZkMWI3OTkxNjQyNmI3ZmMyMjM1NzMwYmUzZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UgogCiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAg
ICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Cisg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVu
dCgpLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5wdHIoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGU3MjUxZWUxYTE1ZmUyZTFkODAzZmVjZTU5OGU0
YzNiZjJjNjNiYTYuLjlmMzNmM2U2ZThkOTY5OWExYzQwNjhmZDY5YWM2MTFlNmVlMWRkMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3RyaW5nJiBQYWdl
Ojp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3
aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8g
dG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2Fs
bGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4u
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0
aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCmluZGV4IDkwMDU1MTYwNjk5NTUzNTgzYmVlMDIzYmVjNjM4YjkyZDAxNTk0OTYu
LmM1NzFhZjA2YWZlODY5NWE0NWRkN2Y0ZGFjY2FjNTRhZTMwYzkxZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTE5MSwxMSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVu
ZEZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAgICAgICAgIGlm
IChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVu
ZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6
IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3Ap
OworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZy
b21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4M2NmZDMxNjQ4
ODAwZTczODE2NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3ZjdlNDNiY2M1
NzAyYjAyNjFmYTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC04MSwx
NCArODEsMTQgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXItPmluaXRGb3JT
eW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkb2N1
bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0aGlzLCB1cmwp
OworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9j
dW1lbnQodGhpcywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9j
dW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAgIGRvY3VtZW50
LT5jcmVhdGVET01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgc2V0
RG9jdW1lbnQoZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBI
VE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9vdEVsZW1lbnQg
PSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gYm9keSA9
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBpZiAoIXN0eWxl
LmlzRW1wdHkoKSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVB
dHRyLCBzdHlsZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRl
cnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogbWFy
a2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAgICAgICAgLy8g
Rmlyc3QsIGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAgICAgICAgaWYg
KHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBw
cmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBwcmVj
ZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgYXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVu
dCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5wdHIoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0YXRpb25zKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBwcmVjZWRpbmdU
ZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwg
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsK
LSAgICAgICAgICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5n
ZUZvck1hcmtlci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFu
Z2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUs
IG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2Rl
LCBtYXJrZXItPmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRG
b3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAgICAgICAgICAg
c2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0
ZXJuYXRpdmVzKCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIERldGVy
bWluZSB0ZXh0IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0
aGUgdmlzaWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDggQEAgTlNBcnJh
eSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICB9CiAK
ICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgotICAg
IFJlZlB0cjxSYW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RN
YXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOworICAgIGF1dG8g
YWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRp
bmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJv
b3RDaGlsZENvdW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRl
eHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1h
cmtlci5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGlu
dGVycHJldGF0aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFm
dGVyTGFzdE1hcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2MGVkZjk1Mzgw
YWM5MjFiMTVmMGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNmMDJmYmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OkhpZ2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBs
ZXRpb246ZmFsc2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAKLSAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktl
eSgiRmFkZUhpZ2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBhdXRvIHBsYXRm
b3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUoYW5pbWF0aW9u
LmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkpLnBsYXRmb3Jt
Q0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3Jt
QW5pbWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpI
aWdobGlnaHQ6OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0YWluZWRTZWxm
LT5kaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFk
ZUhpZ2hsaWdodE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBwbGF0Zm9ybUFu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5
ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1Bbmlt
YXRpb24uZ2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2JiZTUwMDk0OGY1
MmE1MDA4OWQzNzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIzM2VmOTE5YzJk
NjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikg
ewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlenUgeCAlbHVc
biIsIHNpemUoKSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGY2
NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlmNzQ3ZTk4Yjk1
NmEwYzBjNWIwNDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9vbCBIUlRGRWxl
dmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwg
aW50IGVsZXZhdGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAgIHVuc2lnbmVk
IHN0YXJ0RnJhbWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVuc2lnbmVkIHN0
b3BGcmFtZSA9IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBSZWZQdHI8QXVk
aW9CdXM+IHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpjcmVhdGVC
dWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAgIFJlZlB0cjxB
dWRpb0J1cz4gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGlu
ZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRl
KTsKKyAgICBhdXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVzOjpj
cmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOworICAgIGF1
dG8gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhwcmVT
YW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKICAg
ICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5l
bChBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmlnaHRFYXJJbXB1
bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIu
Y3BwCmluZGV4IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4NGEuLjg5Nzdm
Mzk4NjlkNmI2NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVk
IG51bWJlck9mU291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gV3Jh
cCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJj
ZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
MSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9IEF1ZGlvQnVz
OjpjcmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgogICAgIGJ1
cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3NzNkZDUxMDE1
YzE2Mjc4NGNkMjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQyZjg5NTNmZTlm
NGJhYTlhNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAg
LTM1Miw3ICszNTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmIChtX2Vycm9yT2Nj
dXJyZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1ZGlvQnVzPiBh
dWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1
ZSk7CisgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9j
aGFubmVsU2l6ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVS
YXRlKTsKIAogICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExl
ZnRCdWZmZXJzLmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmlu
ZGV4IDJhZjUxOGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRjMTQ0MTE1YWMy
OTZlODJmMzNiZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0xODAs
NyArMTgwLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhm
bG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVzQ2hhbm5lbENv
dW50ID0gbWl4VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAvLyBDcmVhdGUg
QXVkaW9CdXMgd2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAgIFJlZlB0cjxB
dWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVt
YmVyT2ZGcmFtZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0No
YW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRl
KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKSk7
IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0aGUgbWl4VG9N
b25vIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCAxZmRm
ZWNkYTcxYzYwNGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFjMGI3ZTUwYjQw
NGNmZDI2MzRmZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJ
Y29uPiB7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShI
SUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0
YXRpYyBSZWY8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEljb24oaEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUxMDllZDJkZjI5
YTguLjEzZjE4Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSA6
IHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAgICAgICAgV2Vi
VlRUCiAgICAgfTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IGNy
ZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKaW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZjMTBkZDY5NC4u
YWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCkBAIC0xODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAg
ICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAg
ICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkld
CiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2Yo
VUNoYXIpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6
OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNp
emUsIDEpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwg
dHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpAQCAtMTkwOCw4
ICsxOTA4LDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5kaWYKIAotICAg
IFJlZlB0cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3QpOwotICAgIG1f
b3duZXItPm1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKGF2UmVxdWVzdCwgcmVzb3VyY2VMb2FkZXIp
OworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpj
cmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBtX293bmVyLT5tX3Jlc291cmNlTG9hZGVy
TWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3Vy
Y2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVjMzhhMzA2MTFh
OS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgZmluYWwg
OiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShBVkFz
c2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQorICAg
IHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNyZWF0ZShB
VkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsK
ICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA3YjkzNWJmMWIzMjY2NTg1NjdjODJlN2FhNGU5YjljZmY2NjkyYzIwLi5l
MThmZWQzM2Q4MzhhZWRjMDYzMzI5ZWVmZmFmY2U4ZGRhNjdhYjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZpbGxSZXF1ZXN0
V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVlc3QsIEFyCiAK
ICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
OwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
OwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEgPSBrZXlEYXRh
LT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihlbmQpKTsK
KyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uoc3RhdGljX2Nh
c3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6
cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRhLT5ieXRlTGVu
Z3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpuc0RhdGEuZ2V0
KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRS
CiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
cmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzLCBh
dlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRnZSBDRlR5cGVS
ZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJjZUxvYWRlciA9
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVzdCk7CisgICAg
bV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJlcXVlc3QsIHJl
c291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGlu
ZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkxZjEyYTEyMTll
YjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRkNTg0YzkxODFk
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVibGljIE1l
ZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXgg
ZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2VjN2RmZWFiNDY1
ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQorUmVm
PE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNy
ZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5zZXRQcml2YXRl
QW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291cmNlUHJpdmF0
ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJlbnQsIGNsaWVu
dCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQcml2YXRlLmNv
cHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApAQCAtNzYsNyAr
NzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUluc3RhbmNlLmdl
dCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7CisgICAgb3V0
UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3VyY2VCdWZmZXJz
LmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJuIE9rOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
aW5kZXggNTNkZmYyMmQxOWM4NzBkODU2ZTVmOGY1MmI3ODBhM2YyMWQzZDkwOC4uNzk4MGQ1NGZl
MWQ1Mzg2OGNlMWZjNzcyMjg4N2IzODM2OWNiYTg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3ICs3OSw3IEBA
IGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogCiBjbGFzcyBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2
YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0YXRpYyBSZWY8
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKTsKIAogICAg
IHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggYTJlMDdjZjZmMzIxN2IzYWRmODk1YzkyYjAyMzk0OTQyOTQ1ODVjMS4uOWFiYWQ3
ZmExYzk2NGUxYTNlNWYyMmY1OWZkNDNhZGNjYmQxN2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTQzMCw3ICs0
MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uQVZG
T2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3NldFRyYWNrKiB0
cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDKHRyYWNr
KSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZB
c3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURlc2NyaXB0aW9u
QVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlvbkFWRk9iakMo
KSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZmZXJXYXNDb25z
dW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lkKiwgQ0ZTdAog
ICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAKLVJlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNy
ZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAKIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQq
IGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1hdGlvbiBp
bmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNy
ZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFjazsK
LSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOworICAgICAgICAg
ICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlkZW9UcmFj
ay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChXVEZNb3ZlKHZp
ZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRpYURlc2NyaXB0
aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFj
a3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAgICAgICAgICBT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJh
Y2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNr
ID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKGF1ZGlvVHJh
Y2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRy
YWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLmFw
cGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24g
PSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNl
Z21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmLi41
ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBmaW5hbCA6IHB1
YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNzZXRU
cmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCisgICAgc3Rh
dGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRlKEFWQXNz
ZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAg
IH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRl
eCA4ZDFmMWI0Y2RhYTAwNTMzNzdmOTU0OWNhZmM3MWJiMzM1MzlkNjAzLi40MzJmMGI4Yzg0NjQw
ZmE2YzU0OGVlZjE4Yjc0NTE4NTY0YTdkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03MjQsOSArNzI0
LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29uc3QKICAgICBy
ZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0aWxlR3JpZCgp
LnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpj
cmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlkJiBncmlkKQor
UmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVMYXllcihjb25z
dCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21wYXRpYmxlTGF5
ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1Rp
bGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXllciA9IG1fdGls
ZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29sKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwgdGlsZVJlY3Qu
c2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAg
ICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKaW5kZXgg
NTYyZDhiYjE0NTE4MDk1MTUxZWMxOWRjMjFhODk4YzgzNzhhMTBiYi4uNTc5N2U4NjQ0MDgwYWYx
ZjA2NGQwNmQzYzhhZTY4NzE4OTIwZDE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyArMTM0LDcgQEAg
Y2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAg
IHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7CisgICAgUmVm
PFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3QmLCBUaWxlR3Jp
ZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyByZXR1cm4gKm1f
dGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5ZDkxYWUxYzc4
ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIyYWMzYzBjNDU1
YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAgUmVmUHRyPENB
Q0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAg
IGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGlmICghaG9z
dCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQ
dHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKQogewogICAg
IGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBXS0NBQ0ZWaWV3
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNGVmlld0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0K
aW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4uZmNjMjc2ZGJl
MTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5t
bQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6Y3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGVzY3Jp
cHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlwdG9yLnNpemUs
IFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdl
OjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJlZigpOwotICAg
IEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIuZ2V0KCk7Cisg
ICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZlci5wdHIoKTsK
ICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4KICAgICBQbGF0
Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURl
dmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1ZmZlci0+ZGF0
YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IGUwMjcyNDcxZTNjNTJiYjA3M2UxZTUxNzQxYmNhMWEwODliYWM1MzguLjBmMDVlYjkxOTlk
YmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAgICAgICBDUkVB
VEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RS
RUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4g
dHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNr
SW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQs
IHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRyYWNrKTsKKyAg
ICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNr
cy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3BsYXllci0+
YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAl
cyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdl
YWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBhZCk7CiAgICAg
ICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1fdmlkZW9UcmFj
a3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRWaWRlb1RyYWNr
KCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5
UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0cmVhbXMpOwpA
QCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3Rp
ZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKKyAgICAgICAg
YXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQ
dHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0gdHJhY2stPmlk
KCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2spOwogICAgICAg
ICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsxMDI5LDkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
OjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJh
Y2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CisgICAgICAgIGF1
dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFk
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgfQogCiAg
ICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAgLTEyOTgsNyAr
MTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdl
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVNRU5UOgogICAg
ICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkpIHsKICAgICAg
ICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgYXV0
byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0o
dWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnND
YWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZPKCJnb3QgbWlz
c2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQgcGxheWVyIHdp
dGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAg
d2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsKICAgICAgICAg
ICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNF
RCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNzaW5nUGx1Z2lu
Q2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAgICAgICAgICAg
IG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNhbGxiYWNrLmNv
cHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRhaWwoZ3N0X21p
c3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2FnZSkpOwogICAg
ICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21pc3NpbmdfcGx1
Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgICAgICBt
X3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZy
b21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkp
LCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3BsYXllci0+Y2xp
ZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21VVEY4KGRldGFp
bC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBtaXNzaW5nUGx1
Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgsNyArMTQ0OCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlv
bihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBHc3RNcGVndHNQ
TVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BNVFN0cmVhbSo+
KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAgICAgaWYgKHN0
cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBlID49IDB4ODAp
IHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpudW1iZXIoc3Ry
ZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9IEluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAgICAgICAgICAg
ICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4xMi4yIFNvdXJj
aW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgVVJMIG5l
d1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZlcnRUb0ludGVy
bmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7CisgICAgICAgIGF1
dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAg
ICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAgICAgICAgICAg
IEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMiLCBuZXdVcmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5
YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5YzhhNTUzZmRj
NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAg
ICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdElt
YWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKKyAgICBh
dXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgp
KTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAKaW5kZXggOWZiZTdiZmQ2ZjQ4MjUyMTYxZGY0NzBjZTg1ZWQ0ZjI0
MzBkZWE1MS4uYWYwMWZkZWViNDBkNGNiOTVjZTlmNTJjNjM1MzRjOGI1MjJkNmJjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFw
cGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBs
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZUdTdHJl
YW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRl
KFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOworICAgIGF1
dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6Y3JlYXRlKFdU
Rk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwogCiAgICAgR1NU
X1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMgcHJlc2VudGF0
aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJRCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGlu
ZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUpCiAgICAgICAg
IG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwogICAg
IH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZSgqbWVkaWFT
YW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBsZShtZWRp
YVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcwNjI5ZGY4ZGFi
ZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFmOThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApA
QCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1ZmZlci0+c2xp
Y2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1JRC5yZXNpemUo
MTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgICAgICAg
ICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAgICAgICAgY3Vy
cmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtleUlEID0gYnVm
ZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlmICghcGFyc2Vk
S2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgb2Zmc2V0
ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCksIHBhcnNlZEtl
eUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBib29sIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCA8IGRh
dGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWREYXRhID0gYnVm
ZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAoIXBhcnNlZERh
dGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRhU2l6ZTsKIAog
ICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcApp
bmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4yYzk0ZjRkM2Nj
MWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJveDo6cGFyc2Uo
RGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsg
MTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYzMTdmYzg2MWEy
N2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFmYzk0ZmY5ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDExICs1NCwxMSBA
QCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9wKQogICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0eU9wID0gUGFz
c3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgYXV0byBpZGVu
dGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25z
KCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAgICAgICAgcmVz
dWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlkZW50aXR5T3Ap
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygp
LmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZNb3ZlKGlkZW50
aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1MGI0NWM1MDYx
MWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3ODNkZTVkMWRl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAg
IGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250
ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJl
c2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUp
LmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0aWNfY2FzdDxC
aXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZSht
X3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRmMDdhNThlMmFk
ZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4YmM5Y2UzMWY0
ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAt
ODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6
YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAgIGlmIChibGVu
ZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxl
bmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0aW9uID0gSWRl
bnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHByb2dy
ZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRv
T3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0b09wZXJhdGlv
biA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJv
bU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
b3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbiA6IFdURk1v
dmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCA3MTkwMzJmZTY3ZDE2ODQyZDdjYzc5NmMwMTA5Mjc1ZWQ0NDMy
YmEyLi4xODcwYmIxNjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNPSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIENv
cHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcg
ZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRoZSBQTkcg
ZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5k
YXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnku
bV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXREYXRhKCpwbmdE
YXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0
YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdEZWNvZGVyc1tp
bmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAK
IHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29sIG9ubHlTaXpl
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2MTY2NDU3YzIz
Mjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdiYjJkNDczNzZi
OGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFsaXphdGlvbkJv
eDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAgIHNpemVfdCBv
ZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewotICAgICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7Ci0gICAg
ICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0Jv
eDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7
CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkpICE9IE1vY2tU
cmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgTW9ja1RyYWNr
Qm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFja0JveCB0cmFj
a0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3Ro
KCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAxYmUxYWU1N2JlMWU5MTA5MmZlNjYx
YWUyMzY3MjkwNDEwYWZjYzNkLi45ZmJhYzAwMjA0NzhlOWIzNTBkZTdmZjRkNDdjOWZlMzU5NDYw
ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTA1LDcg
KzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVhdGVOb25EaXNw
bGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIGZpbmFsIDog
cHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAgc3RhdGlj
IFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CiAg
ICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9
CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gZmluYWwgOiBw
dWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94OwogfTsKIAot
UmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkK
QEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVu
ZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVz
dWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkgewotICAg
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9p
bnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90
IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgpLCBt
X2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2NrQm94
OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZm
ZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFN0cmluZyB0
eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIHR5
cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAodHlwZSA9
PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAgTW9ja0luaXRp
YWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLmdldCgp
KTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0gTW9ja0luaXRp
YWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTW9j
a1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJv
eCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tTYW1wbGVC
b3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAgICAgICAgICAg
ZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWlsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYTI2NGZiNWUwN2Q0OTZhNzA5NjIy
YzBiZmNmMTM5ZmY4OTVmMDQ3Zi4uYTNlNjVkYmRiZWNjOTQ0NjlhMWIwZTFiMWY3NzBiMjFkNGJm
Yzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDEsNyArNDEs
NyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBj
cmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFT
b3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAyMjkwZDZiODMw
ZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4MzRjNjllMjIw
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRpb1RyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tUZXh0VHJhY2tQ
cml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tC
b3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkp
OyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IE1v
Y2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0VHJhY2tQcml2
YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1
bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6
IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxN
b2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsgfQorICAgIHN0
YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9ja1RyYWNrQm94
JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGJveCkp
OyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCiAg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggOWQwNTczYWZlM2I0
NjcwOGY2MTI2ODA1NDIxNWEwZWQ2YWIyZGJjZi4uMzY1OTBlYmFmNGIzOWE1YjkzZjFhMTgwNmUx
NmNhZmQ1ZWNlZTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0cjxGb3JtRGF0
YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEgPSBGb3JtRGF0
YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1fYWx3YXlzU3Ry
ZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcgQEAgUmVmUHRy
PEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAppbmRleCA2MjRj
Y2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdhZDUwZDFlZTY2
NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFnZU9ic2VydmVy
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2JzZXJ2ZXI+IGNy
ZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29va2llU3RvcmFn
ZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBDb29raWVTdG9y
YWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2llU3RvcmFnZU9i
c2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4MTcxYzZiMDcw
N2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4M2I3MDM2MjE2
ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAgLTc0LDkgKzc0
LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29raWVTdG9yYWdl
T2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBDb29raWVTdG9y
YWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVyKGNvb2tpZVN0
b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdlT2JzZXJ2ZXIo
Y29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNvb2tpZVN0b3Jh
Z2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNjYjEwMTY1MGM0
ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFwcGVuZEVu
Y29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwK
ICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJdGVtLmZpbGUo
KS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkpIHsKICAgICAg
ICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
IApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3Nh
Z2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAgICAgICAgICBi
b2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFS
WSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwgWyZdIChjb25z
dCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChidWZm
ZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5MzAxNjE4NTU4
YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRhMTNlOTVhMGFm
MDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0ICsxNjksMTQg
QEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50ZWQ8SHlwaGVu
YXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRpY3Rpb25hcnko
KSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4g
Y3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0
ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBoZW5hdGlvbkRp
Y3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhlbmF0aW9uRGlj
dGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlv
bmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRpYyBSZWY8SHlw
aGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBhdGgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlvbmFyeShkaWN0
UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlvbkRpY3Rpb25h
cnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBoZW5EaWN0aW9u
YXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2YmM0OTE4ZDQz
ZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAg
LTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQb3B1cE1lbnVX
aW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1f
cG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6IG1fcG9wdXAo
YWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBvcHVwTWVudSog
U2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBtX3BvcHVwLmdl
dCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJjaFBvcHVwTWVu
dVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2IxOWEzY2QxOTU2
NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uaApAQCAtMzYs
NyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2VhcmNoUG9wdXBN
ZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4gbV9wb3B1cDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFlMjI2ODMxY2Y2
NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlP
Uzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBSZW5kZXJCb3gm
IGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUoUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBwaXhlbHMgPSBl
bVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHls
ZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCBkb2N1bWVu
dC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChM
ZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiArOTE3LDEyIEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0g
cmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6
TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJv
Z3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0
cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7
Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3Jh
ZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUp
KTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9n
cmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRl
ciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5l
clJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVu
dEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdyYWRpZW50PiB1
cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVu
dEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJl
bmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CiAgICAgdXBw
ZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7
CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwg
NTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VO
b25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJHcmFk
aWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkp
OwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dy
ZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAg
ICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9
IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAgICAgICBk
b3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAgICAgUmVmUHRy
PEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
MC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHBy
b2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwogICAg
ICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcsIDI0Nykp
OwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDExOCwgMTY0
LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigx
MTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwg
Q29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAgICBSZWZQdHI8
R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6
TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJv
Z3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CiAgICAg
ICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5NSwgMTA3LCAx
ODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUsIENvbG9y
KDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50KSk7CiAK
ICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3QueCgpOwpAQCAt
MTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0dG9uU3R5bGUo
U3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAvLyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3Mgc3R5
bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWln
aHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBl
bGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGlu
dCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwogICAgIHN0eWxl
LnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7CiAKQEAgLTE3
NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYgKCFpbmZvLmlj
b24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbkltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAoIWljb25JbWFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwg
aW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGljb25JbWFnZS5n
ZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZlMzY5NGMuLjE1
NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNDIz
LDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRzIDw8ICJcbiI7
CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3Nl
ZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKLSAgICAgICAg
UmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVU
cmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7Ci0gICAg
ICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpkdW1teUZpbHRl
cikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKEFmZmlu
ZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0cnVlKTsKKyAg
ICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMoZHVtbXlGaWx0
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRT
Y29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBi
dWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA1
Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1NTk0NmJlZWJk
NmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAK
QEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTdG9yYWdl
PiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9yYWdlQXJlYT4m
JiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3
aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkpKTsKIH0KIAot
U3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3JhZ2VBcmVhPiYm
IHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmPFN0
b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVydHkoJndpbmRv
dykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7CiAgICAgQVNT
RVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAgIG1fc3RvcmFn
ZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5o
CmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEuLjk4M2U4NWE2
MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBTdG9yYWdl
IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdl
PiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+JiYpOwogICAg
IH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAgLTUwLDEyICs1
MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJl
ZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBwb3J0ZWRQcm9w
ZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4g
c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFyZWEmIGFyZWEo
KSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VBcmVhJiBhcmVh
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAg
IFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAgICBTdG9yYWdl
KERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBSZWZQdHI8U3Rv
cmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VBcmVhPiBtX3N0
b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZlMmQ3ZDE4YTEx
OTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQwYzIxMjk0YjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzcsOCAr
MzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFj
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgUmVmUHRy
PFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdl
KSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNl
PiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1YzRmLi41OTM5
YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBh
Z2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3RvcmFnZUFyZWE+
IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxT
dG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdzIFBhZ2UsCiAg
ICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkgaGF2ZSBhIFBh
Z2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFhNzZmLi5kZDdm
OWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0LDEwICs0NCwx
MCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5TdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQ
YWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEo
RG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFyZWEoRG9jdW1l
bnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQYWdlKFBh
Z2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAgICAgU3RvcmFn
ZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFnZU5hbWVzcGFj
ZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJik7CiAKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmln
aW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgPSAwOworICAg
IHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKICAgICBI
YXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
OGNlMWE5ZTc0YTRlMGY1NjU5YzUxYzUyNzQxODgxZTQwODVmNzNmNS4uNGY5ZjBkNGQ0Y2VhMzI2
MWQ5NzI3OTJmNTYxODU0NTc3YTEzY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApA
QCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBTVkdFbGVt
ZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAgIGlmICghYXR0
cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShTVkdBdHRyaWJ1
dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRl
KFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1By
b3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsKICAgICBzdHls
ZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICBhdXRv
IGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJjMjIxNjBjNDJl
ZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi4xNjdhNTQ3YWM2ZDJjNDRhNjk5N2E3MDE1MTYyZDdh
NzU0Mzc5OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAg
LTExMiwxMiArMTEyLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgaWYgKCFpbnB1
dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2RlKCkpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsKICAgICBGaWx0
ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAg
ICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVmZmVjdHMuYXBw
ZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAgICAKLSAgICBy
ZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDUxNWQz
MmZmYmNkN2U1M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjM2ZTY2OThiMmM0Yjc1ZDJjYWI2
YTlkMjM4NGZkMGM4NTg3NjNmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0
ZXJCdWlsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0
ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6
Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBlZmZlY3QtPmlu
cHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0
dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAK
aW5kZXggNTdmYWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4uMDIzNzk5NTJi
ZGNiNjE2YThmMDgzZmI0MTM1N2EzMTU2MGFjODQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04OSw5ICs4OSw5
IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9IGRvd25jYXN0
PFNWR0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwogICAgIH0KICAg
ICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVy
OjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgYXV0byBlZmZl
Y3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAg
ICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggYTEwZTNh
NzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uYTdhNzY4Mjk2ZDM0ZTQyN2U1MDA5
ZGFlMmE3OGM0OTljNmYwYjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRl
KGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CisgICAgYXV0
byBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEo
KSwgazIoKSwgazMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVj
dHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5yZXNlcnZlQ2Fw
YWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAgIGlucHV0RWZm
ZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4g
V1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3ZWNjZGQwNzc3
NDlkMjcyNTkyM2QyYmZkMDQuLmQ5ZGIwYWNlYjdmM2UwNDQyODUyNjczZjdiODJhZGMxOTAwMzQ0
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwCkBAIC0xODksOSArMTg5LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKIAog
ICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JG
aWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwogCi0g
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0
ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIGtlcm5l
bFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRTb3VyY2Up
KTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7CiAgICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0Owor
ICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1ZmM3MDFkZjYw
N2NmMGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMmI0MmYzNDQwODI4OWVmOWIwOTAzYThhNmJh
NWFjMzI0ZWMzNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNywxMiArMTI3LDEyIEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3BsYWNlbWVu
dE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5lbFNlbGVjdG9y
KCksIHNjYWxlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0
ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgp
KTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1
dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIp
OyAgICAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApp
bmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi42OThhNDg1NGMx
YjE1NGUyOTM1OGE5YjJiNDliM2Y2ZWUyNjhmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0
ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBj
b2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6OmNyZWF0ZShm
aWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBkeSgpLCBjb2xv
ciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsK
LSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5k
ZXggOTMzMTg3ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uOTU0NzJkYjcxODYz
OTc1MDE3MDc3YTY5MzE5NjUzNDVjNDEyZjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw5ICsxMjQsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0ZERldmlh
dGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlh
dGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRvIGVmZmVjdCA9
IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlh
dGlvblkoKSwgZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQo
aW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCmluZGV4IDUw
MmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmVmYTc3ZGUyYzFiYmQ1ODYy
NWU1NmY4NGFjM2U1M2JmNGQwZjkzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1lbnQ+IFNWR0ZF
TWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogCiBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZl
Y3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIG1l
cmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYgbWVy
Z2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PigqdGhpcykpIHsK
QEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBpZiAobWVyZ2VJ
bnB1dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBl
ZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGZjYmM2M2I2MmU2ZTEw
NmViYjVkNTYyMDllM2Y1Mjk5ZDhiMGI2ZmMuLjdhNGNkMDgyZDU0MTU5YWFmNTI1MDAyZGE5NDYw
ZWJhMWQ5ZWYxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5jcHAKQEAgLTE0NSw5ICsxNDUsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZAogICAg
IGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1vcnBob2xvZ3k6OmNyZWF0
ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAgIGF1dG8gZWZm
ZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigpLCB4UmFkaXVz
LCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwot
ICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmNwcAppbmRleCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3MDQxYWFkYmQwMjIyLi44ODUy
NzExYTVhNmE2ZDQ0MzMzYzRlNzFlNmUzYjIxM2EwYTU3ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTIsOSArOTIsOSBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIs
IGR4KCksIGR5KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShmaWx0ZXIs
IGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7
Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAKaW5kZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2QwY2ZlNy4uODFl
ZjQ1NzY4Njk3MTdhNjllOWRlYjZlNjQ5NWRhNTExNzRjYzJjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDkg
KzE5OCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29sb3IgY29sb3Ig
PSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+
c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4cG9uZW50KCks
IGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRT
b3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFy
RXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlu
cHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggM2YzODc5
ZDdlNjZhOGMxZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uZTNjZjVhZGNmNGY2NDk3ZDczNmJj
ZGI3YjZjMmViZWFmMWYwZThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcApAQCAtODEsOSArODEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaQogICAgIGlmICgh
aW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBlZmZlY3QgPSBG
RVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3Qp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dDT2JzZXJ2YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmluZGV4IDg2ZDk1
OGY1NzYwNTFiODA3ZTA1MWMxNWFlYTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRmYjgwNDc1ZTNk
ZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
R0NPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlv
bi5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NPYnNl
cnZhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+IHsKIHB1Ymxp
YzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRyPEdDT2JzZXJ2
YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPiBzdGF0aWMgUmVmPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NPYnNl
cnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAKICAgICBib29s
IHdhc0NvbGxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNjZGM2YTRlY2Y4
ZjQzNWZkZjJjM2I4NDVmLi45OTAxN2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2YjIwMTdjOTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
UmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3Vs
dC5jb3B5UmVmKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291cmNlTUlNRVR5
cGUpOwogICAgIGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/
IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwgVGV4dFJlc291
cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNldERlY29k
ZXIoV1RGTW92ZShkZWNvZGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZjYzg3NWUwZjQ5
MGJhYTYwODg1Zi4uYjQyNTBhMDJjZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgxZWY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJh
Z21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlciA9IFhN
TERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KTsKKyAgICBhdXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVh
dGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICBi
b29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNodW5rKTsKICAg
ICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0VuZCgpIGltcGxl
bWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFuZCBjYW4gY2F1
c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRldGFjaCgpOyAv
LyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNoZWQgYmVmb3Jl
IGRlc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMwNGQ3OGQwYmE1
YzliOWNlZGI3Zi4uMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0
aWMgSVBDOjpDb25uZWN0aW9uKiBjdXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRyPFdlYlByb2Nl
c3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
MzIxYTA4Mzg2OTM4NmM0ZmJmNWYyOGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdhODk3OWUzMzE3
ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYyY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVm
PFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KTsKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5t
bQppbmRleCBiOWZjODk1MGZhMzNjYTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3Li5jNzY0OTZi
NzMxMjQ2N2MzNjYwNjJmYWVlYzQ3NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4ICsxMDMsOCBA
QCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRl
CiAKIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSBi
b2R5OihpZCltZXNzYWdlQm9keQogewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNPYmplY3RHcmFw
aD4gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2Fn
ZUJvZHkpOwotICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdr
TWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2Jq
Q09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nvbm5lY3Rpb24u
cG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwogfQogCiAtIChX
ZWJLaXQ6OldlYkNvbm5lY3Rpb24mKV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZDFmMDI1NDhmMzdkZGEzMDExNzc3
MDgzNDBlZjJmZTIxODc4MWVmLi41ZWRkNWExZmVlZmYyMzVmY2Y0YTczY2M0MzEwNWIwN2IxZTYw
OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTExMzQsNyArMTEzNCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0aENvbmZpZ3Vy
YXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VI
YW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
ICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhh
bmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRtYXAtPm1ha2VD
R0ltYWdlKCkgOiBudWxscHRyOwogICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFnZSA9
IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKSBz
aXplOk5TTWFrZVNpemUoc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAgICAgICAgIGhh
bmRsZXIobnNJbWFnZS5nZXQoKSwgbmlsKTsKQEAgLTIwNzcsOCArMjA3Nyw4IEBAIC0gKFJlZlB0
cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBIQVZFKElPU1VS
RkFDRV9BQ0NFTEVSQVRPUikKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBjb21wcmVz
c2VkRm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsKICAgICBpZiAo
V2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoc25h
cHNob3RGb3JtYXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6
OlZpZXdTbmFwc2hvdD4gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0
ZShudWxscHRyKTsKLSAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQo
V1RGTW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMiwgW3Zp
ZXdTbmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gY29udmVydGVk
U3VyZmFjZSkgeworICAgICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6Vmlld1NuYXBz
aG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Y29udmVy
dFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZ
VVY0MjIsIFt2aWV3U25hcHNob3QgPSB2aWV3U25hcHNob3QuY29weVJlZigpXShzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAgICAgICAgICAg
ICBpZiAoY29udmVydGVkU3VyZmFjZSkKICAgICAgICAgICAgICAgICB2aWV3U25hcHNob3QtPnNl
dFN1cmZhY2UoV1RGTW92ZShjb252ZXJ0ZWRTdXJmYWNlKSk7CiAgICAgICAgIH0pOwpAQCAtNTky
Miw3ICs1OTIyLDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nv
b3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4g
Yml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhhbmRsZSwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgYXV0byBi
aXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgICAgIGlmICgh
Yml0bWFwKSB7CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEz
N2FhY2M5NWIyNWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhkNWNmZmY5Y2U1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBX
ZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVz
dGFtcCwgZG91YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQ
b3NpdGlvbiB7IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1ZGUsIGxvbmdp
dHVkZSwgYWNjdXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsK
ICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAgbV9nZW9sb2Nh
dGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOwor
ICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92
ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRD
aGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlcjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBtZXNzYWdlICov
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEzNzU4NjI0MTMz
Li5iY2U4MDU4ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxzX2Nl
cnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBnX3JldHVy
bl9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUluZm8+IHdlYkNl
cnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+
KDApKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0cmluZzo6ZnJv
bVVURjgoaG9zdCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNh
dGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmljYXRlLCBzdGF0
aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5w
cm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KHdlYkNlcnRp
ZmljYXRlSW5mby5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAKIC8qKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggODI4YmZiMjI1YTdm
ZTc4MDgzMjE2YjAyNjFmZDhmMTFiYjIzYjBiMi4uYWJkNzc5ZmU3NTYxYTVmYjg5YmZlNWE1MGU1
MTA5MmEzNTNjYmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8u
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBPcHRpb25h
bDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQ
TkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
Y29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQppbmRleCAz
N2IwY2I3YTgzMDQzZGYwMzEzMTZjNjQ4M2MyMDkzM2IzMDc2NmJkLi5kMzQ3NzE4YjJmZDg3OTYw
MmNiMzg1NzQ4NTAwZmQyZjk2MzNlZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGFI
YW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGlt
YWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGM4ODM2NDJiNWRjNTA2YjYyNzY1MTBi
NzM0ODVmY2Q0NjYyZWY0ODEuLjVmZDVhZjQ5YjRjZDU3YWVhZmYxNjg2Y2FhY2U0YWU1MTMyZmI5
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyAr
NDgsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbykKIHsKICAgICBBU1NFUlQobV9zaXplID09IHVwZGF0ZUluZm8udmll
d1NpemUpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKKyAgICBhdXRvIGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsK
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZTMwYjAzZjVmNGM0Y2Rj
OGIyN2RjNmFjNmM1NTVhYjg5YzlkYjhiNy4uMjg1ZDY2Yjc4NGMzYjI1ODI1NGM1ZTM2YzM5YmRk
MzQ0MTRkMzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQpAQCAtNzQyLDkgKzc0Miw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHBh
CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBO
U0Vycm9yICpvcmlnaW5hbEVycm9yKQogewotICAgIFJlZlB0cjxBUEk6OkZyYW1lSGFuZGxlPiBm
cmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1l
SUQoKSk7CisgICAgYXV0byBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3
ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7CiAKLSAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0g
YWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0
V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKCpmcmFtZUhhbmRsZSkgdXJs
U3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdF
cnJvcktleV1dKTsKKyAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
VmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKGZyYW1lSGFuZGxlLmdldCgpKSB1cmxTdHJpbmc6b3Jp
Z2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0p
OwogCiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOnJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpLCBfV0tS
ZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5LCBuaWxdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaApp
bmRleCA5ZDc3NDEwYzA5YzFiNzExNWE0MDQxZDI5N2JiNDU2ODM4ZWFlOTYwLi42NGEzNWY3ZTg3
OWRiMDNkYzBiZjg3NzIyMTQ0YzIyYmZmM2Q5ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaApA
QCAtMTcxLDcgKzE3MSw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCBmaW5h
bDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDCiAKIGNsYXNzIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5Jik7CisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+
IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tCmluZGV4IDRjOGZjYmY4ZWY3MmUwNTFlOGEyMjkxYjVmNGYxNmZmZGMwMjcwNjcuLjg2Nzdh
MDQxYzcwZDExYjk3Njk4YzQ3ZWMyYjc5YWRmMzFkOTAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0KQEAgLTI5Miw5ICsyOTIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDo6cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpCiAKICNwcmFnbWEg
bWFyayAtIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQ
YWdlUHJveHkmIHBhZ2UpCitSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkocGFnZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwYWdl
KSk7CiB9CiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
YTkyOTlmMWI3NDY5YjAzYWQyMzQ2MjRiY2QwYjM1NmJjOTI4YjY5Mi4uMjk3Zjk2OGIzNTI5ZTBj
MzU1Y2Q0ZGIxYTg5OWMyMGU4Y2M5MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTEx
OSw3ICsxMTksNyBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQgZmluYWwKIAog
Y2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+
IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmKTsKKyAg
ICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQ
cm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1YWwgflZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggYTQzOGZlNzFhODZkMzI3Mjg1YWVmNTIxMmZmMzU2MTI2
NDI1NmQxNi4uNGNmMzBiZjMzMWU3OTQyMWYyMzljY2E1OTYzMTEzOTJmOGY1YTgzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzE0LDkgKzMxNCw5IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiAKICNwcmFnbWEgbWFy
ayAtIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5KQorUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBwbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
KSk7CiB9CiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3MTBk
ZjE5YzQyNjU4ZjZmNTljN2MxODA3NzcxYWYyMmUyMjNkYzIuLjFkYWQ3MDRlYzk5NmIxZWY5ZDRj
MWE5OWIxNzBiZjc2MjNkMzY4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNTksOCArMTU5LDgg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1h
cChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKLSAg
ICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0
QnVmZmVyRm9yVHlwZShidWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZm
ZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3Qm
IG51bWJlck9mRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IGU2Yzg3MmU0ZmFkZTZjZmM0MmJjYTMzM2I3NDdiODIxY2Y1NmUwNDcuLjlk
NmM1Mzk0NDBjZGJjMTBmNDM2YzE2YTMyY2U0NzdiNjI1NzdkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00Mzg3LDEwICs0Mzg3LDEwIEBA
IFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFZp
ZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZh
Y2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUoV1RGTW92ZShz
dXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwogCi0gICAgcmV0dXJu
IHNuYXBzaG90OworICAgIHJldHVybiBXVEZNb3ZlKHNuYXBzaG90KTsKIH0KIAogdm9pZCBXZWJW
aWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5ZDgwZGNlZS4uODZkYzA5
YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApAQCAtNDYs
MTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFByb3h5TWFwKCkKIAogRG93
bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9hZFByb3h5
ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1
ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCBk
b3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9hZFByb3h5Ojpj
cmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAgIG1fZG93bmxv
YWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuY29weVJl
ZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHktPmRvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCBkb3dubG9hZFBy
b3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOworICAgIHJldHVy
biBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHlNYXA6OmRvd25s
b2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUwNDMzOWU3ODQ5ZjRkZDM0
NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05NiwxMSAr
OTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0
YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRp
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25J
RCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFs
Tm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBs
YW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
ICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAg
ICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlm
aWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBh
aXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pKTsK
LSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0aW9uKTsKKyAgICBtX25v
dGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFs
Tm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBtX3Byb3ZpZGVy
LT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCiB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNGIwMTI1MmViYjhmZTkyN2M1YWFmNGM1NzBkYThlNDU1ZjhlY2I2ZC4uMTBk
MmRhZDliZmIzNWY4ZWQyODY0MDJmNDNlZTA5ZjcxNjAwZTcwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjU0LDEwICszNjU0LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogCiAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsKICAgICAKLSAg
ICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUo
KnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVh
dGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2Vz
cyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlELCAqc3ViRnJh
bWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIHN1YkZyYW1lLmdldCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFt
ZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZDkzYjA4NWY1MDMxMTU3
MjgzMzlmYWM5OWI5ZDM4NGJhOTFkOTFhLi40NTdkNDIxMWVlZjk3MTkxNGRiM2IwYWMwNThkYjBi
ZGJjMzY1ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNz
KHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6OgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiByZXF1ZXN0ID0g
U3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0ID0gU3RhdGlzdGljc1Jl
cXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNzUmVxdWVz
dFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3RpY3MocmVx
dWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhyZXF1ZXN0LmdldCgpKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0
YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdl
YkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8v
IEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAwNTk+OiBNYWtl
IGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3b3JrLgogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlz
dGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29y
a2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgTmV0
d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIHVuYXZhaWxh
YmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBtX3N0YXRpc3RpY3NSZXF1
ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBy
ZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3RhdGlzdGljc1JlcXVlc3Rz
LnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHJlcXVl
c3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApp
bmRleCA1YjRkYzU4YzNlOWNhOGRkNTljOGVmOTRiMWY2NTZmNDUyODE5MDUxLi4xYTE2MWFjYzQy
MWJkM2Q5ZWE2ZjE5ODE5ZWY1MDJmMWQ5YjQ0MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFzcyBXZWJQcm9jZXNzUG9v
bCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nl
c3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0
YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6
SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZvaWQgcmVxdWVzdFdlYkNv
bnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAgdm9pZCByZXF1ZXN0TmV0
d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAgICB2b2lkIHJlcXVlc3RX
ZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOworICAgIHZvaWQgcmVxdWVz
dE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CiAKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dzdHJlYW1l
ci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0
cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUzZmI2NWMyMzBkYmQ4NGRh
ZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgwNDk4YWZlMTJhMWY5ZWMz
MWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0cmVhbWVyL1dl
YlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0
cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7Ci0gICAgaWYgKHBhZ2VD
bGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFpbHMsIGRlc2Ny
aXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvckluc3RhbGxNaXNz
aW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4
IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMuLjkyZWFkMDQ1ZThiOGZj
MmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTMs
MTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1fd2ViVmll
dyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0
byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQy
LiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxv
dyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRz
IHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldExvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgUmVmUHRyPFdlYlBh
Z2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdy
b3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVs
bHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCgm
aW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKG51bGxwdHIpKSk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAg
ICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNv
bmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJW
aWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3llZCksIHRoaXMp
OwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV93ZWJWaWV3KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IGI2NGUzMzU5
MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0MjM0MTEyZTg1NzliZDg2
MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAg
ICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7
CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5j
ZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBk
ZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdp
dGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAjZW5kaWYKICAg
ICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7CiAgICAgfSk7Ci0gICAg
UmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5z
cGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKSk7CisgICAg
YXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJ
ZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAgIGF1dG8gcGFnZUNvbmZp
Z3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rp
b25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZl
cmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VH
cm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX29iamVjdF9h
ZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2lu
c3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3RGVzdHJveWVk
KSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2JhOTg1N2EwYTYxYWQ0OGQ2
YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUxNzNjMmZiNGIxM2IwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZv
clVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIFVSTCByZXF1ZXN0
RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAgICAgICAgICAgIFJldGFp
blB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4uZ2V0KCkpKTsKLSAgICAg
ICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVn
YXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZv
clVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBhdXRvIGNoZWNrZXIg
PSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1aURlbGVnYXRl
LCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVS
TDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBXS1dlYlZpZXcgKnZpZXdG
cm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAgICAgIFt1aURlbGVnYXRl
IF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9u
Rm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVjaXNpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggNTI5ZjhlNjc4
N2NkNTJhZGM3ZmZiNTY3MWRhOTY5YTZmNDY0ZDUxMS4uNmM1Y2I5Y2NmYjJiZDJmM2NiYmZlNTlk
ZjdiNTEwOGM5YWU3ZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVh
YmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7Ci0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VC
dWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvckltYWdlKGltYWdl
LmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBhcmNo
aXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9pbXBsLT5zZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVy
bCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5hbWUpOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmlu
ZGV4IDkxY2ZmNjE5YmI5YWY5ZTNhYzU0YzNiMDU2NTJlMmIzMGVlM2RiNjkuLjVhZmViODA5ZjIw
NDgwZmRkZDc2MjFlMzI1MDk0NGRiN2RlZTZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRl
bmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIFJlZlB0cjxX
ZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CiAj
aWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5z
cGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBz
ZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVl
KTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZlcmVuY2VzLT5z
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNl
dEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlm
aWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBh
Z2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQYWdlKGluc3Bl
Y3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bv
b2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAKICAgICBXS1Bh
Z2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsKICAgICAgICAgeyAwLCB0
aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUwOTAxNzkwMGY0Nzg5NDQ5
ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVkM2I1NDI0YzUzMDZjODQ2
MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUwLDggKzUwLDggQEAgLSAo
aWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAogLSAoaWQpaW5pdFdpdGhE
b2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6dG9XZWJDb3Jl
RG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRoSW1wbDpyYW5n
ZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktp
dDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxmID0gW3NlbGYgX2luaXRX
aXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmls
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRl
eCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZmLi44YzI5NWJhZWJmYmEy
ZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50UmVjdC5zaXpl
KCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgeyB9
KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMjFh
MzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUxMjMwMmIyODJlNDFlZDFi
MjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmco
KSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBl
PEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXpl
KCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2NDg5ZDY2M2I4ZDhlLi42
ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3OCwxMCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdl
KiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0
ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAgICAgV0tU
eXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVy
RWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKG1v
ZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0
VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1
c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggYzZhNTA2
OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEyZDljNjMxMmQyYzBlYTA2
YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNzUxLDcg
Kzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hv
dCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVnaW5TaXplOwogICAgIGJh
Y2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3RvcigpKTsKIAotICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwogICAgIGF1dG8g
Y29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBv
ZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZTg4ODQ1
NzQwYTg4YzY2YjMxZGY3ZTJlNGNkNTI2OGFjYTFjNTEyYy4uZWJkZmE0NTI3MWRlZDY1MjkxNTE2
YTNiMjRiNDgwOGQ3NjkxZjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBQREZQbHVn
aW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJl
c3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpt
X3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcqKWtDRkhUVFBW
ZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBz
eW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBT
dHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1dG8gcmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEu
Z2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmco
KSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBz
aXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxlRmFjdG9yKTsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0p
OwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3RvciwgLWNvbnRl
bnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2b2lkIFBERlBsdWdpbjo6
d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkg
Kml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGFpblRleHRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRT
dHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVtY3B5KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0NzlhZmMyOWFkZjRhYzg1MmJi
M2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2QwZDNhNmY0NjdlOTQ0ZDJm
MDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC04NCw4ICs4
NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJUEM6OkNvbm5lY3Rpb246
OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBw
bHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nl
c3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAtOTQsNyArOTQsNyBAQCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLnNl
dChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsK
KyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7CiB9CiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXgg
ODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4uOTcwZWExZmU3Y2E5NjQ1
ZGQ5Yzc3N2NjZDVlMzYyYTY2ZGVhZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDggKzI0Nyw3IEBAIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAgICAgaWYgKHNuYXBzaG90
U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKLSAgICByZXR1cm4gc25hcHNob3RCdWZmZXI7Cisg
ICAgcmV0dXJuIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVIYW5kbGUpOwog
fQogCiBib29sIFBsdWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTU0YzE4Yzk1YzUzZGYy
NDNkMThhYjc4NmJiMmZmNzY3MzYyNTMwNC4uNTBiMzU1MjIxM2RhYjQ4ZTg3NmIxZjc5ZThkNDI5
OGZiY2M2MGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTExNzQsOCArMTE3NCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9y
bVVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICB9CiAKICAgICAvLyBUaGlzIHJl
cXVlc3QgaXMgdG8gbG9hZCBhIFVSTCBhbmQgY3JlYXRlIGEgc3RyZWFtLgotICAgIFJlZlB0cjxT
dHJlYW0+IHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3Qt
PnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgIGFkZFN0cmVhbShzdHJlYW0u
Z2V0KCkpOworICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpjcmVhdGUodGhp
cywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7CisgICAgYWRkU3Ry
ZWFtKHN0cmVhbS5wdHIoKSk7CiAgICAgc3RyZWFtLT5zdGFydCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCmluZGV4IDAyNjRkNzRiZGEwMzIzZjhlZDRlOTA0ZTMxNTllZDJlNjQ3Y2EzZmUu
LmQ1YWI2NmI0ZTkzNDE5OGFmNmM2Yjc1ZmIxNzVhYWZmZTcxMTZmYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC03MTgsOCArNzE4LDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAg
ICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7CiAgICAgYXV0
byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEpOwogICAgIHVp
bnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVy
KCkpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBuZXdRdW90YSA9IG1fcGFnZS5pbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBzZWN1cml0eU9y
aWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRR
dW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxz
LmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwor
ICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCBkYXRhYmFzZU5hbWUs
IGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2Us
IGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAg
IGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCkBAIC03MzcsOCArNzM3LDggQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKIAogdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewotICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOwotICAgIGlmIChtX3BhZ2Uu
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCB0b3RhbEJ5dGVzTmVlZGVkKSkKKyAg
ICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgaWYgKG1fcGFnZS5pbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1fcGFnZSwgc2Vj
dXJpdHlPcmlnaW4ucHRyKCksIHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvJiBjYWNoZVN0b3JhZ2UgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+YXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGNhMDhm
NDg4ZTk3NWJlMzY2MTRiYmIzY2M1ZDMzOWI4MTA0NzBjY2EuLmY2NjgyZDc5ZjA1ZmViZTJmNDYz
NjEzODg1MWNlZjFhNTNhOWVmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzY3LDEwICs3NjcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKIAogICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNy
ZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOworICAgIGF1dG8gYWN0
aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFtZSwgbmF2
aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNs
aWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
d2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJE
YXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
d2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJE
YXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewog
ICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWI2ZjRlNGIyZGM5ZGFkNzhmZTBl
NjhlM2RhODIxMmFmODZhMjQzNi4uNzQyZTM4NGIxNzkyZTAzNzA3MmY2Mjc2YmNhYmYyZDViNzQ5
MGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdAogICAgICAgICBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHkocGF0aG5hbWVz
LCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAgQVNTRVJUKHBhdGhuYW1l
cy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7
IGkrKykgewotICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zSGFuZGxl
QXJyYXlbaV0pKSkKKyAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtpXSkpKQogICAg
ICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHkoKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRy
YWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA4NzE2MTIwZjcxZGNmOWFjMjNkOGQxM2Vi
ZGY5M2M2N2RmMzNkODk2Li4xODY3Yzk4NDkwNWM5MjAwZTAyMmRlMzZiOGQwNjVlZmZmMjQ0ZjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJs
ZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRT
aXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFn
ZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4
dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmlu
ZGV4IGZmZWUyYTY0NmNjNmU4OWYyNDMzZjNhNDdmZTdmNjQ3MzQ3YTgwMmUuLmY4N2Q5MzQ0M2Y3
YzU4YTgyYzQzNjNmMDM0YTAwNjAxM2I2YWExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgICAg
ICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQogCi0gICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoZWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGVsZW1lbnQpOwogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9u
c2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYTM4Y2QyYmY2Mzc5
NGM4ZTlmMWQyMTJhM2U3OGIzZThjNGVmOGM2Yi4uOGNlNTY1ZmI5NTZmMzZjYjc1MmVmODExYTEy
NDVlYjU1ZGRjZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIERpY3Rpb25h
cnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBm
cmFtZSwgUmFuZ2UmIHJhCiAgICAgaWYgKHByZXNlbnRhdGlvblRyYW5zaXRpb24gPT0gVGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSkKICAgICAg
ICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90
V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKICAgICAKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4g
dGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgaW5k
aWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisgICAgYXV0byB0ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBpbmRpY2F0b3JP
cHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3Ip
IHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2Up
OwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDc4MjRl
NWNmNzFiNDdkYjA5ZWVhMzVhNzY5ZmE3NjQxYTcyZDdmMzIuLjZhODZiMDAyYjg2ZjQyYTAxY2Y0
OGU1ZGY2OTAwYWNmNThmODMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQg
RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgSW50
U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJp
dG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJpdG1hcFNp
emUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAppbmRleCA5ZmVmZGJjYTEyY2Y1OWU2ZTMyNWNjOWMyNGViZTRmMzA5MjlkMWYzLi42
M2NjMjgzOTJlNDgwZGZiZDU0MzJkNjkwMDBmYTM4ZjIyZGU2NjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6aGlkZUZpbmRVSSgpCiAKIGJvb2wgRmlu
ZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJv
b2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRBbmltYXRlKQogewotICAgIFJlZlB0cjxU
ZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0
aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdp
bklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uOjpOb25lKTsKKyAgICBhdXRvIGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNy
ZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRp
b25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFuaW1hdGUgPyBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4dEluZGljYXRv
clByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOwogICAgIGlmICghaW5kaWNhdG9yKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2ZTVkNTMxNTkxYzQzZGVmYjAzMTM2NzM0ODg3
ODg5N2NhM2Q0MzllLi4xMDg2YzZmZGZjMjEwYThlMzQ3NjA0NjRkNmJjNDE2MzkyOTU5YzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMoKQogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5n
U3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgp
OwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVy
LCBwYWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0
b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAg
ICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1vbm90b25pY1Rp
bWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjQwYjg0YjQ3YTgyNjc4ODFkY2Jl
Mjc3ZmE1YzFiZjVjYjQyMDBlMy4uMDA3NDliNDc3YTI0Y2U4Y2NjODI1MDFkOTRlMDhiNjBlZTFh
NjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViRnJhbWU6OmRvY3VtZW50TG9hZGVyRGV0YWNo
ZWQodWludDY0X3QgbmF2aWdhdGlvbklEKQogI2lmIFBMQVRGT1JNKENPQ09BKQogUmV0YWluUHRy
PENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24g
Y2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4gYm9vbCB7Cisg
ICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJhbWUpIC0+IGJv
b2wgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTg3
YzUyOWU0NDQ0MTMyN2EwMGE5OGMwMjU0ZjExZmFjMmE0NmNkNi4uZDU4MmJlODIyMTc4MjcyYWQx
MmU5MDc2NWIxMjE5ODhmZWIyMzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MzIsMTAgKzE0MzIsMTAgQEAgdm9pZCBXZWJQYWdlOjpu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50
UG9pbnQgZG8KICAgICBjb25zdCBpbnQgc2luZ2xlQ2xpY2sgPSAxOwogICAgIC8vIEZJWE1FOiBT
ZXQgbW9kaWZpZXIga2V5cy4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgc2V0
IElzU2ltdWxhdGVkOjpZZXMuCi0gICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVz
LAorICAgIGF1dG8gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpZ
ZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygp
LCBudWxscHRyLCBzaW5nbGVDbGljaywgc2NyZWVuUG9pbnQsIGRvY3VtZW50UG9pbnQsIHsgfSwg
eyB9LCAwLCAwLCBudWxscHRyLCAwLCBXZWJDb3JlOjpOb1RhcCwgbnVsbHB0cik7CiAKLSAgICBt
YWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50LT5jb21wbGV0
ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6
Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6Ok1heWJlU2Vu
ZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVEb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5wdHIoKSwgTG9ja0hp
c3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJlZmVycmVyOjpN
YXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKQEAgLTM3MDUsNyArMzcwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAKICAg
ICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCk7IGkrKykg
ewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFy
cmF5W2ldKSkpCisgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5W2ldKSkpCiAg
ICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmFwcGVu
ZChleHRlbnNpb24pOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCAwYzg0ZjY0
YzhjNjNlZDFiYmQ2MGI3M2YzYjU2OGE0YTI3OGMxYWRmLi5mYmE1YjA1NmE0YzlmYWQwMTcxYzE4
ODNmMDBjZWJmNWEzNTdmNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC05NCw3ICs5NCw3IEBA
IGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVk
RnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgICAgIG1faXNTaG93aW5nRmluZEluZGljYXRv
ciA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNh
dG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoc2VsZWN0ZWRG
cmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdpbiwgdG90YWxW
ZXJ0aWNhbE1hcmdpbikpOworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6
OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIGZpbmRUZXh0SW5kaWNh
dG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZs
b2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGljYWxNYXJnaW4pKTsKICAg
ICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA5
ZjkxNzMxZjQzYmZiMTEyMjQ3NTdlZmIxMDE3ZTQ2MjVjMTQ4ZjdmLi5iMDcyYzViODc2YzJmOWM0
MTBmODE1MTViMWZjMDA5ZTE5MTRkOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTgyMCwxNCArMTgyMCwxNCBAQCB2
b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBj
b25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucHJldmlv
dXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBvc2l0aW9uID0gc3Rh
cnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
c3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50
KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKIAot
ICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpICE9IG9s
ZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5wdHIo
KSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBzZWxlY3Rpb24gaGFzIGNoYW5nZWQgdW50aWwg
d2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRoZSBuZXcgdGV4dC4KICAgICBmcmFtZS5lZGl0b3IoKS5z
ZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShyYW5nZS5wdHIoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRU
ZXh0KG5ld1RleHQsIDApOwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNo
YW5nZXMoZmFsc2UpOwogfQpAQCAtMjEzNiwxNyArMjEzNiwxNSBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qm
IHJlcXVlcwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua1JhbmdlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IG1hcmdpbkluUG9pbnRzID0gNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1Jh
bmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJnaW5JblBvaW50
cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dEluZGljYXRv
cj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbGlua1Jh
bmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0SW5kaWNhdG9y
T3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91
bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVu
dEZvckNvbXBsZXhSYW5nZXMgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBUZXh0
SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdpbklu
UG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVG
YWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRl
eHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShsaW5rUmFuZ2UuZ2V0KCksIFRleHRJbmRpY2F0
b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4
dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5kaWNh
dG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdl
cyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1
ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlv
blRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxl
RmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5saW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRleHRJbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5saW5rSW5k
aWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAK
ICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0yMTU2LDcgKzIxNTQsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kYXRhRGV0ZWN0
b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9ySWRlbnRpZmllcigqZWxl
bWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3RvclJlc3VsdHMg
PSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1bHRzKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVjdGlvbjo6cmVxdWlyZXNFeHRlbmRl
ZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0
ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5r
UmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtS
YW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3Ro
LCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QWZ0ZXIgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0
aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSwgVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIxODEsNyArMjE3OSw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVl
ZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5j
Z0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29u
ZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgp
LCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkNThkZDljNGM3YWFlMjc5MjM5MTU0ODgzZDgyZTNk
ZjM4MTIxOWVlLi42MjBmZmE3ZjE1ZGM4YzI0OTdhNzNjYjliZDIwYjBiYzdkNTY1ZjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04NTAsNyArODUwLDcg
QEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOwog
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb25DQSA9
IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3JtIik7Ci0gICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb24gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOwor
ICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6
Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVyVmlld0FuaW1h
dGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHNo
YWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQK
ICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2NhbGUs
IG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgi
dHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5pbWF0aW9uKTsKKyAgICB6b29tTGF5
ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdB
bmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUoZnJhbWVWaWV3
LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggODA1ZmU5ZTRjYmI1ZDcyNmZm
MjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uMjYzOTk0NTYyOGFhZmExNDJkNzU4YmI1OGI2OTU0Zjcy
OGQ3YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMjQgKzQwLDI0IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1w
bChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFn
ZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQog
Ci1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCwg
aWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsLCBp
ZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdl
VHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2Nh
bCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFu
c2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlw
ZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5
dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChX
ZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiAgICAgbV9zdG9y
YWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBl
OjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVwaGVtZXJhbExvY2FsU3RvcmFnZUFy
ZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUsMTYgQEAgY2xhc3MgU3RvcmFnZU5h
bWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZpbmFsIDogcHVibGljIFN0b3JhZ2VB
cmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwogfTsKIAotUmVmUHRy
PFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdl
QXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQorUmVmPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGF1dG8mIHNs
b3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFkZChzZWN1cml0eU9yaWdpbiwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkKICAgICAgICAgc2xvdCA9IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYTo6Y3JlYXRlKHNlY3VyaXR5
T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1cm4gc2xvdC5nZXQoKTsKKyAgICBB
U1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVz
cGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBuZXdQYWdlKQog
ewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKQEAgLTIwMiwxMiArMjAyLDEy
IEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0
ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05hbWVzcGFjZSA9
IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBtX3N0b3Jh
Z2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMpKTsK
KyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4u
Z2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX2VwaGVt
ZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdOYW1lc3BhY2UtPm1fZXBoZW1lcmFs
TG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5KCkpOwogCi0g
ICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKKyAgICByZXR1cm4gV1RGTW92ZShuZXdOYW1lc3BhY2Up
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IGYx
M2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgxM2JhZjVjYjVh
NDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMzksMTAg
KzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDog
cHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2aXJ0dWFsIH5T
dG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VU
eXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9y
YWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikg
b3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29y
ZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBl
cGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9jYWxTdG9yYWdl
QXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAgIGNvbnN0IFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWludDY0X3QgbV9z
dG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcApp
bmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44MjU1N2I3Mjcx
NGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDx1aW50NjRf
dCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6Omdl
dE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90
IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChz
bG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90OwogCi0gICAg
UmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVy
KSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAgICBhdXRv
IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIH0K
QEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5y
ZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6
OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90
YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1
bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBh
Z2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5z
aWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdp
biwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCB0b3BMZXZl
bE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRl
eCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2ZGI5ZjA2OGU4
MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcik7Cisg
ICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVp
bnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJy
aWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3MS4uZmM2NTk4
NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAg
LTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUo
KQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVs
ID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Ci0gICAgbW9k
ZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJmYWNlID0gUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwor
ICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNiMDIyMWYxNmUu
LjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omlu
dmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxl
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90
IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7
CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVh
dGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVyZmFjZS0+c2V0
TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5h
bEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7Cisg
ICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
CmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMuLjRhOTRhMWQ4
NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtOTMsMzEgKzkz
LDMwIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogICAg
ICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3Rv
cmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1l
cmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBuZXdOYW1lc3Bh
Y2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9w
YXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJlZigqbmV3IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90YSkpOwogICAg
IGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5ld05hbWVzcGFj
ZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNvcHkoKSk7CiAK
LSAgICByZXR1cm4gbmV3TmFtZXNwYWNlOworICAgIHJldHVybiBXVEZNb3ZlKG5ld05hbWVzcGFj
ZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0b3JhZ2VBcmVh
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1faXNTaHV0ZG93bik7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBzdG9yYWdlQXJl
YTsKLSAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkp
Ci0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICBpZiAoUmVmUHRyPFN0b3JhZ2VBcmVh
SW1wbD4gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pKQorICAgICAg
ICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIAotICAgIHN0b3JhZ2VBcmVh
ID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNN
YW5hZ2VyLmdldCgpLCBtX3F1b3RhKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChvcmlnaW4s
IHN0b3JhZ2VBcmVhLmdldCgpKTsKLSAgICByZXR1cm4gc3RvcmFnZUFyZWE7CisgICAgYXV0byBz
dG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5cGUsIG9yaWdp
biwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcC5z
ZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUoc3RvcmFn
ZUFyZWEpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4
IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5NjY2MTYxMzcuLmM4OGYwNjFlZjVlNTBj
OWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01Nyw4ICs1Nyw4IEBAIGNsYXNz
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2Ug
ewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFdl
YkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgb3Zl
cnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSogbmV3
UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFNYXA7CiAgICAg
U3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5k
ZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3N2M4ODRhYmQ5ZS4uODM2MjA1N2ZmZDc0
ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAg
LTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
Kj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogICAgIHJldHVybiBzdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCkBA
IC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OnN5bmNM
b2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2ln
bmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShxdW90YSk7
CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKK1JlZjxTdG9y
YWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgLy8g
RklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBzcGVjaWFsIG5h
bWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgogICAgIC8vIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5kZXggMGQyMDdk
MzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2FiYi4uZTU4OWZlZTdhNWM2YzkxY2Y5NGI3
ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAgc3RhdGljIFJl
ZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9zZUxvY2FsU3RvcmFnZSgpOwpAQCAtNDks
MTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25l
ZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3Rh
KSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKIAogICAg
IGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAKaW5kZXgg
YzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFhNjIxM2I5ZC4uNjNjYWUyZDBhZDUyY2Q1
MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcApAQCAtNDIsMTggKzQyLDIyIEBAIHN0
YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJWaWV3R3JvdXBz
KCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0KIAotUmVmUHRyPFdlYlZpZXdHcm91cD4g
V2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlZpZXdHcm91cD4gV2ViVmlld0dy
b3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3R3JvdXAo
U3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogCiAgICAgYXV0byYgd2ViVmll
d0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAgICAgIHdlYlZpZXdHcm91cCA9IGFkb3B0
UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0g
ICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYg
d2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCisgICAgaWYgKCF3ZWJWaWV3R3JvdXAp
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFdlYlZpZXdHcm91cChuYW1l
LCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgd2ViVmlld0dyb3VwID0gcmVz
dWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAo
IXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3Vw
LT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiAKLSAgICByZXR1cm4g
d2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmlld0dyb3VwOwogfQogCiBXZWJWaWV3R3Jv
dXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCmluZGV4IGZlMDVjZDU0
ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYuLjRkNDEzN2NlMmFhYWMzYTE0MGQ1OWM2
MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyArMzgsNyBAQCBPQkpDX0NMQVNTIFdlYlZp
ZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdHcm91
cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAg
fldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdlYlZpZXdHcm91cCogZ2V0KGNvbnN0IFN0
cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCBkMDg0OTNiMGY0MmNj
ZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5YjFjY2MyNzJjMzQ3MjU5OWU0OTQyZTUw
MDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKQEAgLTI2LDEzICsyNiwx
MyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNlYXJjaFBvcHVwTWVudUlPUzo6U2Vh
cmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cChh
ZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQorICAgIDogbV9wb3B1cChhZG9wdFJl
ZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsKIH0KIAogUG9wdXBNZW51KiBTZWFyY2hQ
b3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAuZ2V0KCk7Cisg
ICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZvaWQgU2VhcmNoUG9wdXBNZW51SU9TOjpz
YXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFJlY2Vu
dFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKaW5kZXggNzE2
ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5YWY0Zi4uMGVmNDRiNDJhNjYwYWUzNTJj
OGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVibGljIFdlYkNvcmU6OlNlYXJj
aFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKKyAgICBSZWY8UG9wdXBNZW51SU9TPiBt
X3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUlPU19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxl
UG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2YjlhNWU2ODlmYzE5Yzg3Mzc0NDJiNWIy
OS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMyYTEzNjFmNjY4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2li
bGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5n
UmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihOU0FycmF5ICoqKWFsdGVybmF0
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1hcmtlckFsdGVybmF0aXZlcy5z
aXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJsZUFycmF5ICopKmFsdGVybmF0
aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtlckFsdGVybmF0aXZlc1tqXSldOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9kZSwgbWFya2Vy
LT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJr
ZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIApA
QCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VXaXRoQ29ycmVj
dGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7
IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbWFya2Vyc1tp
XTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8PSBvZmZzZXQgJiYgbWFya2Vy
LT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCks
IG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5n
ZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQ
REZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2NDk2YzJjNDQ2MDk5MmM1YzEyYzBkY2Zl
NjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlmMzRiOWMwOTYyOTNkYzM2Y2E1ZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUsMTMgQEAgLSAodm9pZClzaW11bGF0ZUNs
aWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAgaWYgKCFVUkwpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAgIGF1dG8gZXZlbnQgPSBNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAog
ICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwgMSwgeyB9LCB7IH0sIHsgfSwg
eyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBNb3VzZUV2ZW50OjpJc1NpbXVsYXRl
ZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMg
aXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgZnJhbWUtPmxvYWRlcigp
LmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZlbnQucHRyKCks
IG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCBm
ODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2FhOGY0YWQ0Li44MTM2NGQwZTU3NjEyYTgw
ZjY2OTRjMWYyMGZkNzNlNjRjZGIzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
QEAgLTU0NCwxMCArNTQ0LDEwIEBAIC0gKHZvaWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENH
SW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5TQXJyYXkgKiopcmVjdHMKIAogICAgIGF1dG8m
IG5vZGUgPSAqY29yZShzZWxmKTsKIAotICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSByYW5nZU9mQ29u
dGVudHMobm9kZSk7CisgICAgYXV0byByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhub2RlKTsKIAog
ICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFnZSgpLT5wYWdl
U2NhbGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9
IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlv
blRpZ2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNh
dG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0
Q29udGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAogICAgICAgICBU
ZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29t
cGxleFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCAx
ZjMyZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li5hMDRiYzU1N2JmZGRjOTc2
ZmQxODA1YWZlYjc4NjViNGQxMjdhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1h
bmFnZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBsdWdpbgogICAg
IE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9w
ZXJ0eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RCaW5hcnlGb3Jt
YXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRhdGEpOwogICAg
IAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3RhbmNlID0gTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVnaW5WaWV3LCBm
dWxsRnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAgICAgdWludDMy
X3QgcmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBrZXJuX3JldHVy
bl90IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQoKSwgcmVxdWVz
dElELCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2RhdGEgYnl0ZXNd
KSksIFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBpZiAoa3IgPT0g
TUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpAQCAtMjk5LDcgKzI5OSw3IEBAIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omluc3Rh
bnRpYXRlUGx1Z2luCiAgICAgaW5zdGFuY2UtPnNldFJlbmRlckNvbnRleHRJRChyZXBseS0+bV9y
ZW5kZXJDb250ZXh0SUQpOwogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJlclR5cGUocmVwbHktPm1f
cmVuZGVyZXJUeXBlKTsKIAotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICByZXR1cm4gV1RGTW92
ZShpbnN0YW5jZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6Y3JlYXRl
UHJvcGVydHlMaXN0RmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eXBlX3QgcGx1
Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNjA4ZDk0MTFhOTlmZWFkNTAw
ZjRlMTlkMmM3NzEyOWZkODRkYTk0Mi4uYzY5Mjg0MTFlYmU5ODM0ZTNkOGQ2NDNjMWMxZmY2NDFj
MzU0NTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAt
NzE5LDggKzcxOSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0
ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAgIC8vIERvbid0
IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMg
bm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAg
ICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhp
cywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVlc3QoKSk7
Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0pOworICAg
ICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhp
cywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJlcXVlc3QoKSk7
CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJlYW0uY29weVJl
ZigpKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC03OTksMTAgKzc5OSwx
MCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QoTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaAogICAgICAgICBtX3BsdWdpblJlcXVlc3RzLmFw
cGVuZChXVEZNb3ZlKHBsdWdpblJlcXVlc3QpKTsKICAgICAgICAgbV9yZXF1ZXN0VGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gSG9z
dGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQsIHJlcXVlc3Qp
OwogCiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwotICAg
ICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtKTsKKyAgICAgICAgbV9zdHJlYW1z
LmFkZChyZXF1ZXN0SUQsIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0tPnN0YXJ0
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzMmMzNjhmZGVhOTRhMmZiMDI4
YTJjNTAzMDQ3YTllYTBlNzVjMDliLi5iNTdjOGUyYWMxNzNkMGQ3YTcwMDAyMmY5YzEwN2QzMGRk
MmIzY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgLSAodm9pZCll
dmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopSlNQbHVn
aW5SZXF1ZXN0CiAgICAgICAgIC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIg
c3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMg
aXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAg
ICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVn
aW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qg
bm90aWZ5RGF0YV0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBwbHVnaW4sIFtK
U1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVlc3Qgbm90aWZ5
RGF0YV0pOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOlVSTCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTE2NzgsOSArMTY3
OCw5IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1
ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IobG9hZFBsdWdpblJlcXVlc3Q6KSB3aXRoT2JqZWN0OnBsdWdpblJlcXVl
c3QgYWZ0ZXJEZWxheTowXTsKICAgICAgICAgW3BsdWdpblJlcXVlc3QgcmVsZWFzZV07CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0g
PSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdpbiwgc2VuZE5v
dGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0gV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3RpZmljYXRpb24s
IG5vdGlmeURhdGEpOwogCi0gICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5nZXQoKSk7CisgICAg
ICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0tPnN0YXJ0
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCA5NmVmOTIx
ZmQ2MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiLi4yMzQ3ODFiMGJlODZhNGJkYTUwYzBj
ZTU2NDg0MjIzODhiNDJiZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtMjA3
LDggKzIwNyw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDo6aW1h
Z2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lVmlldy0+ZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0
Rm9jdXMpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCks
IFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRp
b24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIGZyYW1lVmll
dy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyYW5n
ZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIE9wdGlvblNl
dDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3I6OlNl
bGVjdGlvbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2MDE4ODVlYjhk
NDRlNjE5YmQ1NDJiYWM1ZDA0MDZmMmUyM2YwZWRhLi5hZThiOWVmYjdkYWRlYzZlODE4ZWNlNzBm
NjczOWEyNTQ4ZDZkYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTQ2NSw3
ICsxNDY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIGNvcmVGcmFtZS0+dmlldygp
KQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAg
ICAgY29yZUZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwotICAgIFJlZlB0cjxGcmFtZVZpZXc+IGNv
cmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CisgICAgYXV0byBjb3JlVmll
dyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwogICAgIGNvcmVGcmFtZS0+c2V0Vmll
dyhjb3JlVmlldy5jb3B5UmVmKCkpOwogCiAgICAgW21fd2ViRnJhbWUuZ2V0KCkgX3VwZGF0ZUJh
Y2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2I5YmI4OTkwOGFlNWMxYTY1MmUzNmNjODg5
YmUwNGU1NjU0Yzk0Ni4uYTkzZGVmNjEzOTlhNWNjNTRlZjYxY2FlOWMwMzc5OTA1ODkwY2Q3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNzQ2
LDggKzE3NDYsOCBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNBcnJheSAq
KilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAgICAgaWYgKCFt
ZXRhZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3VtZW50LCBub2Rl
LCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLmdldCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5z
dGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIERP
TVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CiAgICAgICAgICAgICAg
ICAgW21ldGFkYXRhcyBhZGRPYmplY3Q6bWV0YWRhdGFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYWFmNTI4YzlmYTljODIzYmFjMTBj
ZTA3ZTFjYTU5YzkzNDRmMzg3ZS4uZmY3NDBlZTkwZWZmZmIxZjc0MjgzMmVhMmEwZDc4YWU4OGQz
Yjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAtICh2b2lkKV93cml0ZVNlbGVjdGlvbldpdGhQYXN0
ZWJvYXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFzdAogewogICAg
IC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmIChbdHlwZXMgY29udGFpbnNP
YmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CisgICAgICAgIGlmIChhdXRvIGNvcmVBcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3JlKFtzZWxmIF9m
cmFtZV0pKSkgewogICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBj
b3JlQXJjaGl2ZSA/IGNvcmVBcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSA6IDApCiAg
ICAgICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSBmb3JUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDE3ZWEwYmE3MDQyOTkw
MTA0MjYwMmVlZmQ4YjhkMzRlODQ3NjFiMDUuLmU3N2YxYmNiNjg4NDVjYjgzMTM0MzY0YWNhZDMx
ZjBjNzgyZTNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTQ3MzUsOCArNDczNSw2IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihO
U1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc2MCw4ICs0NzU4
LDYgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3Vw
TmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgU3RyaW5n
KCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXdv
cmxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDVjMDc3MTIxMWVhZWQ2NDkwNzNlMTAzZTkw
NGE1ZWM5MDQ5YjQ2M2YuLmJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5YWE4ZjA0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgp
CiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0
ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBhdXRvIHBhY2thZ2UgPSBQbHVn
aW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYg
KHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAgICAgICBw
bHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5NWZiYzVlZjdiM2M5OGRiMTc2YzNkNjQx
OWYwZTMxYzI4MWVmMTc4Li5kMTMyNGVjNTFmYTYyMWI3OWRiZGQ0M2U4NThlMTNjZjMzZWRmOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQoRG9jdW1l
bnQmKQogewogICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwogICAgIGlmICghc3RhcnQoKSkKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbih0aGlzKTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRGcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbigqdGhpcyk7CiB9
CiAKIFBsdWdpblZpZXc6On5QbHVnaW5WaWV3KCkKQEAgLTQxMCw4ICs0MTAsOCBAQCB2b2lkIFBs
dWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgICAg
IC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEgc3RyZWFtIGZv
ciBpdC4gb3RoZXJ3aXNlLAogICAgICAgICAvLyBqdXN0IHBhc3MgaXQgb2ZmIHRvIHRoZSBsb2Fk
ZXIKICAgICAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMs
IG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlE
YXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVp
cmtzKCkpOwotICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOworICAgICAgICAgICAg
YXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdl
dCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVl
c3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+
cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKKyAgICAgICAg
ICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBzdHJlYW0t
PnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0
IGZyYW1lIGlzIG91ciBmcmFtZSwgd2UgY291bGQgZGVzdHJveSB0aGUKQEAgLTQ1NCw4ICs0NTQs
OCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgICAgICAgICAgICAgY3N0ciA9IHJlc3VsdFN0cmluZy51dGY4KCk7CiAgICAgICAg
IH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVnaW5TdHJlYW06
OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1
ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVx
dWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwg
bV9wbHVnaW4tPnF1aXJrcygpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOworICAg
ICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1fcGFyZW50RnJh
bWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRhKCksIHBsdWdp
bigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtzKCkpOworICAg
ICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJlYW0tPnNl
bmRKYXZhU2NyaXB0U3RyZWFtKHJlcXVlc3RVUkwsIGNzdHIpOwogICAgIH0KIH0KQEAgLTY5MCwx
MSArNjkwLDExIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1Z2luVmlldzo6
YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRvIHJvb3QgPSBtX3BhcmVudEZyYW1l
LT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwotICAgIFJlZlB0cjxKU0M6OkJpbmRp
bmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0
ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8gaW5zdGFuY2UgPSBKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOwogCiAgICAgX05Q
Tl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgcmV0
dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA3
Y2ZjN2E5YTgyZTcyYzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5ZjRlLi5iNWI2MGE4MDk5MWQ2MDcx
MGI4NzA2MzAyNDAyMWQ2NTA5MDYzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzE3LDcgKzMxNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBWZWN0b3I8Ym9vbCwgND4gbV9wb3B1cFN0YXRlU3RhY2s7CiAKLSAgICAg
ICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPiA+IG1fc3RyZWFtczsKKyAgICAgICAgSGFz
aFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPj4gbV9zdHJlYW1zOwogICAgICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFBsdWdpblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogCiAgICAgICAgIGJvb2wg
bV9pc1dpbmRvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDgwODcyMDc2
NGQ3NjRkYmFkYTU1MDNiZmY4YzZhMmRjMjRlYjRmNGEuLmVlODE5OGE4ODI3MTY4MWU1MWJjMWNl
YzIxNzU1ZTFmNTc0ZGRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEw
NjEsNyArMTA2MSw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZXR1cm4gV2ViQ29y
ZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2lu
VmlldykgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRv
U3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyYgcGx1Z2luVmlldykgY29uc3QKIHsKICAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkBAIC0xMDcyLDIzICsx
MDcyLDIzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3Rh
cnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFt
ZSk7Ci0gICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkpOworICAg
IEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LnBhcmVudEZyYW1lKCkpOwogCi0gICAgaWYgKCFw
bHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTCBwbHVnaW5Q
YWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAgaWYgKCFw
bHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMIHBsdWdpblBh
Z2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKSkpOwogICAgICAgICBpZiAo
cGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZT
dHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKICAgICAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblBhZ2VVUkwu
c3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoIXBsdWdpblZpZXctPm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXBsdWdp
blZpZXcubWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
a2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVy
cm9yTUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5n
ZXQoKSwga2V5LCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVn
aW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCi0gICAg
aWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0g
cGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKKyAgICBpZiAocGx1Z2luVmlldy5wbHVnaW4o
KSkgeworICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCktPm5h
bWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBz
dGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NG
U3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CiAgICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVn
aW4KICAKICAgICBpbnQgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcgZGVzY3JpcHRpb247Ci0g
ICAgc3dpdGNoIChwbHVnaW5WaWV3LT5zdGF0dXMoKSkgeworICAgIHN3aXRjaCAocGx1Z2luVmll
dy5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIFBsdWdpblN0YXR1c0Nhbk5vdEZpbmRQbHVnaW46
CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW47CiAg
ICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFdFQl9VSV9TVFJJTkcoIlRoZSBwbHVnLWluIGNhblx4
RTJceDgwXHg5OXQgYmUgZm91bmQiLCAiV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z2luIGRlc2Ny
aXB0aW9uIik7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUmVzb3VyY2VF
cnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVycm9yQ29kZSwg
cGx1Z2luVmlldy0+dXJsKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVnaW5WaWV3LnVy
bCgpLCBTdHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRvcHRDT00sIFdl
YkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0JhZy5nZXQoKSkp
OwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVkV2l0aEVycm9y
KHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpKSk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4gcGx1Z2luVmll
dyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1lbnQsIHVybCwg
cGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkpOworICAgIGF1
dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVs
ZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFs
bHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0YXR1c0xvYWRl
ZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0xMTgwLDcgKzEx
ODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihX
aWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxB
cHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
KQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0cjxQbHVnaW5W
aWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBs
dWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBs
aWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2luVmlldyA9IFBs
dWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAmZWxlbWVudCwg
VVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxl
dCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxvYWRlZCBz
dWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2luVmlldy0+
cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIwNTZhZTMx
MmE1M2NkY2RiMjRiY2IwYmFhZDZmNzVjODcyNjVlNjEuLmE5NjVmNTkxOWVlZjQyYzE2ZWYyNTJi
MmUzYzI1MGFmNmU3YTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDksNyAr
NDksNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgc2V0V2ViRnJhbWUoV2Vi
RnJhbWUqIHdlYkZyYW1lKSB7IG1fd2ViRnJhbWUgPSB3ZWJGcmFtZTsgfQogICAgIFdlYkZyYW1l
KiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJhbWU7IH0KIAotICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5WaWV3KikgY29u
c3Q7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNvcmU6
OlBsdWdpblZpZXcmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0MmM3ZDZiNjJkOGZj
NjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0NGU0ZGZiZjgyMWNh
ZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVx
dWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9h
ZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBl
LCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQor
dm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lz
U3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTYxMCw3ICs2MTAs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBf
SW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUGxh
aW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0
cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVvZihVQ2hh
cikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBwbGFpblRleHRNaW1l
VHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2Rpbmco
VEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwg
cGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0cik7CkBAIC02MTks
NyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJT
VFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkSFRNTFN0
cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1
bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5n
KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7
CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2Fk
RGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2RpbmcsIGJhc2VVUkwsIHVu
cmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDFiYWRk
MDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlkZjZiOTBkMGEyNzdk
NzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAt
MTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQt
ODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJM
LCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdO
YW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNv
ZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAg
IHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBm
bG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwog
ICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFjY2NjMDY2ODZlMDRj
NGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6fkNBVmlldygpCiAg
ICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZpZXc+IENBVmlldzo6
Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxDQVZpZXc+IENBVmll
dzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6c2V0Q29udGV4dERp
ZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9u
LCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRlYzAxNTJlNTFkNDI0
ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5YTZkYTU3MGM2MmM1
ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENB
VmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0Ns
aWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVmUHRyPENBVmlldz4g
Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxDQVZpZXc+IGNyZWF0
ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAgIHR5cGVkZWYgdm9p
ZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcqLCB2b2lkKiBpbmZv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IGIxNTQ4MjRjZTQ0
ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVkN2U2NWFkODMwODU0
MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmNwcApA
QCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGluaygpCiAgICAgOjpD
bG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlzcGxheUxpbms+IENW
RGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQpCitSZWY8Q1ZE
aXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtDbGllbnQqIGNs
aWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxpbmsoY2xpZW50KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQpKTsKIH0KIAog
dm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGlu
ay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0NDIyODMuLmNhMDI2
YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlzcGxheUxpbmtDbGll
bnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRpc3BsYXlMaW5rUmVm
CiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENWRGlz
cGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlzcGxheUxpbms+IGNy
ZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxDVkRpc3BsYXlMaW5r
PiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3BsYXlMaW5rKCk7CiAK
ICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5j
cHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIyNjAwYy4uY2Y5MjE4
NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgSFJFU1VMVCBn
ZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1cmZhY2UsIFJlZlB0
cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwgZGVzYy5IZWlnaHQp
OwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3VyZmFjZVNpemUp
OworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcyNzIyYWVlYjcuLmZi
YzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmFk
ZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3Jp
cHRXbwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJW
aWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYgKCF2aWV3R3Jv
dXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3JsZCkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNVTFQgV2ViVmlldzo6
YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElX
ZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdHcm91cCA9IFdl
YlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdH
cm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxkKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357812</attachid>
            <date>2018-12-20 08:21:02 -0800</date>
            <delta_ts>2018-12-21 11:29:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192808-20181221012100.patch</filename>
            <type>text/plain</type>
            <size>409289</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZjcxYTg4ZjhjOGRlMjM1ZTE4OGE5OTgzNzM3YWI4YjAxZGE2ODZkLi44YTYyY2I5MzI5MjY0ZWVh
MjI2NjhkNTYyZDcyYzhiZTY0NmFmM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOC0xMi0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1R5cGVk
QXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29w
eSk6CisgICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAgICAgIChKU0M6
OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6Om5ld09iamVjdCk6CisgICAgICAgICogZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3
V2F0Y2hwb2ludEFkYXB0b3I6OmFkZCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OnN3ZWVwZXIpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6CisgICAg
ICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSk6
CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0Lmg6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbElu
UGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpT
dWJzcGFjZTo6cGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UpOgorICAgICAgICAoSlNDOjpTdWJzcGFj
ZTo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAgICAgKiBoZWFwL1N1
YnNwYWNlLmg6CisgICAgICAgICogaGVhcC9TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6U3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbCk6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZm
ZXI6OnNsaWNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQpOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmZpcmVB
bGwpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisKIDIwMTgtMTItMjAgIENhaW8gTGlt
YSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtCaWdJbnRdIFdlIHNob3VsZCBl
bmFibGUgQ1NFIGludG8gYXJpdGhtZXRpYyBvcGVyYXRpb25zIHRoYXQgc3BlY3VsYXRlIEJpZ0lu
dFVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDJhYjkxMWZkZjdjYjM0NDZlNTZhZmE4ZjQ5ZmRiY2NkNTM4NTkz
NTYuLmJmYTFjODA4ZmI3ODAyODdkZGVmNzc0MTE3NDhhMmM3ZWNjN2UyNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzOTYgQEAKKzIwMTgtMTItMjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1
a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcyk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6aW5kZXhOYW1lcyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYURldmljZXM6OmdldERpc3BsYXlNZWRpYSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFs
dWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMU3RhdGVtZW50OjpleGVjdXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVOjpyZXF1ZXN0QWRhcHRlciBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRC
dWZmZXI6OmJlZ2luUmVuZGVyUGFzcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmVWaWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1Rl
eHROZWFyUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluay5jcHA6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJs
aW5rR2V0U3RhcnRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0
RW5kSW5kZXgpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfY29u
dmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExv
b3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldp
ZGdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNo
b3J0aGFuZFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
Lmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpydWxlcyk6CisgICAgICAg
ICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp1bmljb2Rl
UmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZlYXR1cmVTZXR0aW5n
cyBjb25zdCk6CisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNo
ZWV0Q29udGVudHMpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFp
bnRGb3JDdXJyZW50Q29sb3IgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlv
bnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5
bGVSdWxlLmg6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmg6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVS
ZW5kZXJlZFJlY3RzRm9yTWFya2VyKToKKyAgICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRl
U2hlZXQpOgorICAgICAgICAqIGRvbS9Qb2ludGVyRXZlbnQuaDoKKyAgICAgICAgKiBkb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0dXJlVG9rZW46
OmNyZWF0ZSk6CisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QWx0
ZXJuYXRpdmVUZXh0VG9SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkRWRp
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJr
UHJlY2VkaW5nV2hpdGVzcGFjZUZvckRlbGV0ZWRBdXRvY29ycmVjdGlvbkFmdGVyQ29tbWFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9N
YXJrZXJBdEVuZE9mV29yZCk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0
eWxlQXJvdW5kTm9kZSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6dGFyZ2V0UmFuZ2Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNl
VGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0
ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6Om1lcmdlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJ
dGVyYXRvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGlu
ZVN0eWxlT2ZFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6
cHJlcGFyZVRvQXBwbHlBdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdl
SW5saW5lQW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVzTm90SW4pOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAq
IGVkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1h
dEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlRm9y
bWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVGb3JtYXRDb21tYW5kOjpk
b0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OnRhcmdl
dFJhbmdlcyBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3Zl
UmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKToKKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAg
KiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxs
QWRkVHlwaW5nVG9PcGVuQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvaW9z
L0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGF0aW9uQ29t
bWFuZElPUzo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VX
cml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVW5jaGFu
Z2VhYmxlU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFz
dGVib2FyZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0Fu
ZElubGluZURlY2wpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JUcmFuc2Zv
cm1Ub0ZyYWdtZW50KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFD
b250cm9scyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9VUkxVdGlscy5o
OgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46Om9yaWdpbiBjb25zdCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxl
bWVudEludGVyZmFjZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y3JlYXRlTmV3Q3VlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
YnVpbGRJbml0aWFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpi
dWlsZEFjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc0NTU1J1bGVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yOjprZXlQYXRoRnJvbUlEQktleVBh
dGgpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZSk6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0pOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjphZGRSZXNvdXJjZVRvQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJl
bW92ZVJlc291cmNlc1dpdGhPcmlnaW4pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGlzdGFuY2UpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5
bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGaWx0ZXJPcGVyYXRpb25zKToKKyAg
ICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpp
bml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW50
ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QgY29uc3QpOgorICAgICAgICAqIHBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVJbik6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNh
bGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OmNvbnN1bWVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVh
ZGVyOjpjcmVhdGVCdXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVS
ZWFkZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVC
dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpmdWxmaWxsUmVxdWVzdFdpdGhLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6
Y3JlYXRlVGlsZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQnVmZmVyTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVwZGF0ZVRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnByb2Nlc3NNcGVnVHNTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1wbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94OjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09UcmFj
a0VuY3J5cHRpb25Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZp
bHRlckFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5H
RGVjb2RlckF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6Ok1vY2tJ
bml0aWFsaXphdGlvbkJveCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tUcmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUZXh0VHJhY2tQcml2
YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5j
b2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1l
bnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1
cE1lbnVXaW46OnBvcHVwTWVudSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudVdpbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1Jlc291
cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OlN0
b3JhZ2UpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZTo6YXJlYSBjb25zdCk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
Lmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpsb2NhbFN0b3JhZ2VBcmVh
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omdl
dFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiB0ZXN0aW5nL0dDT2JzZXJ2YXRpb24uaDoKKyAgICAgICAgKiB4bWwvWFNM
VFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpjcmVhdGVE
b2N1bWVudEZyb21Tb3VyY2UpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1l
bnRGcmFnbWVudCk6CisKIDIwMTgtMTItMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFy
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBHVEsgYnVpbGQgYWZ0ZXIg
cjIzOTQxMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBkNzAwN2ViNzg5MGQ5ODExYjc1OTE3YzU0OTcxOTY4NTU0MTJj
MmI0Li5kNGI1MTA0OWM3ZjRjM2ZlNzhhNWI2ZjQwMTUzZmUxYzMxOTAyYjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzNiBAQAorMjAxOC0xMi0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVr
aUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5l
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29ubmVjdGlvbiBzZW5kTWVzc2FnZVdpdGhOYW1lOmJv
ZHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyB0YWtlU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRHZW9sb2NhdGlvblBy
b3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9h
bGxvd190bHNfY2VydGlmaWNhdGVfZm9yX2hvc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNl
c3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9CYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRl
VXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRDcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcXVlc3ROZXR3b3Jr
aW5nU3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlh
UGx1Z2lucyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbToKKyAgICAgICAg
KC1bV0tET01SYW5nZSBpbml0V2l0aERvY3VtZW50Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9y
VHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0Ns
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJl
YWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVwbGFjZURpY3RhdGVkVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0
aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9y
YWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW06CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVs
QW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKwogMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtQU09OXSBTdXNwZW5kZWRQYWdlUHJveHkgZmFpbHMg
dG8gcmVsZWFzZSBpdHMgcHJvY2VzcyBhc3NlcnRpb24gaWYgdGhlIFdlYlBhZ2UgZmFpbHMgdG8g
ZW50ZXIgUGFnZUNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGFkNmZhODA1ZTZjNzE3MjVk
MTI0Yzk3NzVmMThjYTRiODc2YjM5YzkuLjU5Mjc2NGFlYmQ3YjMyMWZiY2YxZjQxNDg1YjU4ODE2
MjUyOGIzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTIt
MjAgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAg
ICBVc2UgUmVmPD4gYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAq
IFN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwOgorICAgICAg
ICAoV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0dyb3VwLmg6CisKIDIwMTgtMTItMTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmku
RnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1bV2ViS2l0TGVnYWN5XVtDbGFuZ10gV2Vi
S2l0Lmggd2FybmluZzogJ0lXZWJFZGl0aW5nRGVsZWdhdGUyOjpzaG91bGRJbnNlcnROb2RlJyBo
aWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVuY3Rpb24gWy1Xb3ZlcmxvYWRlZC12aXJ0dWFsXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGU4NDRmOTA1MTNjMzM2YzI0ZTYzOWZlZjY5
OGJkODM4MWI2NDRhYzIuLmQ3MTQ3Y2ZjNDNjNWIxNjhmZTE4ZDc4ODZlYWVjMDk3ODBiNDM4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0y
MCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlP
Uy5jcHA6CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OlNlYXJjaFBvcHVwTWVudUlPUyk6
CisgICAgICAgIChTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24g
ZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOl0pOgorICAgICAg
ICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZW5jbG9zaW5nUmFuZ2VXaXRoQ29ycmVjdGlvbkluZGlj
YXRvcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAg
ICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0p
OgorCiAyMDE4LTEyLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZWIxZDExMDA4ODU4NDNkMDJmNDQ2MWI4MjE3NWM1MTI2MGRhNWE5OC4uZDg2YTgyOTUyMTMzMTY5
MTNlNjA1MGMzZmQxMGEyM2ZjNzFhZDg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtp
QHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFJlZjw+IGFzIG11Y2ggYXMgcG9zc2libGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RP
TS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0
czpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50
aWF0ZVBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0UGx1Z2luUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVn
aW5WaWV3IGxvYWRSZXF1ZXN0OmluVGFyZ2V0OndpdGhOb3RpZnlEYXRhOnNlbmROb3RpZmljYXRp
b246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06
CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1Nl
cnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAg
ICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF93cml0ZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkVHlwZXM6dG9QYXN0ZWJvYXJkOmNhY2hl
ZEF0dHJpYnV0ZWRTdHJpbmc6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndo
aXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAg
ICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6
d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZyYW1lczpdKToKKwogMjAxOC0xMi0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBt
b3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2Vu
Z2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IGY2YzEyNmI3MjEzNzMzOTcyN2IyNmYzMzlmMDk4YjI3M2ZiZWZjZDcuLmE5NTQ5YTJl
MmVlMDZlZGIxNDg4NWE5MGJkOTIwMTkwNzlmYTI5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0xMi0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVzZSBSZWY8PiBhcyBtdWNoIGFzIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTI4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OnJlZnJlc2gpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmJpbmRpbmdJbnN0YW5jZSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWRI
VE1MU3RyaW5nKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKyAgICAg
ICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwOgorICAgICAg
ICAoV0tRQ0E6OkNWRGlzcGxheUxpbms6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9JbWFnZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV0tRQ0E6OmdldEltYWdl
Q29weSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0b3IgYW5kIG1vdmUtYXNzaWdubWVu
dCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1ZSBiZWluZyBtb3ZlZCBmcm9tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggNGFkYzc2OWU2
ZTZhNjkwMTg0OTAwNDJhMzMyMTEwY2VjYWQ4ZjNhOC4uOTkzYmYyY2ZhMmVhMGE2M2NjZjk3MDE4
ODRiNzkzMWE4Mzc1MjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1R5cGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVk
QXJyYXlXaXRoQnl0ZXNOb0NvcHkoSlNDb250ZXh0UmVmIGN0eCwgSlNUeXBlZEFycmF5CiAKICAg
ICB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUgPSBlbGVtZW50U2l6ZSh0b1R5cGVkQXJyYXlUeXBl
KGFycmF5VHlwZSkpOwogCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgsIFs9XSh2b2lkKiBwKSB7CisgICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5dGVzLCBsZW5ndGgs
IFs9XSh2b2lkKiBwKSB7CiAgICAgICAgIGlmIChkZXN0cnVjdG9yKQogICAgICAgICAgICAgZGVz
dHJ1Y3RvcihwLCBkZXN0cnVjdG9yQ29udGV4dCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAppbmRl
eCA3ODMzMmQ3OWFlYzZkMjg1YmMxYzNhNjQ1NmUxZGRlOTJmZDJjYWY4Li5kMTI4ODM2YmIwZmY2
OWQ2Mzc2MmI4MThmY2RiZGVhYWU5NmU4MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKQEAgLTQ2LDkgKzQ2
LDkgQEAgSlNXZWFrT2JqZWN0TWFwUmVmIEpTV2Vha09iamVjdE1hcENyZWF0ZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgdm9pZCogcHJpdmF0ZURhdGEKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGNvbnRleHQpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7Ci0gICAgUmVmUHRyPE9wYXF1ZUpTV2Vha09iamVjdE1hcD4gbWFwID0gT3BhcXVl
SlNXZWFrT2JqZWN0TWFwOjpjcmVhdGUodm0sIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7Ci0gICAg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLmdldCgpKTsK
LSAgICByZXR1cm4gbWFwLmdldCgpOworICAgIGF1dG8gbWFwID0gT3BhcXVlSlNXZWFrT2JqZWN0
TWFwOjpjcmVhdGUodm0sIHByaXZhdGVEYXRhLCBjYWxsYmFjayk7CisgICAgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5yZWdpc3RlcldlYWtNYXAobWFwLnB0cigpKTsKKyAgICByZXR1cm4g
bWFwLnB0cigpOwogfQogCiB2b2lkIEpTV2Vha09iamVjdE1hcFNldChKU0NvbnRleHRSZWYgY3R4
LCBKU1dlYWtPYmplY3RNYXBSZWYgbWFwLCB2b2lkKiBrZXksIEpTT2JqZWN0UmVmIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJv
cGVydHlBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0
aWNQcm9wZXJ0eUFuYWx5emVyLmgKaW5kZXggMDFlMDc2OWNmNmUzMTNiY2VkOTkzMTE1YmVmYjg0
OTQ1YmY0ODYxZi4uNWY5ZTczODYyYTRhY2QzMDdiMTAxYmQxY2Q2ZjIzZmM1MTc1MmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0
eUFuYWx5emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0
aWNQcm9wZXJ0eUFuYWx5emVyLmgKQEAgLTU5LDggKzU5LDggQEAgaW5saW5lIHZvaWQgU3RhdGlj
UHJvcGVydHlBbmFseXplcjo6Y3JlYXRlVGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9u
U3RyZWEKIAogaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KFJl
Z2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25S
ZWYpCiB7Ci0gICAgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGFuYWx5c2lzID0gU3Rh
dGljUHJvcGVydHlBbmFseXNpczo6Y3JlYXRlKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKTsKLSAg
ICBBbmFseXNpc01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdC0+
aW5kZXgoKSwgYW5hbHlzaXMpOworICAgIGF1dG8gYW5hbHlzaXMgPSBTdGF0aWNQcm9wZXJ0eUFu
YWx5c2lzOjpjcmVhdGUoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpOworICAgIEFuYWx5c2lzTWFw
OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hbmFseXNlcy5hZGQoZHN0LT5pbmRleCgpLCBhbmFs
eXNpcy5jb3B5UmVmKCkpOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAga2lsbChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoYW5hbHlzaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCmluZGV4IDE3M2Qw
M2U1Zjk5Y2ZhZmIzMWI3MTVmNmEwYThiZTRjYmFiNzE4OGYuLjBkNzk0MmFhZjc5YWQyYTY3Zjk2
ZDcyNDQyZDliNTEyOGU0OGY0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBBcnJh
eUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRkKAogICAgIFdhdGNocG9pbnQqIHdhdGNo
cG9pbnQgPSBjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jayk7CiAgICAgQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KICAgICAgICAgQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUodm0pOwotICAgIG5ldXRlcmluZ1dh
dGNocG9pbnQtPnNldCgpLT5hZGQod2F0Y2hwb2ludCk7CisgICAgbmV1dGVyaW5nV2F0Y2hwb2lu
dC0+c2V0KCkuYWRkKHdhdGNocG9pbnQpOwogICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQobmV1
dGVyaW5nV2F0Y2hwb2ludCk7CiAgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gc2V0IHRo
aXMgd2F0Y2hwb2ludCBhdCBhbGwgZm9yIHNoYXJlZCBidWZmZXJzLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKaW5kZXggMTZjOTkyMzA3MDFhYTFmZWM3MDBlZmUxM2IxNzNlZTlmZjNhYWMx
YS4uOGIwZDFhMjc3YTQ0NmFmNzc1ZTBjN2YzYmIxZjFkZDJjYjEwMWM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw4ICszMDYsOCBAQCBIZWFwOjpIZWFwKFZNKiB2
bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMC4wMSkKICAg
ICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVG
dWxsVGltZXIodGhpcykpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlD
YWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKGFkb3B0
UmVmKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykpKQotICAgICwgbV9zdG9wSWZOZWNlc3Nh
cnlUaW1lcihhZG9wdFJlZihuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKKyAgICAsIG1f
c3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCisgICAgLCBt
X3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIo
dm0pKSkKICAgICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogI2lmIFVTRShGT1VOREFUSU9OKQogICAg
ICwgbV9kZWxheWVkUmVsZWFzZVJlY3Vyc2lvbkNvdW50KDApCkBAIC0yMzM5LDcgKzIzMzksNyBA
QCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIAogSW5j
cmVtZW50YWxTd2VlcGVyJiBIZWFwOjpzd2VlcGVyKCkKIHsKLSAgICByZXR1cm4gKm1fc3dlZXBl
cjsKKyAgICByZXR1cm4gbV9zd2VlcGVyLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEdhcmJh
Z2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCmluZGV4IGRiMjMwMDQ5NjVmOGEyYWNlZjg3Y2M5M2VlNTZkYzk5MDcxYzE1NzYuLmFm
MGYwMDRjMWU2OThhYjViNzkwMzY1ZGM4MmU3OGZlN2QwOTBlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKQEAgLTYyOSw4ICs2MjksOCBAQCBjbGFzcyBIZWFwIHsKICAgICAKICAgICBS
ZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKICAg
ICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrOwotICAg
IFJlZlB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICBSZWZQdHI8U3RvcElm
TmVjZXNzYXJ5VGltZXI+IG1fc3RvcElmTmVjZXNzYXJ5VGltZXI7CisgICAgUmVmPEluY3JlbWVu
dGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgIFJlZjxTdG9wSWZOZWNlc3NhcnlUaW1lcj4gbV9z
dG9wSWZOZWNlc3NhcnlUaW1lcjsKIAogICAgIFZlY3RvcjxIZWFwT2JzZXJ2ZXIqPiBtX29ic2Vy
dmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5k
ZXggNjIwZGQxNTk4MDY3ZThjMDRjN2VjNWQ2NjNhMjZiMGE4NjEyY2M0ZS4uYjhlNDMwMTkxZTZi
MWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgSXNvQ2VsbFNldDo6fklzb0NlbGxT
ZXQoKQogICAgICAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pjo6cmVtb3ZlKCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxs
U2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRhc2s8
TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJr
ZWRCbG9ja1NvdXJjZSgpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1YmxpYyBTaGFyZWRUYXNrPE1h
cmtlZEJsb2NrOjpIYW5kbGUqKCk+IHsKICAgICBwdWJsaWM6CkBAIC03OCw3ICs3OCw3IEBAIFJl
ZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJh
bGxlbE5vdEVtcHR5TWFya2VkQmxvCiAgICAgICAgIGJvb2wgbV9kb25lIHsgZmFsc2UgfTsKICAg
ICB9OwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcykpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRhc2soKnRoaXMpKTsKIH0KIAogTkVWRVJfSU5MSU5FIEJpdG1h
cDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90
IGJsb2NrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmgKaW5kZXgg
MTZjOWNiYjJiN2MzMjk3NDI3ZDg3NDYyYmQ4MjRhMTM2ODZjMGNlNy4uZGFkYTY3MmM0OTFkYzAz
ODFmNThmYTFhNjcyYjZjNmMwYjdlMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJc29DZWxsU2V0IDogcHVibGljIEJh
c2ljUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+IHsKICAgICAKICAgICBib29sIGNvbnRhaW5z
KEhlYXBDZWxsKiBjZWxsKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQ
dHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8
TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJj
ZSgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBoYXZlIHRvIGRvIGEgY29tYmluZWQgc2VhcmNo
IG92ZXIgd2hhdGV2ZXIgU3Vic3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsIHVzZXMgYW5kCiAgICAg
Ly8gb3VyIG1fYmxvY2tzV2l0aEJpdHMuCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElzb0NlbGxT
ZXQgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gewogICAgIHZvaWQg
Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLSAgICBSZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBmb3JFYWNo
TWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOworICAgIFJlZjxTaGFyZWRUYXNrPHZv
aWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5j
Jik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hM
aXZlQ2VsbChjb25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldElubGluZXMuaAppbmRleCBhYzQxMmE3NzgxYWQ1MzY4NjkxNGU0YzNmYjAyNjMxZjAy
MmQ5Y2ZiLi5jZTdkZThlMTkwZWE4ZTUzZjkzMzY0YzdjZjFmY2U1ZWQzNGE2Zjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBm
dW5jKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotUmVmUHRyPFNoYXJlZFRhc2s8dm9p
ZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVs
KGNvbnN0IEZ1bmMmIGZ1bmMpCitSZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBJ
c29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVuYykK
IHsKICAgICBjbGFzcyBUYXNrIDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYp
PiB7CiAgICAgcHVibGljOgpAQCAtMTA2LDEyICsxMDYsMTIgQEAgUmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChTbG90VmlzaXRvciYpPj4gSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFs
bGVsKGMKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXNvQ2VsbFNldCYgbV9zZXQ7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBtX2Js
b2NrU291cmNlOworICAgICAgICBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigp
Pj4gbV9ibG9ja1NvdXJjZTsKICAgICAgICAgRnVuYyBtX2Z1bmM7CiAgICAgICAgIExvY2sgbV9s
b2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKCp0aGlzLCBm
dW5jKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywgZnVuYykpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuY3BwCmluZGV4IGQzNzdmOWFlYWZiOGQzNWU3MDM2ZDBkOTI4NzIxMzMxMGFmYjhiMzEuLmUx
NGEzNzQ5MjI3Zjc0Njc2MGFhOGE0MDk0MDRhZjJkNDQwZWIxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgTWFya2VkQmxvY2s6Okhh
bmRsZSogU3Vic3BhY2U6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5KigpPj4gU3Vic3BhY2U6
OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKK1JlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5
KigpPj4gU3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKCkKIHsKICAgICBjbGFzcyBU
YXNrIDogcHVibGljIFNoYXJlZFRhc2s8QmxvY2tEaXJlY3RvcnkqKCk+IHsKICAgICBwdWJsaWM6
CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSoo
KT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIExvY2sgbV9s
b2NrOwogICAgIH07CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUYXNrKG1fZmlyc3RE
aXJlY3RvcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKG1fZmlyc3REaXJlY3Rv
cnkpKTsKIH0KIAotUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1
YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKQorUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IFN1YnNwYWNlOjpwYXJhbGxlbE5vdEVtcHR5TWFy
a2VkQmxvY2tTb3VyY2UoKQogewogICAgIHJldHVybiBjcmVhdGVQYXJhbGxlbFNvdXJjZUFkYXB0
ZXI8QmxvY2tEaXJlY3RvcnkqLCBNYXJrZWRCbG9jazo6SGFuZGxlKj4oCiAgICAgICAgIHBhcmFs
bGVsRGlyZWN0b3J5U291cmNlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaApp
bmRleCBiYTNhMTRjNjNlYzcyODVkZDRkNGZlMmYzZWViN2I4YWQ5YTVmNGIxLi44M2VmNGQ3NDlm
YmM4Njc4Njc1YzkyMzQ4MDQ3NzNkYjE4Y2FjOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N1YnNwYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmMm
KTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSooKT4+IHBhcmFs
bGVsRGlyZWN0b3J5U291cmNlKCk7CisgICAgUmVmPFNoYXJlZFRhc2s8QmxvY2tEaXJlY3Rvcnkq
KCk+PiBwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTWFya2VkQmxvY2soY29uc3QgRnVuYyYpOwpAQCAt
NzgsNyArNzgsNyBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KICAgICB2b2lkIGZvckVhY2hOb3RFbXB0eU1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsKICAg
ICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6
SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBh
cmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1NvdXJjZSgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoTGFyZ2VBbGxvY2F0aW9uKGNvbnN0IEZ1bmMm
KTsKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIHZvaWQgZm9yRWFjaE1h
cmtlZENlbGwoY29uc3QgRnVuYyYpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+
Ci0gICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4gZm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmKTsKKyAgICBSZWY8U2hhcmVkVGFzazx2b2lkKFNs
b3RWaXNpdG9yJik+PiBmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChj
b25zdCBGdW5jJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5l
cy5oCmluZGV4IGU4M2IzODJkZjgwNmVmMjRmZTBkYTgwYzUwZTI4NjA5NzQwYTYyNjMuLjE2NzEy
N2ZmNDM4NDNlYjYxNGUwYjFhNmNmNzY5M2E1MGE3YmFjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU3Vi
c3BhY2U6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+Ci1SZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBT
dWJzcGFjZTo6Zm9yRWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCitS
ZWY8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBTdWJzcGFjZTo6Zm9yRWFjaE1hcmtl
ZENlbGxJblBhcmFsbGVsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgY2xhc3MgVGFzayA6IHB1
YmxpYyBTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4gewogICAgIHB1YmxpYzoKQEAgLTEy
MSwxMyArMTIxLDEzIEBAIFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IFN1
YnNwYWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uCiAgICAgICAgIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFN1YnNwYWNlJiBtX3N1YnNwYWNlOwotICAgICAgICBSZWZQdHI8U2hh
cmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gbV9ibG9ja1NvdXJjZTsKKyAgICAgICAg
UmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IG1fYmxvY2tTb3VyY2U7CiAg
ICAgICAgIEZ1bmMgbV9mdW5jOwogICAgICAgICBMb2NrIG1fbG9jazsKICAgICAgICAgYm9vbCBt
X25lZWRUb1Zpc2l0TGFyZ2VBbGxvY2F0aW9ucyB7IHRydWUgfTsKICAgICB9OwogICAgIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVGFzaygqdGhpcywgZnVuYykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRhc2soKnRoaXMsIGZ1bmMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNTg5NjYxNjQwMjBmODhiNmU5NzgyODliMjQ4YmFi
NTk5NmQ0Y2Y3MC4uYWRkNWE0ZTJhYjUxYmNjYmE0Yzc0OTUyYTRhZDY5NjZmNGMzZWFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhlY1N0YXRl
KiBleGVjCiAgICAgICAgIG1lc3NhZ2UgPSBXb3JrZXI6OmN1cnJlbnQoKS5kZXF1ZXVlKCk7CiAg
ICAgfQogICAgIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZlQnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7CisgICAgYXV0byBuYXRp
dmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UtPnJlbGVhc2VDb250ZW50cygp
KTsKICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVmZmVy
LT5zaGFyaW5nTW9kZSgpOwogICAgIEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVy
U3RydWN0dXJlKHNoYXJpbmdNb2RlKSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAppbmRleCA0ZTVl
ZjE1NDFiNGI0NjJkZWMwNDYyZWM5MTYyMDhkNWUxOTk5NzFmLi42YzU2ZDU5ZjE3MWM1OThkNDYy
NGFiZmY1OWIxNmI3NGEwZWYxNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlCdWZmZXIuY3BwCkBAIC0yODksMjAgKzI4OSwyMCBAQCB1bnNpZ25lZCBBcnJheUJ1
ZmZlcjo6Y2xhbXBJbmRleChkb3VibGUgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNsYW1wVmFs
dWUoaW5kZXgsIDAsIGN1cnJlbnRMZW5ndGgpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0CitSZWY8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRl
eChlbmQpKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91
YmxlIGJlZ2luKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2UoZG91
YmxlIGJlZ2luKSBjb25zdAogewogICAgIHJldHVybiBzbGljZUltcGwoY2xhbXBJbmRleChiZWdp
biksIGJ5dGVMZW5ndGgoKSk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6
OnNsaWNlSW1wbCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAorUmVmPEFycmF5
QnVmZmVyPiBBcnJheUJ1ZmZlcjo6c2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBl
bmQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGJlZ2luIDw9IGVuZCA/IGVuZCAtIGJl
Z2luIDogMDsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IEFycmF5QnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSkgKyBiZWdpbiwgc2l6ZSk7Cisg
ICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwogICAgIHJlc3VsdC0+c2V0U2hhcmluZ01vZGUo
c2hhcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGY2OTljOTQ1YWU0MDRlMmUwYmJkN2Nm
YmM1ZTk0OWQyODNlYThiZGQuLjMwZmJhNmE2YTA4NDZhMTcyYjM5ZjE2N2NhMmU0NGMwMDFiZjI1
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAt
MTI4LDggKzEyOCw4IEBAIGNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZD
b3VudGVkPEFycmF5QnVmZmVyPiB7CiAKICAgICBpbmxpbmUgc2l6ZV90IGdjU2l6ZUVzdGltYXRl
SW5CeXRlcygpIGNvbnN0OwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luKSBjb25zdDsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBSZWY8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdp
biwgZG91YmxlIGVuZCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmPEFycmF5QnVm
ZmVyPiBzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0OwogICAgIAogICAgIGlubGluZSB2b2lkIHBp
bigpOwogICAgIGlubGluZSB2b2lkIHVucGluKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgY2xhc3Mg
QXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsK
ICAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVJbnRlcm5hbChBcnJheUJ1ZmZlckNv
bnRlbnRzJiYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAgICAgc3RhdGljIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0aW9uUG9saWN5KTsKICAg
ICBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiYpOwotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworICAg
IFJlZjxBcnJheUJ1ZmZlcj4gc2xpY2VJbXBsKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQp
IGNvbnN0OwogICAgIGlubGluZSB1bnNpZ25lZCBjbGFtcEluZGV4KGRvdWJsZSBpbmRleCkgY29u
c3Q7CiAgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcFZhbHVlKGRvdWJsZSB4LCB1bnNp
Z25lZCBsZWZ0LCB1bnNpZ25lZCByaWdodCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwCmluZGV4IGQxYTZjMmI5NmNhNWE4ZmY3ZjdhMzE0ZTYwMmExYWNhODI1NGMxMjguLjY0ZmZm
NGE4N2IwNWMzOThjODgxMWU4ZGI2YzVkM2Q2NmExMDA4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8gPSB7CiAKIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJiB2bSkKICAgICA6
IEJhc2Uodm0sIHZtLmFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZS5nZXQo
KSkKLSAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQor
ICAgICwgbV9zZXQoYWRvcHRSZWYoKm5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQogewog
fQogCkBAIC02Miw3ICs2Miw3IEBAIFN0cnVjdHVyZSogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQogCiB2b2lkIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0gICAgc2V0KCktPmZpcmVBbGwoKnZtKCksICJB
cnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CisgICAgbV9zZXQtPmZpcmVBbGwoKnZtKCksICJB
cnJheSBidWZmZXIgd2FzIG5ldXRlcmVkIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuaAppbmRleCA5YTZmNzFhOTY4Y2MxOTQ2YTBkNzkzNjExZTA1
MmJkNmViYmUwMWE3Li5lNWQ2ZDA5NzRhNThlYmIwYjNhM2U4ODE1NTQ0YTVhNThmYzQyMzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaApAQCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOwogICAgIAotICAg
IFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CisgICAgV2F0Y2hw
b2ludFNldCYgc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGZp
cmVBbGwoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQoVk0mKTsKICAgICAKLSAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7Cisg
ICAgUmVmPFdhdGNocG9pbnRTZXQ+IG1fc2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCmluZGV4IDZjMGI5NzEwNWI3ZTc3MTk2OTdiNTQyMWEyNjM2ZjFhNGFmMmUw
N2UuLjFkMzJjZjMyYjI3N2ExNThkOWUxY2U1NWQ1ZjFjYzRhYThkOTI3MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCkBAIC01Niw5ICs1Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxz
ZQogICAgICAgICBlbmQgPSB0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKTsKICAgICAK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+
c2xpY2UoYmVnaW4sIGVuZCk7Ci0gICAgaWYgKCFuZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CisgICAg
YXV0byBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwog
ICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3Qodm0p
LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCmluZGV4IGI3NTFlZWE5ZjU1MjQyNzQwZGQyN2ZmMGI5ODNhMGIyZDBkMjY0Njku
LmRmMWY0ZGY5MDQ2YTQ1ODJiY2MwNDk1MzM5ZWVjZWJkYTJjYTlhYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3Rl
bUFjY2VzcyhOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDYuMi4gTGV0IGltcGxlbWVudGF0aW9uIGJlIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiBrZXlTeXN0ZW0uCi0gICAgICAgIFJlZlB0cjxDRE0+IGltcGxlbWVudGF0aW9uID0gQ0RNOjpj
cmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7CisgICAgICAgIGF1dG8gaW1wbGVtZW50YXRpb24g
PSBDRE06OmNyZWF0ZShkb2N1bWVudCwga2V5U3lzdGVtKTsKICAgICAgICAgdHJ5TmV4dFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3VwcG9y
dGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCA0ODk4Y2NjNjNhYzJm
NDJlYTcwZTA3YTgzZTQ1YmJkNWJmNDY0MmZiLi5kYTZkNGQzNjg3ZmEwZGFiOWJjNzEyNDIzMzlj
NDIwZjNjYzdmMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCkBAIC0yNDEsOSArMjQxLDkgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlB
c0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIGNvbnMKICAgICBpZiAo
aXNVUkxTZWFyY2hQYXJhbXMoKSkKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc0Jsb2IoKSkgewotICAgICAg
ICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGF1
dG8gYm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICAgICAgYm9keS0+YXBwZW5kQmxvYihi
bG9iQm9keSgpLnVybCgpKTsKLSAgICAgICAgcmV0dXJuIGJvZHk7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGJvZHkpOwogICAgIH0KICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQogICAgICAgICBy
ZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCksIGFycmF5QnVm
ZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CkBAIC0yNTEsOSArMjUxLDkgQEAgUmVmUHRyPEZvcm1E
YXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIGNvbnMKICAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoYXJyYXlCdWZmZXJW
aWV3Qm9keSgpLmJhc2VBZGRyZXNzKCksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0Zvcm1EYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keSA9IGNv
bnN0X2Nhc3Q8Rm9ybURhdGEqPigmZm9ybURhdGFCb2R5KCkpOworICAgICAgICBhdXRvIGJvZHkg
PSBtYWtlUmVmKGNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSkpOwogICAgICAg
ICBib2R5LT5nZW5lcmF0ZUZpbGVzKCZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkpOwotICAg
ICAgICByZXR1cm4gYm9keTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoYm9keSk7CiAgICAgfQog
ICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCiAgICAgICAgIHJldHVybiBG
b3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMmIz
MzNlNTE2YmVhZDdmZjY0OWY0ZTgxZjE0NmJlZTk4NjI5NTQ1OC4uNTUzNjg5NDU3MDkwY2JkNzVk
MzkwODFjNjYzNDYzNTQ2ZGNmNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTMwNCwxMCArMzA0LDEwIEBAIHZvaWQg
R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihSZWY8UG9zaXRpb25DYWxsYmFjaz4mJiBz
dWNjZXNzQ2FsbGJhY2ssIFJlCiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOworICAg
IGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOwor
ICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKLSAgICBtX29uZVNob3RzLmFkZChu
b3RpZmllcik7CisgICAgbV9vbmVTaG90cy5hZGQoV1RGTW92ZShub3RpZmllcikpOwogfQogCiBp
bnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3Vj
Y2Vzc0NhbGxiYWNrLCBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJh
Y2ssIFBvc2l0aW9uT3B0aW9ucyYmIG9wdGlvbnMpCkBAIC0zMTUsMTQgKzMxNSwxNCBAQCBpbnQg
R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUmVmPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vz
c0NhbGxiYWNrLCBSZWZQdHI8UAogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0
ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2sp
LCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkpOwor
ICAgIGF1dG8gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykp
OworICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5wdHIoKSk7CiAKICAgICBpbnQgd2F0Y2hJRDsK
ICAgICAvLyBLZWVwIGFza2luZyBmb3IgdGhlIG5leHQgaWQgdW50aWwgd2UncmUgZ2l2ZW4gb25l
IHRoYXQgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlLgogICAgIGRvIHsKICAgICAgICAgd2F0Y2hJRCA9
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y2lyY3VsYXJTZXF1ZW50aWFsSUQoKTsKLSAgICB9
IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgV1RGTW92ZShub3RpZmllcikpKTsKKyAg
ICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJRCwgbm90aWZpZXIuY29weVJlZigpKSk7
CiAgICAgcmV0dXJuIHdhdGNoSUQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyNThkODlhNWFkYWJjYTU4OGExOWE0OGQ5
NzhmNmVlMjIxZjhkZTdlLi4xODQ3NDM5MTkwYThiNzliZWY3MDY0MzJmZDJmOWQ3NTU2OTA3MzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC05NywxMSArOTcsMTEgQEAgdWludDY0X3QgSURCRGF0YWJhc2U6OnZlcnNpb24oKSBj
b25zdAogICAgIHJldHVybiBtX2luZm8udmVyc2lvbigpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAorUmVmPERPTVN0cmlu
Z0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgp
OworICAgIGF1dG8gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwog
ICAgIGZvciAoYXV0byYgbmFtZSA6IG1faW5mby5vYmplY3RTdG9yZU5hbWVzKCkpCiAgICAgICAg
IG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChuYW1lKTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5z
b3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aAppbmRleCBhMzgzMTY2ZDhiZjdlYmNkNGUwOTM5NTk0MDIyZGY0OTdmMTVlZTM4Li5mYzNlMTJi
ZjUzZmUwN2Y2Y2RjMTk4YjllZTYxNTdjOTQ4MjY5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
SURCRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBw
dWJsaWMgRXZlbnRUYXJnZXQKICAgICAvLyBJREJEYXRhYmFzZSBJREwKICAgICBjb25zdCBTdHJp
bmcgbmFtZSgpIGNvbnN0OwogICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdDsKLSAgICBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OworICAgIFJlZjxET01T
dHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgT2JqZWN0
U3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4ga2V5UGF0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCA0YmJkZTJiYmViNTkxMWZiMzExMWNiMzUxN2ZjZjc2YTIzM2EyOTIzLi42NmNl
YzBjZTY2NTMxMTg3NjUyNzBlMGFkMzE2MTFjNzc5NjYzOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xMjIsMTEg
KzEyMiwxMSBAQCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6Omtl
eVBhdGgoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCi1SZWZQdHI8
RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAorUmVmPERP
TVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGluZGV4TmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKIAogICAgIGlmICghbV9kZWxldGVkKSB7CiAgICAgICAgIGZvciAoYXV0
byYgbmFtZSA6IG1faW5mby5pbmRleE5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA2ZmRkM2YzZjAwOGZjYzEwMmY3
Mzc3MjBlNTE3MjE0Y2ZmZDE5MGYyLi5jZmM3ZGY3MjBjY2E2OTc0OGZkYzY1NTEyYjlmMjYyNTJm
NmQ2ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwg
OiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNv
bnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7Ci0gICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKKyAgICBSZWY8RE9NU3RyaW5nTGlzdD4g
aW5kZXhOYW1lcygpIGNvbnN0OwogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbigpOwog
ICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmRmZmU2OGUxMmNk
MjRkZTQ2NjdlODI3MWZjOTc5ZjdhYmFjMmUxZi4uYjgyYjY2YTFkMjNmN2FmNTQzODNiMjkzM2My
NTNlYzQzMzYxMzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzcyLDEzICszNzIsMTMgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIG1fb3BlblJl
cXVlc3RzLnJlbW92ZSgmcmVxdWVzdCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVk
dWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9w
ZXJhdGlvbikKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQo
IW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVy
KCkpKTsKICAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKTsKLSAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVy
YXRpb24pOworICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9w
ZXJhdGlvbi5jb3B5UmVmKCkpOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlk
ZW50aWZpZXIsIFdURk1vdmUob3BlcmF0aW9uKSk7CiAKICAgICBzY2hlZHVsZVBlbmRpbmdPcGVy
YXRpb25UaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKaW5kZXggNWI4NDk4NjQ0ZmQ5M2Y4OGVmZjBjYjZmY2I3YzYyMmQxNjRi
YmM2YS4uMWY3Njc1M2JlZDViNTVhODcxMmQ3YTJkZjUyYmRkOGNmODBmOGM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0x
NjIsNyArMTYyLDcgQEAgY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZlbnQKICAgICB2b2lkIGZpbmlzaEFi
b3J0T3JDb21taXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMoY29uc3Qg
SURCRXJyb3ImKTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOworICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24o
UmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOwogICAgIHZvaWQgcGVuZGlu
Z09wZXJhdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
RmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBlODU1MTI1MzFiNDY0
ZDNkMzYxZTM0YjNiODlhYWMxMzZkMGIxZmVjLi44ZGRiNTZlMTc4YjcyZWYyMWE2NjZlYjE2OWRm
YzE2ZWU5ODkyZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtMTgxLDQwICsx
ODEsMzcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGljIFRy
YW5zYWN0aW9uT3BlcmF0aW9uIHsKICAgICB9CiB9OwogCi1pbmxpbmUgUmVmUHRyPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK2lubGluZSBSZWY8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAogICAgIElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBs
ZXRlKShjb25zdCBJREJSZXN1bHREYXRhJiksCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipw
ZXJmb3JtKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYpKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0g
bmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDw+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVy
Zm9ybSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPD4odHJhbnNhY3Rpb24sIGNvbXBsZXRl
LCBwZXJmb3JtKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDE+Ci1S
ZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAor
UmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAg
ICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246
Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEpLAogICAgIGNvbnN0IFAx
JiBwYXJhbWV0ZXIxKQogewotICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3Bl
cmF0aW9uSW1wbDxNUDE+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVy
MSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMT4odHJhbnNhY3Rpb24sIGNvbXBsZXRl
LCBwZXJmb3JtLCBwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDI+Ci1SZWZQdHI8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoY29uc3Qg
SURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJh
bnNhY3Rpb25PcGVyYXRpb24mLCBNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEs
CiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgY29tcGxldGUs
IHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOwotICAgIHJldHVybiBhZG9wdFJlZihv
cGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9u
SW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIx
LCBwYXJhbWV0ZXIyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDM+Ci1S
ZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAor
UmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAg
ICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246
Oipjb21wbGV0ZSkoY29uc3QgSURCUmVzdWx0RGF0YSYpLAogICAgIHZvaWQgKElEQlRyYW5zYWN0
aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBNUDEsIE1QMiwgTVAzKSwKQEAg
LTIyMiwyNCArMjE5LDIyIEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3Qg
UDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9y
bSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25PcGVy
YXRpb25JbXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCBjb21wbGV0ZSwgcGVyZm9ybSwg
cGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAxPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVh
dGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAog
ICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21w
bGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwKICAgICB2b2lkIChJREJU
cmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgTVAxKSwKICAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICBhdXRvIG9wZXJhdGlvbiA9IG5ldyBUcmFuc2Fj
dGlvbk9wZXJhdGlvbkltcGw8TVAxPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBl
cmZvcm0sIHBhcmFtZXRlcjEpOwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDE+KHRyYW5z
YWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAyPgotUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigKK1JlZjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24oCiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIElEQlJlcXVlc3QmIHJl
cXVlc3QsCiAgICAgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYs
IGNvbnN0IElEQlJlc3VsdERhdGEmKSwKQEAgLTI0NywxMiArMjQyLDExIEBAIFJlZlB0cjxUcmFu
c2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgY29uc3Qg
UDEmIHBhcmFtZXRlcjEsCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgYXV0byBv
cGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2Fj
dGlvbiwgcmVxdWVzdCwgY29tcGxldGUsIHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIp
OwotICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVl
c3QsIGNvbXBsZXRlLCBwZXJmb3JtLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1l
IFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1SZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAorUmVmPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sCiAgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKICAgICB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpLApAQCAtMjYx
LDggKzI1NSw3IEBAIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBh
cmFtZXRlcjMpCiB7Ci0gICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0ZSwgcGVy
Zm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25P
cGVyYXRpb25JbXBsPE1QMSwgTVAyLCBNUDM+KHRyYW5zYWN0aW9uLCByZXF1ZXN0LCBjb21wbGV0
ZSwgcGVyZm9ybSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMykpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAppbmRleCAxNGJiOTc3NTM2YmJmYmZmMmVhYzYz
MDkwNjQwOTQ0MGRiZmEzY2ZjLi4zYWE0M2E5OWFlMDk4MWM4ZmMwZGY1MTZjYmNlYTZmYjQxODc2
MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuY3BwCkBAIC0xMTAsOCArMTEwLDcgQEAgdm9pZCBNZWRpYURldmljZXM6OmdldFVz
ZXJNZWRpYShjb25zdCBTdHJlYW1Db25zdHJhaW50cyYgY29uc3RyYWludHMsIFByb21pc2UmJgog
ICAgICAgICB2aWRlb0NvbnN0cmFpbnRzLnNldERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKCk7CiAK
ICAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRvY3VtZW50LCB7
IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6VXNlck1lZGlhLCBXVEZNb3ZlKGF1ZGlvQ29uc3Ry
YWludHMpLCBXVEZNb3ZlKHZpZGVvQ29uc3RyYWludHMpIH0sIFdURk1vdmUocHJvbWlzZSkpOwot
ICAgIGlmIChyZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJlcXVlc3Qt
PnN0YXJ0KCk7CiAKICAgICByZXR1cm47CiB9CkBAIC0xMjMsOCArMTIyLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFEZXZpY2VzOjpnZXREaXNwbGF5TWVkaWEoY29uc3QgU3RyZWFtQ29uc3Ry
YWludHMmIGNvbnN0cmEKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CiAKICAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoKmRv
Y3VtZW50LCB7IE1lZGlhU3RyZWFtUmVxdWVzdDo6VHlwZTo6RGlzcGxheU1lZGlhLCB7IH0sIGNy
ZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3RyYWludHMudmlkZW8pIH0sIFdURk1vdmUocHJvbWlz
ZSkpOwotICAgIGlmIChyZXF1ZXN0KQotICAgICAgICByZXF1ZXN0LT5zdGFydCgpOworICAgIHJl
cXVlc3QtPnN0YXJ0KCk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXgg
ZTEwYjk2YmM5MWQ2ZmU1OGNjMGFiOWVjYTYxMjZhZjJiMzY4MTkzYy4uYTFjYjc0YmE2MTliYjcy
NGU0YTZlMDU3YjlkOWZkYjkzODA3MDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC00OSw5ICs0OSw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVz
ZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhU3RyZWFtUmVx
dWVzdCYmIHJlcXVlc3QsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJl
YW0+PiYmIHByb21pc2UpCitSZWY8VXNlck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwg
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+JiYgcHJvbWlzZSkK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGRvY3Vt
ZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHByb21pc2UpKSk7CisgICAgYXV0byByZXN1
bHQgPSBhZG9wdFJlZigqbmV3IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocHJvbWlzZSkpKTsKICAgICByZXN1bHQtPnN1c3BlbmRJZk5lZWRlZCgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IGRlNTFmZDlmYzQzZWIyOTdl
NWQyYTI3ZTc2NGFhNGQyN2MzMGE1ZjEuLjZkZTdlNWM4ZDdiYTQxM2UyMDM2OGU1NDAyNzgwNzUx
N2I3NTFkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCiBjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1l
ZGlhUmVxdWVzdD4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFTdHJlYW1S
ZXF1ZXN0JiYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8TWVkaWFTdHJlYW0+PiYm
KTsKKyAgICBzdGF0aWMgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShEb2N1bWVudCYsIE1l
ZGlhU3RyZWFtUmVxdWVzdCYmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPE1lZGlh
U3RyZWFtPj4mJik7CiAgICAgdmlydHVhbCB+VXNlck1lZGlhUmVxdWVzdCgpOwogCiAgICAgdm9p
ZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5jcHAKaW5kZXggMGZmMGUyMDQzODBlN2ZkZGJjMDA4MGJjNTRjYWE4N2E5NzNlMDhlZi4uNzUw
NjhlMTkwYTE5YTQ0OTQwNjU5ZGJkZDM3NGRmMjc4NGQ5YmI4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNp
Z25lZCBudW1iZXJPZlZhbHVlcywgYm8KIAogICAgIC8vIE5vdyBzdW0gYWxsIG9mIHRoZSBhdWRp
by1yYXRlIGNvbm5lY3Rpb25zIHRvZ2V0aGVyICh1bml0eS1nYWluIHN1bW1pbmcganVuY3Rpb24p
LgogICAgIC8vIE5vdGUgdGhhdCBjb25uZWN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBtb25vLCBi
dXQgd2UgbWl4IGRvd24gdG8gbW9ubyBpZiBuZWNlc3NhcnkuCi0gICAgUmVmUHRyPEF1ZGlvQnVz
PiBzdW1taW5nQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCBudW1iZXJPZlZhbHVlcywgZmFsc2Up
OworICAgIGF1dG8gc3VtbWluZ0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVyT2ZWYWx1
ZXMsIGZhbHNlKTsKICAgICBzdW1taW5nQnVzLT5zZXRDaGFubmVsTWVtb3J5KDAsIHZhbHVlcywg
bnVtYmVyT2ZWYWx1ZXMpOwogCiAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX3JlbmRlcmluZ091
dHB1dHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDg4YWUwNGFiYmUzOWU1MTczNGViYjAxN2UyMGYy
NjFmYmIwNDFlNTYuLmI5Y2MyMGNkMmU1YWZjNzYxMWIzNzAzMDZlMTA0MTI4NDdiMjA4ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcApAQCAtODcsOCArODcsOCBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmluaXRpYWxpemUoKQogICAgIC8vIENyZWF0ZSBkb3VibGUgYnVmZmVycyBvbiBib3RoIHRoZSBp
bnB1dCBhbmQgb3V0cHV0IHNpZGVzLgogICAgIC8vIFRoZXNlIEF1ZGlvQnVmZmVycyB3aWxsIGJl
IGRpcmVjdGx5IGFjY2Vzc2VkIGluIHRoZSBtYWluIHRocmVhZCBieSBKYXZhU2NyaXB0LgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPEF1ZGlv
QnVmZmVyPiBpbnB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzID8gQXVkaW9CdWZm
ZXI6OmNyZWF0ZShtX251bWJlck9mSW5wdXRDaGFubmVscywgYnVmZmVyU2l6ZSgpLCBzYW1wbGVS
YXRlKSA6IDA7Ci0gICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gb3V0cHV0QnVmZmVyID0gbV9u
dW1iZXJPZk91dHB1dENoYW5uZWxzID8gQXVkaW9CdWZmZXI6OmNyZWF0ZShtX251bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAwOworICAgICAgICBhdXRv
IGlucHV0QnVmZmVyID0gbV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3Jl
YXRlKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDog
MDsKKyAgICAgICAgYXV0byBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6
ZSgpLCBzYW1wbGVSYXRlKSA6IDA7CiAKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKGlu
cHV0QnVmZmVyKTsKICAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChvdXRwdXRCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuY3BwCmluZGV4IDA5MWEzMGEyNmY1MTliZGM2ODM5ZDBiYzY3ZjA1ODY2M2I2NzRhZDEuLjdl
MTNkMDYwYjM1MTZkMjVlMGIyM2M5ZGQ2NDA0ZjdhYjA2MzViYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKQEAgLTE0NSw3
ICsxNDUsNyBAQCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8U1FMUmVzdWx0U2V0PiByZXN1bHRTZXQgPSBTUUxS
ZXN1bHRTZXQ6OmNyZWF0ZSgpOworICAgIGF1dG8gcmVzdWx0U2V0ID0gU1FMUmVzdWx0U2V0Ojpj
cmVhdGUoKTsKIAogICAgIC8vIFN0ZXAgc28gd2UgY2FuIGZldGNoIHRoZSBjb2x1bW4gbmFtZXMu
CiAgICAgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29s
IFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSYgZGIpCiAgICAgLy8gRm9yIG5vdywgdGhp
cyBzZWVtcyBzdWZmaWNpZW50CiAgICAgcmVzdWx0U2V0LT5zZXRSb3dzQWZmZWN0ZWQoZGF0YWJh
c2UubGFzdENoYW5nZXMoKSk7CiAKLSAgICBtX3Jlc3VsdFNldCA9IHJlc3VsdFNldDsKKyAgICBt
X3Jlc3VsdFNldCA9IFdURk1vdmUocmVzdWx0U2V0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKaW5kZXggM2QxNTRhYzVhMjFh
ZTYxYzY1N2EzMDBmYWQ5NjM2YmEwZDgzZDkwNy4uMGRjNDExYWUzMDNlNGIwODZlZGJmOWY4Njhm
ODVkYjRkMWFjNjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3Bw
CkBAIC00MCwxMCArNDAsNyBAQCBSZWY8V2ViR1BVPiBXZWJHUFU6OmNyZWF0ZSgpCiB2b2lkIFdl
YkdQVTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIFdlYkdQVUFkYXB0ZXJQcm9taXNlJiYgZGVmZXJyZWQpIGNvbnN0CiB7CiAgICAgYXV0
byBhZGFwdGVyID0gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGRlc2NyaXB0b3IpOwotICAgIGlmICgh
YWRhcHRlcikKLSAgICAgICAgZGVmZXJyZWQucmVqZWN0KCk7Ci0KLSAgICBkZWZlcnJlZC5yZXNv
bHZlKCphZGFwdGVyKTsKKyAgICBkZWZlcnJlZC5yZXNvbHZlKGFkYXB0ZXIuZ2V0KCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuY3BwCmluZGV4IGVlZWM0ZGY2OGM2MmU0MTdkNGRiM2I3MTEyMjM0
ZGYzY2UyZmU5YTguLjc3ZjlmNDkxZTRmYzE2MTllMDBkYjkyNjc0OGVhYWJhYmJkNTExYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCkBA
IC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BV
QWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorUmVmPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0
ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBG
SVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9yLgotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR1BVQWRhcHRlcihkZXNjcmlwdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
R1BVQWRhcHRlcihkZXNjcmlwdG9yKSk7CiB9CiAKIFdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0
ZXIoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmgKaW5kZXggNGI4ZWZmNTIxM2I2
YmYyYzk1MDJlNjE2M2U2YTQ4ZDZkNDViM2ZlYy4uOGQwNGU1NGJmMmE2NDA4ZTllODgyNTRjODIw
NGNlYzU1YzE2ODA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0
b3I7CiAKIGNsYXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVBZGFw
dGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVBZGFwdGVyPiBjcmVhdGUo
Y29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVUFk
YXB0ZXI+IGNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwogCiAgICAgUmVm
UHRyPFdlYkdQVURldmljZT4gY3JlYXRlRGV2aWNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCmluZGV4IDM0OTQxZDBlYTVmNzkyNTFjYjQ4
ZGRlYmY3NDEzNDNmOWU0YmE3MDkuLjkwOWE1Yzc2NDJmMjRhZjY0MjQ4ZDk5OWRjMzFjNGU0MjBm
NDA4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxX
ZWJHUFVCdWZmZXI+IFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVy
KQorUmVmPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVCdWZmZXIoV1RGTW92
ZShidWZmZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkpOwogfQogCiBXZWJHUFVCdWZmZXI6OldlYkdQVUJ1ZmZlcihSZWY8R1BVQnVm
ZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVm
ZmVyLmgKaW5kZXggZTI3NjQyNWJkNDJiNWQ2ODJmYmUyNDI4YTQwMDZlMjNmNDkyMzg3NS4uNTFh
ZWJmMmUyYTc4NWExOWRhM2IwZGI2ODY4YWRhY2Q3Y2JjYjI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHUFVCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4g
Y3JlYXRlKFJlZjxHUFVCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQnVmZmVyPiBj
cmVhdGUoUmVmPEdQVUJ1ZmZlcj4mJik7CiAKICAgICBjb25zdCBHUFVCdWZmZXImIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggZGJiODAz
YmUyNzMyMWI5YmU2Y2RmNTlkOTExYWZiYzAzMzg0Mjk0Mi4uYjZlY2FhYTE1ZTQyYWRjOGUyZTUx
YTQ1ZTI3YTRkNDY4NGExMmE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29t
bWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BV
Q29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBXZWJHUFVDb21t
YW5kQnVmZmVyOjpXZWJHUFVDb21tYW5kQnVmZmVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1
ZmZlcikKQEAgLTY1LDggKzY1LDkgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBX
ZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGUKICAgICAgICAg
Z3B1UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgeyBjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVu
dC0+dGV4dHVyZSgpLCBjb2xvckF0dGFjaG1lbnQuY2xlYXJDb2xvciB9KTsKICAgICB9CiAKLSAg
ICBhdXRvIGVuY29kZXIgPSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG1fY29tbWFuZEJ1
ZmZlci5nZXQoKSwgV1RGTW92ZShncHVSZW5kZXJQYXNzRGVzY3JpcHRvcikpOwotICAgIHJldHVy
biBlbmNvZGVyID8gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rl
ci5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZW5jb2RlciA9IEdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUobV9jb21tYW5kQnVmZmVyLmdldCgpLCBXVEZNb3Zl
KGdwdVJlbmRlclBhc3NEZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXgg
NzJkZjMxMmZmODgwYjc4ZjdlY2ExMTY5MzI1MjYzOTI0MzdiZDFlZi4uOThlZTQwY2RkZDQ0NGIx
MDU2NWJjZDQ3ZDM3NDg0MzVjYmNiZTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiAKIGNsYXNzIFdlYkdQVUNvbW1hbmRCdWZm
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNvbW1h
bmRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRl
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKIAogICAgIGNvbnN0IEdQVUNvbW1hbmRCdWZmZXIm
IGNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5k
ZXggOTQxNWMzNWZiMWIxNGI1MzUyMTAxOGQzZDdiMTYwNjNjMWYyYzMzYi4uNmNiZTQzMWU2NGVk
MjgzZmE1OGU5OWY2Y2NjZTY3ZjIyNjYzYmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBAIC00OSw4ICs0OSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGUoUmVm
PFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKIHsKLSAgICBhdXRvIGRldmljZSA9IEdQVURldmlj
ZTo6Y3JlYXRlKCk7IC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4gY3Jl
YXRpbmcgbV9kZXZpY2UuCi0gICAgcmV0dXJuIGRldmljZSA/IGFkb3B0UmVmKG5ldyBXZWJHUFVE
ZXZpY2UoV1RGTW92ZShhZGFwdGVyKSwgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxw
dHI7CisgICAgaWYgKGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjpjcmVhdGUoKSkgLy8gRklYTUU6
IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVEZXZpY2UoV1RGTW92ZShhZGFwdGVyKSwgZGV2
aWNlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV2ViR1BV
RGV2aWNlOjpXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQ
VURldmljZT4mJiBkZXZpY2UpCkBAIC02Myw4ICs2NCw5IEBAIFdlYkdQVURldmljZTo6V2ViR1BV
RGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2
aWNlCiBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJH
UFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
VmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9yIG5lZWRlZD8KLSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2
aWNlLT5jcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iuc2l6ZSwg
ZGVzY3JpcHRvci51c2FnZSB9KTsKLSAgICByZXR1cm4gYnVmZmVyID8gV2ViR1BVQnVmZmVyOjpj
cmVhdGUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byBi
dWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgeyBkZXNj
cmlwdG9yLnNpemUsIGRlc2NyaXB0b3IudXNhZ2UgfSkpCisgICAgICAgIHJldHVybiBXZWJHUFVC
dWZmZXI6OmNyZWF0ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIFJlZjxXZWJHUFVCaW5kR3JvdXBMYXlvdXQ+IFdlYkdQVURldmljZTo6Y3JlYXRl
QmluZEdyb3VwTGF5b3V0KFdlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKSBjb25zdApAQCAtODYsOCArODgsOSBAQCBSZWY8V2ViR1BVUGlwZWxpbmVMYXlvdXQ+IFdl
YkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoV2ViR1BVUGlwZWxpbmVMYXlvdQogUmVm
UHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUo
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFdoYXQgY2FuIGJlIHZhbGlkYXRlZCBoZXJlPwotICAgIGF1dG8gbW9kdWxlID0g
bV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsg
ZGVzY3JpcHRvci5jb2RlIH0pOwotICAgIHJldHVybiBtb2R1bGUgPyBXZWJHUFVTaGFkZXJNb2R1
bGU6OmNyZWF0ZShtb2R1bGUucmVsZWFzZU5vbk51bGwoKSkgOiBudWxscHRyOworICAgIGlmIChh
dXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVNo
YWRlck1vZHVsZTo6Y3JlYXRlKG1vZHVsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogc3RhdGljIE9wdGlvbmFsPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
PiB2YWxpZGF0ZUFuZENvbnZlcnRQaXBlbGluZVN0YWdlKGNvbnN0IFdlYkdQVVBpcGVsaW5lU3Rh
Z2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpAQCAtMTA4LDE0ICsxMTEsMTYgQEAgUmVmUHRyPFdl
YkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKFdl
YkdQVVJlbmRlclBpcGUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0
byBwaXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKCp2ZXJ0ZXhTdGFnZSksIFdURk1vdmUoKmZyYWdtZW50
U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5LCBkZXNjcmlwdG9yLmlucHV0U3Rh
dGUgfSk7Ci0gICAgcmV0dXJuIHBpcGVsaW5lID8gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0
ZShwaXBlbGluZS5yZWxlYXNlTm9uTnVsbCgpKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8gcGlw
ZWxpbmUgPSBtX2RldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yIHsgV1RGTW92ZSgqdmVydGV4U3RhZ2UpLCBXVEZNb3ZlKCpmcmFnbWVudFN0YWdl
KSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlIH0p
KQorICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShwaXBlbGluZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgYXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZm
ZXIoKTsKLSAgICByZXR1cm4gY29tbWFuZEJ1ZmZlciA/IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNy
ZWF0ZShjb21tYW5kQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpIDogbnVsbHB0cjsKKyAgICBpZiAo
YXV0byBjb21tYW5kQnVmZmVyID0gbV9kZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSkKKyAg
ICAgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8V2ViR1BV
UXVldWU+IFdlYkdQVURldmljZTo6Z2V0UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDFh
MWM1MmNiYzk3NTBjYjc0YTZkYjc2NTdiMmNlODFkNmEwNzA4MWEuLmRhZjFiMDgyMjdkNDY1NjAz
OWMzNzJkMzUzMWMwZmY5ODY0N2I0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTM1LDkgKzM1
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRC
dWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29k
ZXIpCitSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZlciwgUmVmPEdQ
VVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpLCBXVEZNb3Zl
KGVuY29kZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIoV1RGTW92ZShjb21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOwogfQogCiBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQ
VUNvbW1hbmRCdWZmZXI+JiYgY3JlYXRvciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVu
Y29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIuaAppbmRleCAzMTI5NmUzZTllODI4ZTEwNDIxMGVkNDA1OTc4ZTJl
MmYzMWZjMDdmLi44N2E3ZWFmMTlmMDk5MDcxZGI3ZDNhZjBhOGQxNGEwMGVlOTJhNThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgV2ViR1BVQnVmZmVyOwogCiBjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJlbmRlclBhc3NF
bmNvZGVyPiYmKTsKIAogICAgIC8vIEZJWE1FOiBMYXN0IGFyZ3VtZW50IHNob3VsZCBiZSBWZWN0
b3I8dW5zaWduZWQgbG9uZz4uIFdoeSBpcyB0aGUgZ2VuZXJhdGVkIGNvZGUgaW5jb3JyZWN0bHkg
YXNzdW1pbmcgdGhlIElETCB3YW50cyBhIHNlcXVlbmNlPHVuc2lnbmVkIGludD4/CiAgICAgdm9p
ZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVm
ZmVyPj4mJiwgVmVjdG9yPHVuc2lnbmVkPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCAzY2NmM2MwZGEy
NjU1NmFmMzhmOTczODYyYTQ4OGVjMGMzMWVhOWZhLi4xMDZjNTc2ODBkOTc1NzkxZmZmMzM4MWMx
ZjlkNjYxMTM5Mjg2NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKK1Jl
ZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWY8
R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7CiB9
CiAKIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWY8R1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCAyYzhiODY2OGZhZjZiZTA5MTQ5
NDU1MWZjNzNjYWNkOTIwZjk3ZDIyLi4zOTE3ZmFkNzY3ZmNjYjBlZDc1YmRlYjc0Y2E2YTBkYTEz
Y2M4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVJl
bmRlclBpcGVsaW5lPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQ
aXBlbGluZT4gY3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisgICAgc3RhdGljIFJl
ZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJik7
CiAKICAgICBSZWY8R1BVUmVuZGVyUGlwZWxpbmU+IHJlbmRlclBpcGVsaW5lKCkgeyByZXR1cm4g
bV9yZW5kZXJQaXBlbGluZS5jb3B5UmVmKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKaW5kZXggZTgyM2IwNDRhOGYw
MmNkNmJjNTkyMzA0MWNmOGU1OTZiODYxYjk4ZS4uOTk0YzJlY2EwYTk4YmM1ZjZkMzY0ZDkzNjA5
ZGY5Y2QyYTFjN2YzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxl
OjpjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCitSZWY8V2ViR1BVU2hhZGVy
TW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYm
IG1vZHVsZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVNoYWRlck1vZHVsZShX
VEZNb3ZlKG1vZHVsZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJN
b2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7CiB9CiAKIFdlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BV
U2hhZGVyTW9kdWxlKFJlZjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAppbmRleCA0MjAy
OTk0ZDQ3ZWMyNGExZmUwOWE2ZWI0YzZmNzQ1N2EwYWM0MThkLi42NDY2MGIzMWU0NTZmZmEwODA1
NmRlZTU1YjZjYWQ0NWIzMzM3OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVNoYWRlck1vZHVsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BV
U2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmPEdQVVNoYWRlck1vZHVsZT4mJik7CisgICAgc3RhdGlj
IFJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmKTsK
IAogICAgIGNvbnN0IEdQVVNoYWRlck1vZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGUucHRyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmNwcAppbmRleCBjNjc4MGVmNjFiMDI5OWZlZTE5NWYxMjVmNTZjZTRkOGU4NjJj
NzI3Li45ZDlkN2Y5NjNiZDJlOTE1N2Q4NWNkZDM3YzE4MzA5ZTI2MzZjYWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcApAQCAtNDQsOCAr
NDQsOSBAQCBXZWJHUFVUZXh0dXJlOjpXZWJHUFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmIHRl
eHR1cmUpCiAKIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRl
RGVmYXVsdFRleHR1cmVWaWV3KCkKIHsKLSAgICBhdXRvIGdwdVRleHR1cmUgPSBtX3RleHR1cmUt
PmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOwotICAgIHJldHVybiBncHVUZXh0dXJlID8gV2Vi
R1BVVGV4dHVyZVZpZXc6OmNyZWF0ZShncHVUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpIDogbnVs
bHB0cjsKKyAgICBpZiAoYXV0byBncHVUZXh0dXJlID0gbV90ZXh0dXJlLT5jcmVhdGVEZWZhdWx0
VGV4dHVyZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUo
Z3B1VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuY3BwCmluZGV4IDA0NTlhNTNhMjg4ZWNmM2IyNjhmYzJj
MDY2NDViNzRiMTIzNDY1MWMuLjcyNjU5NDVhMjNlOWMxMGQyNmE3MDNkZmU0NDJkMGY0N2FiMGYw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1
cmVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0
dXJlVmlldy5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWZQdHI8V2ViR1BVVGV4dHVyZVZpZXc+IFdlYkdQVVRleHR1cmVWaWV3OjpjcmVhdGUoUmVmPEdQ
VVRleHR1cmU+JiYgdmlldykKK1JlZjxXZWJHUFVUZXh0dXJlVmlldz4gV2ViR1BVVGV4dHVyZVZp
ZXc6OmNyZWF0ZShSZWY8R1BVVGV4dHVyZT4mJiB2aWV3KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR1BVVGV4dHVyZVZpZXcoV1RGTW92ZSh2aWV3KSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdQVVRleHR1cmVWaWV3KFdURk1vdmUodmlldykpKTsKIH0KIAogV2ViR1BV
VGV4dHVyZVZpZXc6OldlYkdQVVRleHR1cmVWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHZpZXcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaApp
bmRleCA0MGZkODE0OTJiMDgxZGZjZGM5MWJlZjUzODJhZDNmNzk4YTkzNmY3Li5mYmViOGJjNjY1
NjA0Mjc3ZTBkZjM5NTAzZjg3OTFiZWNhMDkyYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmVWaWV3LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVVRleHR1cmVWaWV3PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxX
ZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGUoUmVmPEdQVVRleHR1cmU+JiYpOwogCiAgICAg
UmVmPEdQVVRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuY29weVJlZigpOyB9
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggZTI5Njk0NmRkZjI1YjRhZTYyNjZkOTVlYzJkMTBjNzNjNDRiNjM3Yi4uODA5
MDQxMTM1ZGVjMDk2ZmQ5MDNkNDFmNGUxNTc5YWExZDNlZWFlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzk5LDEzICsxNzk5LDEz
IEBAIFJlZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5n
ZShSZWZQdHI8UmFuZ2U+IG9yaWdpbmFsUmFuCiAgICAgaWYgKGVuZFBvc2l0aW9uLmlzTnVsbCgp
KQogICAgICAgICBlbmRQb3NpdGlvbiA9IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoJm9yaWdp
bmFsUmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHNlYXJj
aFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX2RvY3VtZW50LCBzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbik7Ci0gICAgaWYgKCFzZWFyY2hSYW5nZSB8fCBzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkp
CisgICAgYXV0byBzZWFyY2hSYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQ
b3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAgIGlmIChzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGZpbmRDbG9z
ZXN0UGxhaW5UZXh0KCpzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9m
ZnNldCk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwgc3RhcnRQ
b3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB1bnNpZ25lZCB0
YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVl
KTsKKyAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIG1h
dGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCiBzdGF0aWMgYm9vbCBpc1JlcGxhY2Vk
Tm9kZU9yQlIoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggNmZmNjQ0Y2Y1ZjBkMGEyOTgxYjRj
ZTdkOGFhYjkzMzY3NmNkMDlmMC4uZjdjZDNhYThhZGRhNmE0YmNmYTQxMDk0ZWQ0NThjYmMzN2Yx
ZmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmpl
Y3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhP
YmplY3RDYWNoZUF0ay5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZQogICAgICAgICAvLyBDb25zaWRlciBwcmV2aW91cyB0ZXh0IG9iamVjdHMgdGhhdCBtaWdo
dCBiZSBwcmVzZW50IGZvcgogICAgICAgICAvLyB0aGUgY3VycmVudCBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byBlbnN1cmUgd2UgZW1pdCB0aGUKICAgICAgICAgLy8gcmlnaHQgb2Zmc2V0IChlLmcu
IG11bHRpbGluZSB0ZXh0IGFyZWFzKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgMCwgbm9kZSwgMCk7Ci0g
ICAgICAgIG9mZnNldFRvRW1pdCA9IG9mZnNldCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UuZ2V0KCkpOworICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCwgbm9kZS0+cGFyZW50Tm9kZSgpLCAwLCBub2RlLCAwKTsKKyAgICAgICAgb2Zmc2V0VG9FbWl0
ID0gb2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSk7CiAgICAg
fQogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdyYXBwZXIsIGRldGFpbC5kYXRhKCksIG9m
ZnNldFRvRW1pdCwgdGV4dFRvRW1pdC5sZW5ndGgoKSwgdGV4dFRvRW1pdC51dGY4KCkuZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVIeXBlcmxpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKaW5kZXggYTZlOTYzZGVhYmY3ZDAxZjUwNzg5
M2IwMjYyMzIzNGY2MDhkYTYwNy4uYmMxNmU0YjI5MDMxMTM5ZGM2NGQ2YzIzNjg5YWVkOTQ2NzUw
NDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKQEAgLTI2MCw4ICsyNjAsOCBAQCBz
dGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0U3RhcnRJbmRleChBdGtIeXBl
cmxpbmsqIGxpbmspCiAgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCks
IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2RlKSwgZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKG5vZGUpKTsKLSAgICByZXR1cm4gZ2V0UmFuZ2VMZW5ndGhGb3JPYmplY3Qo
Y29yZU9iamVjdCwgcmFuZ2UuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJlbnROb2Rl
KSwgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpKTsKKyAgICByZXR1cm4gZ2V0UmFu
Z2VMZW5ndGhGb3JPYmplY3QoY29yZU9iamVjdCwgcmFuZ2UucHRyKCkpOwogfQogCiBzdGF0aWMg
Z2ludCB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rR2V0RW5kSW5kZXgoQXRrSHlwZXJsaW5rKiBs
aW5rKQpAQCAtMjg2LDggKzI4Niw4IEBAIHN0YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVIeXBl
cmxpbmtHZXRFbmRJbmRleChBdGtIeXBlcmxpbmsqIGxpbmspCiAgICAgaWYgKCFwYXJlbnROb2Rl
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwYXJl
bnROb2RlKSwgbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShub2RlKSk7Ci0gICAgcmV0dXJuIGdl
dFJhbmdlTGVuZ3RoRm9yT2JqZWN0KGNvcmVPYmplY3QsIHJhbmdlLmdldCgpKTsKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUocGFyZW50Tm9kZSksIGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUobm9kZSkp
OworICAgIHJldHVybiBnZXRSYW5nZUxlbmd0aEZvck9iamVjdChjb3JlT2JqZWN0LCByYW5nZS5w
dHIoKSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSXNW
YWxpZChBdGtIeXBlcmxpbmsqIGxpbmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHAKaW5kZXggMThjOWU5YjU3OTdjOTkxNmQyNjI1YTlmYjQwYzY3ZmY2MzEwMzdkZS4uZGE0MDJk
YTBiZTBjZmM0MTViMGVlZDU3YjQ0ZmYyZDc5YWJjYzgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcApAQCAtNDA2LDEzICs0MDYsMTMgQEAgc3RhdGljIHZvaWQgZ2V0U2Vs
ZWN0aW9uT2Zmc2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBW
aXNpYmwKIAogICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0ZWQgcmFuZ2Ug
aW5zaWRlIHRoZSBvYmplY3QuCiAgICAgUG9zaXRpb24gcGFyZW50Rmlyc3RQb3NpdGlvbiA9IGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
SW5QYXJlbnQgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9z
aXRpb24sIG5vZGVSYW5nZVN0YXJ0KTsKKyAgICBhdXRvIHJhbmdlSW5QYXJlbnQgPSBSYW5nZTo6
Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIHBhcmVudEZpcnN0UG9zaXRpb24sIG5vZGVSYW5nZVN0
YXJ0KTsKIAogICAgIC8vIFNldCB2YWx1ZXMgZm9yIHN0YXJ0IG9mZnNldHMgYW5kIGNhbGN1bGF0
ZSBpbml0aWFsIHJhbmdlIGxlbmd0aC4KICAgICAvLyBUaGVzZSB2YWx1ZXMgbWlnaHQgYmUgYWRq
dXN0ZWQgbGF0ZXIgdG8gY292ZXIgc3BlY2lhbCBjYXNlcy4KLSAgICBzdGFydE9mZnNldCA9IHdl
YkNvcmVPZmZzZXRUb0F0a09mZnNldChjb3JlT2JqZWN0LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHJhbmdlSW5QYXJlbnQuZ2V0KCksIHRydWUpKTsKLSAgICBSZWZQdHI8UmFuZ2U+IG5vZGVS
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQsIG5v
ZGVSYW5nZUVuZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChub2RlUmFuZ2UuZ2V0KCksIHRydWUpOworICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9m
ZnNldFRvQXRrT2Zmc2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFu
Z2VJblBhcmVudC5wdHIoKSwgdHJ1ZSkpOworICAgIGF1dG8gbm9kZVJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShub2RlLT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgbm9kZVJhbmdlRW5kKTsKKyAg
ICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5nZS5w
dHIoKSwgdHJ1ZSk7CiAKICAgICAvLyBTcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG9ubHkgcmVsZXZh
bnQgd2hlbiB3b3JraW5nIHdpdGggKl9FTkQgYm91bmRhcmllcy4KICAgICBpZiAoc2VsZWN0aW9u
LmFmZmluaXR5KCkgPT0gVVBTVFJFQU0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KaW5kZXggOGM3YjFjZjM4YjljYjg4ZGI3OGM2OThlNmEwNjc2NjQ5ZTJjMGU3NC4u
N2ZiNjJmOGU5ZDBhN2QzZWNhZTcwMmE0Mzk1NjJmYzFjNWMwMjM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTI0MDEsMTIgKzI0MDEsMTIgQEAgLSAoTlNS
YW5nZSlfY29udmVydFRvTlNSYW5nZTooUmFuZ2UgKilyYW5nZQogICAgIGlmICgmcmFuZ2UtPmVu
ZENvbnRhaW5lcigpICE9IHNjb3BlICYmICFyYW5nZS0+ZW5kQ29udGFpbmVyKCkuaXNEZXNjZW5k
YW50T2Yoc2NvcGUpKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRv
Y3VtZW50KCksIHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKKyAgICBhdXRvIHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2NvcGUtPmRv
Y3VtZW50KCksIHNjb3BlLCAwLCAmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKICAgICBBU1NFUlQoJnRlc3RSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9PSBz
Y29wZSk7Ci0gICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHRlc3RSYW5nZS5nZXQoKSk7CisgICAgaW50IHN0YXJ0UG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5wdHIoKSk7CiAgICAgdGVzdFJhbmdlLT5zZXRFbmQocmFu
Z2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCkpOwogICAgIEFTU0VSVCgmdGVz
dFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKLSAgICBpbnQgZW5kUG9zaXRpb24g
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CisgICAgaW50IGVu
ZFBvc2l0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UucHRyKCkpOwog
ICAgIHJldHVybiBOU01ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiAtIHN0YXJ0
UG9zaXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3RUYXNrLmNwcAppbmRleCA5ZmMzMDZjY2UwZmEzZThhODVjN2NmZWUwZGEx
MzYzODg1MGQ4NzE1Li4zNTQ1ZDVkNTExZmY4NjgxOThiMTkzNTJhMDhkNGUxZDI1NmEzM2NkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRh
c2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
VGFzay5jcHAKQEAgLTc4LDggKzc4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RDYWxsYmFjayBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+LAogSlNHbG9i
YWxPYmplY3RUYXNrOjpKU0dsb2JhbE9iamVjdFRhc2soSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogICAgIDogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayh7IH0pCiB7Ci0gICAgUmVmUHRyPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IGNh
bGxiYWNrID0gSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgV1RG
TW92ZSh0YXNrKSk7Ci0gICAgbV90YXNrID0gW2NhbGxiYWNrXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNHbG9iYWxPYmplY3RDYWxsYmFjazo6Y3Jl
YXRlKGdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSk7CisgICAgbV90YXNrID0gW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAg
ICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA2MGI4YzUyNTcyNGVhNzg3MDljOTgxZWZh
MmE5M2NiODUzN2ZmOTkzLi5jNzQzMzRlOGE3NDYzMmZmN2U2NjU3ZGQyZGE5ZjQxMDY1ODZiNWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
QEAgLTIwOSw4ICsyMDksOCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVu
dExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogewogICAgIEpTRE9N
V2luZG93QmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9i
amVjdCk7CiAKLSAgICBSZWZQdHI8SlNNaWNyb3Rhc2tDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU01p
Y3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAg
YXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90
YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gY2Fs
bGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0
YXNrKSk7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNh
bGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlz
T2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCAzODBhZDViZDE1MjAxM2U4OTZiODdhYjQxNjU1NTc2MjJmN2UxNmNm
Li5kODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CkBAIC0xMzMsOSArMTMzLDkgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVU
YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIHsKICAgICBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlJj4ob2JqZWN0KTsKIAotICAgIFJlZlB0cjxKU01pY3JvdGFza0NhbGxiYWNr
PiBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZN
b3ZlKHRhc2spKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29u
dGV4dCwgW2NhbGxiYWNrXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tR
dWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggY2E0Zjg3MTg5
Y2MyOTUxOTk2Yzg5ZDEzOGMzNTY2YTMxYzBjYzI0OS4uZGY5NDc2YTE2YmIzZmJjOGM0OGM2ZWM3
ZDY4YjNjMmViZDY1YTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC04NSwxMCArODUsMTAgQEAgUmVmUHRyPEpTQzo6Qmlu
ZGluZ3M6Okluc3RhbmNlPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZv
cldpZGdldCgKICAgICAgICAgTlBPYmplY3QqIG5wT2JqZWN0ID0gW3dpZGdldFZpZXcgY3JlYXRl
UGx1Z2luU2NyaXB0YWJsZU9iamVjdF07CiAgICAgICAgIGlmICghbnBPYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9
IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Y3JlYXRlKG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RP
YmplY3QpKTsKKyAgICAgICAgYXV0byBpbnN0YW5jZSA9IEpTQzo6QmluZGluZ3M6OkNJbnN0YW5j
ZTo6Y3JlYXRlKG5wT2JqZWN0LCBXVEZNb3ZlKHJvb3RPYmplY3QpKTsKICAgICAgICAgLy8gLWNy
ZWF0ZVBsdWdpblNjcmlwdGFibGVPYmplY3QgcmV0dXJucyBhIHJldGFpbmVkIE5QT2JqZWN0LiAg
VGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byByZWxlYXNlIGl0LgogICAgICAgICBfTlBOX1JlbGVh
c2VPYmplY3QobnBPYmplY3QpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKGluc3RhbmNlKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTk5
ODEwODViNTUwNWM3NDVjOTc1YTZkOTdhYmM1OGNlYWUxYzVmOS4uMWZlMzAwYmM0ZjMxNDRmMmZh
ZDhhMjgzZDUwOWNjYTQwOTRmZWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODIzLDcgKzI4MjMsNyBAQCBj
bGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFsZW5ndGggfHwgKGltYWdlU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQo
KSA8PSBsZW5ndGgpOwotICAgICAgICAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVzdWx0ID0gSW1h
Z2VEYXRhOjpjcmVhdGUoaW1hZ2VTaXplKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSW1h
Z2VEYXRhOjpjcmVhdGUoaW1hZ2VTaXplKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFz
ZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fc2hhcmVkQnVmZmVycy0+YXQoaW5kZXgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fc2hhcmVkQnVm
ZmVycy0+YXQoaW5kZXgpKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShtX3NoYXJlZEJ1ZmZlcnMtPmF0KGluZGV4KSkpOwogICAgICAgICAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBnZXRKU1ZhbHVlKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgICAg
ICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3cocmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNDg0LDcgKzM0ODQsNyBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYg
b3JpZ2luQwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKLSAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSgqZXhlYywgdmFsdWUpOworICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWMsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywgc2NvcGUuZXhjZXB0aW9uKCktPnZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oCmluZGV4IDVmMjg1ZTkx
YjhkZjVkNTE1ZTU1NjBkNDQ5NjVkYTY0MDQxNTRlYjQuLjFiNzg5NmJlMTkwNTBlNzNiNTNmZDk1
NzUyZjI1NWY4M2E5YzMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgT2JqY0NsYXNzOwogCiBjbGFzcyBPYmpj
SW5zdGFuY2UgOiBwdWJsaWMgSW5zdGFuY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
T2JqY0luc3RhbmNlPiBjcmVhdGUoT2JqZWN0U3RydWN0UHRyLCBSZWZQdHI8Um9vdE9iamVjdD4m
Jik7CisgICAgc3RhdGljIFJlZjxPYmpjSW5zdGFuY2U+IGNyZWF0ZShPYmplY3RTdHJ1Y3RQdHIs
IFJlZlB0cjxSb290T2JqZWN0PiYmKTsKICAgICB2aXJ0dWFsIH5PYmpjSW5zdGFuY2UoKTsKICAg
ICAKICAgICBzdGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oTlNTdHJpbmcqLCBKU0dsb2Jh
bE9iamVjdCogZXhjZXB0aW9uRW52aXJvbm1lbnQgPSAwKTsgLy8gQSBudWxsIGV4Y2VwdGlvbkVu
dmlyb25tZW50IG1lYW5zIHRoZSBleGNlcHRpb24gc2hvdWxkIHByb3BvZ2F0ZSB0byBhbnkgZXhl
Y3V0aW9uIGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0KaW5kZXggMGFlYzBjZWVhZjljNmMyYTYyZTJiMDg1YmEwZTdiYzRmZjhlYTFjZC4u
MDUxZGFjYWZmYzY2YWRmNzI0MmNjNDYwMWNkMzJhNWMxMTdmZmRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xMDQsMTYgKzEwNCwxNyBAQCBP
YmpjSW5zdGFuY2U6Ok9iamNJbnN0YW5jZShpZCBpbnN0YW5jZSwgUmVmUHRyPFJvb3RPYmplY3Q+
JiYgcm9vdE9iamVjdCkKIHsKIH0KIAotUmVmUHRyPE9iamNJbnN0YW5jZT4gT2JqY0luc3RhbmNl
OjpjcmVhdGUoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCitS
ZWY8T2JqY0luc3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRy
PFJvb3RPYmplY3Q+JiYgcm9vdE9iamVjdCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHdyYXBwZXJD
YWNoZSgpLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWluc3RhbmNlLCBudWxscHRyKTsKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgUmVmUHRyPE9iamNJbnN0YW5jZT4gd3Jh
cHBlciA9IGFkb3B0UmVmKG5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUocm9vdE9i
amVjdCkpKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIuZ2V0KCk7
CisgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0UmVmKCpuZXcgT2JqY0luc3RhbmNlKGluc3Rh
bmNlLCBXVEZNb3ZlKHJvb3RPYmplY3QpKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSB3cmFwcGVyLnB0cigpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKLSAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCiBP
YmpjSW5zdGFuY2U6On5PYmpjSW5zdGFuY2UoKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggN2IyNmUzYWRhYzVmYmQ2MTMy
MmM2MjZmNjliNDNkMjgyZWY0MzU2MS4uYmJlYTM2Y2EwYjAxMDk2Njg0YmNiN2JhOGQ3MGE0OWE3
ZDI3ZTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBwb3NpdGlvbk9mZnNldFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVy
dAogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUF1dG8pOwogfQogCi1SZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK1JlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAg
IC8vIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QgbG9vayBhdCB2aXNpdGVkIGluZm9ybWF0aW9uLCBz
byB0aGF0IGNvbXB1dGVkIHN0eWxlIGRvZXNuJ3QgZXhwb3NlIHRoYXQuCiAgICAgaWYgKCFjb2xv
ci5pc1ZhbGlkKCkpCkBAIC00MjE3LDEyICs0MjE3LDEyIEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpCiAgICAgcmV0
dXJuIGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29tcHV0ZWRQcm9wZXJ0aWVzLCBudW1Db21wdXRlZFBy
b3BlcnRpZXMpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0
aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkKICAgICAgICAgbGlzdC0+
YXBwZW5kKHByb3BlcnR5VmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRh
dGVMYXlvdXQpLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwor
ICAgIHJldHVybiBsaXN0OwogfQogCiBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKQEAgLTQyNTQsMTIgKzQyNTQsMTIgQEAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGEKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAot
UmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNo
b3J0aGFuZCkKK1JlZjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENT
U1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
bGFzaFNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxl
bmd0aCgpOyArK2kpCiAgICAgICAgIGxpc3QtPmFwcGVuZChwcm9wZXJ0eVZhbHVlKHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbaV0sIERvTm90VXBkYXRlTGF5b3V0KS5yZWxlYXNlTm9uTnVsbCgpKTsK
LSAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0
aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC00
MzU0LDggKzQzNTQsOCBAQCBSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKQogICAgIHN0YXRpYyBjb25zdCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yWzNdID0geyBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFj
a2dyb3VuZENsaXAgfTsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xh
c2hTZXBhcmF0ZWQoKTsKLSAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFj
a2dyb3VuZCwgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOwotICAgIGxpc3QtPmFw
cGVuZCgqZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJTbGFz
aFNlcGVyYXRvcikpKTsKKyAgICBsaXN0LT5hcHBlbmQoZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JT
aG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0b3IpKSk7CisgICAgbGlzdC0+YXBw
ZW5kKGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hT
ZXBlcmF0b3IpKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA5MzgzODc5OGYyNDYxYWYz
ZTdmYzJjNzlkOWI5M2U4ZTM2OWVkMWRjLi5lY2JmMDRmNmM5NWU3NWQ1NjMzZjUwNWVhYmQxY2M0
M2MyN2VjODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC04NywxNCArODcsMTQgQEAgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3RvciB7CiAgICAgUmVuZGVyRWxlbWVudCogc3R5bGVkUmVuZGVyZXIoKSBjb25zdDsKIAogICAg
IFJlZlB0cjxDU1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRl
TGF5b3V0KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENv
bG9yKFNWR1BhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiwgY29uc3Qg
Q29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3Q7CisgICAgUmVmPENTU1ZhbHVlPiBhZGp1c3RTVkdQ
YWludEZvckN1cnJlbnRDb2xvcihTVkdQYWludFR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBDb2xvciYsIGNvbnN0IENvbG9yJiBjdXJyZW50Q29sb3IpIGNvbnN0OwogICAgIHN0YXRpYyBS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9wZXJ0
eUlELCBjb25zdCBSZW5kZXJTdHlsZSYsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHls
ZSA9IEFkanVzdFBpeGVsVmFsdWVzKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1
cnJlbnRDb2xvck9yVmFsaWRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikg
Y29uc3Q7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3IoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwogCi0gICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVz
KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKTsKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYpOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpOwog
ICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpOwotICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJik7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CiAgICAgUHNldWRv
SWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKaW5kZXggMzNhODU4OWUxNzYxYjBhODFjZDljNDU0NjVmNTliZWQ1YjBlMGJh
OS4uMDk1MjdmMWIxMjZjN2NiNWYyZGRkY2JkYTQyMWEyODVlMDVhZGYzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBD
U1NGb250RmFjZVNvdXJjZTo6bG9hZChDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKICAg
ICAgICAgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1t
ZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5n
OwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNl
QWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoYnVmZmVyKTsKLSAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKCpidWZmZXIsIFN0cmlu
ZygpLCB3cmFwcGluZyk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFk
ZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAg
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBp
bnRlcmVzdGVkIGluIHdoZXRoZXIgb3Igbm90IGZvbnRGb3JGYW1pbHkoKSByZXR1cm5zIG51bGwg
b3Igbm90LiBMdWNraWx5LCBub25lIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAK
aW5kZXggMTJjZGE1NDVkN2JjYzc1ZGVkYjdhNzk1MzUxYmQ2ZjAwMzY3NGZjMi4uYmNmMDkyODFl
ODA5MGJmZTljODk1MjIyMmEyOWI4ODcxNWZjZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcApAQCAtMjU5LDExICsyNTksMTEgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NT
dHlsZVNoZWV0OjpydWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAvLyBJRSBiZWhhdmlvci4KLSAgICBSZWZQdHI8U3RhdGljQ1NT
UnVsZUxpc3Q+IHJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOworICAgIGF1
dG8gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQg
cnVsZUNvdW50ID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVD
b3VudDsgKytpKQogICAgICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQoaXRlbShpKSk7Ci0g
ICAgcmV0dXJuIHJ1bGVMaXN0OworICAgIHJldHVybiBXVEZNb3ZlKHJ1bGVMaXN0KTsKIH0KIAog
RXhjZXB0aW9uT3I8dW5zaWduZWQ+IENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmlu
ZGV4IGEyNGE1MzYyNjg5MGE4YTkxZDExNzM4Y2E5YTU4YTQ1MzcxYmI4YjguLmUzNDkxNzEyODc4
OTBiOTg3NGE3MDRhYjdiNDFiZjY5Y2RhNTVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApA
QCAtMzczLDcgKzM3Myw3IEBAIFN0cmluZyBGb250RmFjZTo6dW5pY29kZVJhbmdlKCkgY29uc3QK
ICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2lu
Zy0+cmFuZ2VzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX2JhY2tpbmctPnJhbmdlcygpKQog
ICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdl
LmZyb20sIHJhbmdlLnRvKSk7CiAgICAgcmV0dXJuIHZhbHVlcy0+Y3NzVGV4dCgpOwpAQCAtMzkw
LDcgKzM5MCw3IEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKICAg
ICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBpZiAoIW1fYmFja2luZy0+
ZmVhdHVyZVNldHRpbmdzKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gIm5vcm1hbCJfczsKLSAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX2JhY2tpbmctPmZlYXR1cmVTZXR0
aW5ncygpKQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRl
KEZvbnRUYWcoZmVhdHVyZS50YWcoKSksIGZlYXR1cmUudmFsdWUoKSkpOwogICAgIHJldHVybiBs
aXN0LT5jc3NUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFw
cGVycy5jcHAKaW5kZXggZmRiOGUzYWY3OWFjNjJiNzg5NTYwYjgzYzM3ZWI3NDNjOGZlNjEyZi4u
YmRlZmVjNGE3ZmE3YzQwYjM2OWEwYTNkMmYwZTNkMzZiNzI4Nzc0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtNzksOSArNzksOSBAQCB2
b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRz
KFN0eWxlU2hlZXRDb250ZW50cyogcwogewogICAgIGlmICghc3R5bGVTaGVldCkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNoZWV0V3JhcHBlciA9IENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZSgqc3R5bGVTaGVldCk7Ci0gICAgbV9zdHlsZVNoZWV0Q1NTT01X
cmFwcGVyU2V0LmFkZChzdHlsZVNoZWV0V3JhcHBlcik7Ci0gICAgY29sbGVjdChzdHlsZVNoZWV0
V3JhcHBlci5nZXQoKSk7CisgICAgYXV0byBzdHlsZVNoZWV0V3JhcHBlciA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZSgqc3R5bGVTaGVldCk7CisgICAgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0
LmFkZChzdHlsZVNoZWV0V3JhcHBlci5jb3B5UmVmKCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVl
dFdyYXBwZXIucHRyKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxl
Y3RGcm9tU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHNo
ZWV0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKaW5kZXggMzMxZTgzNjNmYWU4N2FiNDUzZmMxZTdkNTUzOWUwOTgwNmZi
MTM1Mi4uYjNlNGI5YTBjNTRmYjkzNjdlMDQ2NzE0MjI1OTQ5N2NiMjE0MWQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5
cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0aXZlVmFsdWUoR2x5cGhPcmllbnQKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJv
a2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBk
YXNoZXMpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlz
dChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiBkYXNoZXMpCiB7CiAgICAgaWYgKGRhc2hl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vbmUpOwpAQCAtNjAsMTAgKzYwLDEwIEBAIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdM
ZW5ndGhWYWx1CiAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3Io
U1ZHUGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3QKK1JlZjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFp
bnRUeXBlIHBhaW50VHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgQ29sb3ImIGN1cnJlbnRDb2xvcikgY29uc3QKIHsKICAgICBpZiAocGFpbnRUeXBlID49
IFNWR1BhaW50VHlwZTo6VVJJTm9uZSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGF1
dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAg
ICB2YWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHVybCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpDU1NfVVJJKSk7CiAgICAgICAgIGlmIChwYWludFR5cGUgPT0g
U1ZHUGFpbnRUeXBlOjpVUklOb25lKQogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSk7CkBAIC03MSw3ICs3
MSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZH
UGFpbnRGb3JDdXJyZW50Q29sb3IoU1ZHUGFpbnRUCiAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGN1cnJlbnRDb2xvcikpOwogICAgICAgICBlbHNl
IGlmIChwYWludFR5cGUgPT0gU1ZHUGFpbnRUeXBlOjpVUklSR0JDb2xvcikKICAgICAgICAgICAg
IHZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY29sb3IpKTsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlczsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUodmFsdWVzKTsKICAgICB9
CiAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ1ZWU5MzRkMjMwMWU4YjMwMTgyZGZk
OTdkNTBkMTAyNjI2YTQzZTEuLmJmY2M2MjQzOTk0ZDAwNzE0MWFkY2FmNzlmZWQ3MDYwZmM5Yjgx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODAsOCArMTk4MCw4
IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NW
YWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0g
cHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIG9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChvcGVyYXRpb24pOworICAgICAgICAgICAgYXV0
byBvcGVyYXRpb24gPSBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShjc3NVcmwsIHVy
bC5mcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hcHBlbmQoV1RGTW92ZShvcGVyYXRpb24pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXggMGRjMTA5OGY1NGY4NGJi
ZjJiYTdiYmEzNTk3MWI2OGQ1YTlkYmJlYy4uMWVlZmViOGJkMTBjMjU0YjgyNGJjMDZjZDViOGFl
ZjA2NjAyMTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBA
QCBzdHJ1Y3QgU2FtZVNpemVBc1N0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVk
QmFzZSB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVJ1bGVCYXNlKSA9PSBzaXplb2Yo
U2FtZVNpemVBc1N0eWxlUnVsZUJhc2UpLCBTdHlsZVJ1bGVCYXNlX3Nob3VsZF9zdGF5X3NtYWxs
KTsKIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVC
YXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihwYXJlbnRTaGVldCwgbnVsbHB0cik7
CiB9CiAKLVJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIo
Q1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpj
cmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKIHsgCiAgICAgcmV0
dXJuIGNyZWF0ZUNTU09NV3JhcHBlcihudWxscHRyLCBwYXJlbnRSdWxlKTsKIH0KQEAgLTEzMSw3
ICsxMzEsNyBAQCBSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNvbnN0
CiAgICAgQ1JBU0goKTsKIH0KIAotUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0
ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50
UnVsZSkgY29uc3QKK1JlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBw
ZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0
CiB7CiAgICAgUmVmUHRyPENTU1J1bGU+IHJ1bGU7CiAgICAgU3R5bGVSdWxlQmFzZSYgc2VsZiA9
IGNvbnN0X2Nhc3Q8U3R5bGVSdWxlQmFzZSY+KCp0aGlzKTsKQEAgLTE2OSwxMSArMTY5LDEzIEBA
IFJlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVTaGVldCogcGFyZW50U2hlZXQsIENTCiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5
ZnJhbWU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIEFTU0VSVChydWxlKTsKKwogICAgIGlm
IChwYXJlbnRSdWxlKQogICAgICAgICBydWxlLT5zZXRQYXJlbnRSdWxlKHBhcmVudFJ1bGUpOwot
ICAgIHJldHVybiBydWxlOworICAgIHJldHVybiBydWxlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAK
IHVuc2lnbmVkIFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuaAppbmRleCA2ODA3MTQxZmVlYTcxYjA3NmFmYTlhNGE2OWEzY2QyNmZjNTMyMjg4Li43MTgw
NTIzMTM4NDQwMzJmNzVjOWM2Y2QxZTVhYTkzZGJlZGQ0MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIFN0eWxlUnVsZUJhc2UgOiBwdWJsaWMgV1RGOjpS
ZWZDb3VudGVkQmFzZSB7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZG4ndCBi
ZSBhbnkgbmVlZCBmb3IgdGhlIG51bGwgcGFyZW50IHZlcnNpb24uCi0gICAgUmVmUHRyPENTU1J1
bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxw
dHIpIGNvbnN0OwotICAgIFJlZlB0cjxDU1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVs
ZSogcGFyZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBl
cihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IG51bGxwdHIpIGNvbnN0OworICAgIFJlZjxD
U1NSdWxlPiBjcmVhdGVDU1NPTVdyYXBwZXIoQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAK
IHByb3RlY3RlZDoKICAgICBTdHlsZVJ1bGVCYXNlKFR5cGUgdHlwZSwgYm9vbCBoYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luID0gZmFsc2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgU3R5bGVS
dWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWRCYXNlIHsKIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAgICAgCi0gICAgUmVmUHRyPENTU1J1bGU+IGNy
ZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFy
ZW50UnVsZSkgY29uc3Q7CisgICAgUmVmPENTU1J1bGU+IGNyZWF0ZUNTU09NV3JhcHBlcihDU1NT
dHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3Q7CiAKICAg
ICB1bnNpZ25lZCBtX3R5cGUgOiA1OwogICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gc3Vw
cG9ydCBnZXRNYXRjaGVkQ1NTUnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAKaW5kZXggMGZlZTg0Y2Q3ZWIyNjc5MmUzZGY2ZDQ2N2U5MGE2MmYx
ZmQwY2M1NC4uODE0ZDQ2YjA1YTY3YzE1OTlhMjMyOGMzODMyZmU0MGFmNWI2MzNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtNjAsNyAr
NjAsNyBAQCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjp+Q2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcigpCiAgICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUobV90YXJnZXQucHRyKCkp
OwogfQogCi1SZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gQ2hpbGRMaXN0TXV0
YXRpb25BY2N1bXVsYXRvcjo6Z2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQorUmVm
PENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I6OmdldE9yQ3JlYXRlKENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHsKICAgICBBY2N1bXVsYXRv
ck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGFjY3VtdWxhdG9yTWFwKCkuYWRkKCZ0YXJnZXQsIG51
bGxwdHIpOwogICAgIFJlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBhY2N1bXVs
YXRvcjsKQEAgLTcwLDcgKzcwLDggQEAgUmVmUHRyPENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I+IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmdldE9yQ3JlYXRlKEMKICAgICAgICAg
YWNjdW11bGF0b3IgPSBhZG9wdFJlZihuZXcgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcih0
YXJnZXQsIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RN
dXRhdGlvbih0YXJnZXQpKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhY2N1
bXVsYXRvci5nZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGFjY3VtdWxhdG9yOworICAgIEFTU0VS
VChhY2N1bXVsYXRvcik7CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKIGlubGluZSBib29sIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmlzQWRkZWRO
b2RlSW5PcmRlcihOb2RlJiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZExpc3RNdXRhdGlvblNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5oCmluZGV4IDliOTQzNzE2ZGJjODRjOTNiMjZmMjkzMWJlYTgzZTdkMTEzYWVh
NTguLjI5NjY3Njc3NjhmMGQ3MTQ3NDJlMzZiY2U1YjYxMDg2OTc3ZjkxZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBj
bGFzcyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDsKIC8vIENoaWxkTGlzdE11dGF0aW9u
QWNjdW11bGF0b3IgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHk7IENoaWxkTGlzdE11
dGF0aW9uU2NvcGUgaXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UuCiBjbGFzcyBDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Q2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hpbGRMaXN0TXV0YXRpb25B
Y2N1bXVsYXRvcj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYpOworICAgIHN0YXRpYyBSZWY8
Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcj4gZ2V0T3JDcmVhdGUoQ29udGFpbmVyTm9kZSYp
OwogICAgIH5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKCk7CiAKICAgICB2b2lkIGNoaWxk
QWRkZWQoTm9kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmNwcAppbmRleCBkNTVjNTZmMTM2OTMyNThiNzJkZmNiZGE1NDZiYmM3YzZmODlhMzAy
Li41YjA4NjMwYzMzMDBiOWE3OTAyZmE3YmNiZTIyZDZlMWMyYzY2YzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMTYxLDkgKzE2
MSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXIoUmVuZGVyZWRE
b2N1bWVudE1hcmtlciYgbWFya2VyLCBOb2RlJiBuCiAgICAgQVNTRVJUKCFub2RlLmRvY3VtZW50
KCkudmlldygpIHx8ICFub2RlLmRvY3VtZW50KCkudmlldygpLT5uZWVkc0xheW91dCgpKTsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVmYWN0b3IgdGhpcyBzbyB0aGF0IHdlIGRvbid0IHVz
ZSBSYW5nZSAoYmVjYXVzZSB3ZSBvbmx5IGhhdmUgb25lIE5vZGUpLCBidXQgc3RpbGwgc2hhcmUg
Y29kZSB3aXRoIGFic29sdXRlVGV4dFF1YWRzKCkuCi0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJS
YW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCAmbm9kZSwgbWFya2VyLnN0YXJ0
T2Zmc2V0KCksICZub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkpOwotICAgIGlmICghbWFya2VyUmFu
Z2UpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIG1hcmtlclJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShub2RlLmRvY3VtZW50KCksICZub2RlLCBtYXJrZXIuc3RhcnRPZmZzZXQoKSwgJm5vZGUsIG1h
cmtlci5lbmRPZmZzZXQoKSk7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVNYXJrZXJR
dWFkczsKICAgICBtYXJrZXJSYW5nZS0+YWJzb2x1dGVUZXh0UXVhZHMoYWJzb2x1dGVNYXJrZXJR
dWFkcywgdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKaW5kZXggMGQ4YjZiY2U3NWUxZjA3NWU4YjNlYWZiODUyMTk3NWQ2MjgzYmM4ZC4uMTUw
YTc4ZDU5MDMxNmM3ZTE0NDE5ZDgyYWNiNzliODA0YzYyYjhhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIHZv
aWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dJ
bmxpbmVTdHlsZShkb2N1bWVudC51cmwoKSwgbV9zdGFydFRleHRQb3NpdGlvbi5tX2xpbmUsIHRl
eHQsIGhhc0tub3duTm9uY2UpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1l
ZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CisgICAgYXV0byBtZWRpYVF1ZXJpZXMg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
ZG9jdW1lbnQpKTsKIAogICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVu
Il9zLCB0cnVlKTsKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiX3Ms
IHRydWUpOwogICAgIExPRyhNZWRpYVF1ZXJpZXMsICJJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNy
ZWF0ZVNoZWV0IGV2YWx1YXRpbmcgcXVlcmllcyIpOwotICAgIGlmICghc2NyZWVuRXZhbC5ldmFs
dWF0ZSgqbWVkaWFRdWVyaWVzKSAmJiAhcHJpbnRFdmFsLmV2YWx1YXRlKCptZWRpYVF1ZXJpZXMp
KQorICAgIGlmICghc2NyZWVuRXZhbC5ldmFsdWF0ZShtZWRpYVF1ZXJpZXMuZ2V0KCkpICYmICFw
cmludEV2YWwuZXZhbHVhdGUobWVkaWFRdWVyaWVzLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fc3R5bGVTY29wZSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIElubGluZVN0
eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgICAgICBpZiAoYXV0byogY2FjaGVkU2hlZXQgPSBpbmxpbmVTdHlsZVNoZWV0
Q2FjaGUoKS5nZXQoKmNhY2hlS2V5KSkgewogICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFNoZWV0
LT5pc0NhY2hlYWJsZSgpKTsKICAgICAgICAgICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0Ojpj
cmVhdGVJbmxpbmUoKmNhY2hlZFNoZWV0LCBlbGVtZW50LCBtX3N0YXJ0VGV4dFBvc2l0aW9uKTsK
LSAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92
ZShtZWRpYVF1ZXJpZXMpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudC5pc0luU2hhZG93VHJl
ZSgpKQogICAgICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGVsZW1lbnQudGl0bGUoKSk7
CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRl
U2hlZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGF1dG8gY29u
dGVudHMgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShTdHJpbmcoKSwgcGFyc2VyQ29udGV4
dEZvckVsZW1lbnQoZWxlbWVudCkpOwogCiAgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZUlubGluZShjb250ZW50cy5nZXQoKSwgZWxlbWVudCwgbV9zdGFydFRleHRQb3NpdGlvbik7
Ci0gICAgbV9zaGVldC0+c2V0TWVkaWFRdWVyaWVzKG1lZGlhUXVlcmllcy5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoV1RGTW92ZShtZWRpYVF1ZXJpZXMp
KTsKICAgICBpZiAoIWVsZW1lbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgbV9zaGVldC0+
c2V0VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BvaW50ZXJFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvaW50ZXJFdmVudC5oCmlu
ZGV4IGNmMDkxNDMxMjhjOWUyYjEzOTJlYTlmYzk3ZGM4ZTAwNWRhYjRmZmEuLmRmMmFlOGJiZDgx
OTMyYmM0NmMzNjZjMDdjZGU3YjgwOThmZDJhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb2ludGVyRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9pbnRlckV2ZW50
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUG9pbnRlckV2ZW50IGZpbmFsIDogcHVibGljIE1v
dXNlRXZlbnQgewogICAgICAgICBib29sIGlzUHJpbWFyeSB7IGZhbHNlIH07CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBSZWZQdHI8UG9pbnRlckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIpCisgICAgc3RhdGljIFJlZjxQb2ludGVyRXZlbnQ+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0aWFsaXplcikKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvaW50ZXJFdmVudCh0eXBlLCBXVEZN
b3ZlKGluaXRpYWxpemVyKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJl
SW5kaWNhdG9yLmgKaW5kZXggMDExMjcyMDA3YjE1N2EwNDljZWQ3YmM0OWEzYzk2OTMxODMyYWFh
Yy4uNWExY2I5ZWE4YTI5M2E5ZjI2NzEwYzg2OTMxODI1OGUwNGQ3ZWUwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgZW51bSBj
bGFzcyBVc2VyR2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNzIFVzZXJH
ZXN0dXJlVG9rZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKKyAg
ICBzdGF0aWMgUmVmPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdlc3R1
cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJlVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRl
LCBnZXN0dXJlVHlwZSkpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Vc2VyR2VzdHVy
ZVRva2VuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAppbmRleCA1ODJiZTBkZTU5MzJjNWNiZTQ5YzUxZjBjODFiOGRjOTgw
NzE3ZDFlLi41MTZkNzZlYTRkMTdhZDgzMzRmY2ZhODgzZDc0OTkyY2YzOWI3ZjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFw
cGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UsCiAgICAgLy8gcmVs
YXRpdmUgdG8gdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHBhcmFncmFwaC4g
V2UgdXNlIGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoCiAgICAgLy8gdG8gc3RvcmUg
dGhpcyB2YWx1ZS4gSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgb2Zmc2V0LCB3ZSBuZWVkIHRvIGZp
cnN0IGNyZWF0ZSBhIHJhbmdlCiAgICAgLy8gd2hpY2ggc3BhbnMgZnJvbSB0aGUgc3RhcnQgb2Yg
cGFyYWdyYXBoIHRvIHRoZSBzdGFydCBwb3NpdGlvbiBvZiByYW5nZVdpdGhBbHRlcm5hdGl2ZS4K
LSAgICBSZWZQdHI8UmFuZ2U+IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoQXNSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBoUmFuZ2VDb250YWluaW5nQ29ycmVjdGlvbi0+c3Rh
cnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdDb3JyZWN0
aW9uLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJlY3Rpb24t
PnN0YXJ0UG9zaXRpb24oKSk7CisgICAgYXV0byBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFn
cmFwaEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlQ29udGFpbmluZ0NvcnJl
Y3Rpb24tPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgcGFyYWdyYXBoUmFuZ2VDb250YWlu
aW5nQ29ycmVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBwYXJhZ3JhcGhSYW5nZUNvbnRhaW5pbmdD
b3JyZWN0aW9uLT5zdGFydFBvc2l0aW9uKCkpOwogCiAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlv
bk9mUmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZS5zdGFydFBvc2l0aW9uKCk7CiAgICAgaWYg
KCFzdGFydFBvc2l0aW9uT2ZSYW5nZVdpdGhBbHRlcm5hdGl2ZS5jb250YWluZXJOb2RlKCkpCkBA
IC0yMTAsNyArMjEwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFs
dGVybmF0aXZlVGV4dFRvUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLAogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUYWtlIG5vdGUgb2YgdGhlIGxvY2F0aW9uIG9mIGF1dG9jb3JyZWN0aW9uIHNv
IHRoYXQgd2UgY2FuIGFkZCBtYXJrZXIgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IHRvb2sgcGxhY2Uu
Ci0gICAgaW50IGNvcnJlY3Rpb25TdGFydE9mZnNldEluUGFyYWdyYXBoID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaEFzUmFuZ2UuZ2V0
KCkpOworICAgIGludCBjb3JyZWN0aW9uU3RhcnRPZmZzZXRJblBhcmFncmFwaCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgoY29ycmVjdGlvblN0YXJ0T2Zmc2V0SW5QYXJhZ3JhcGhBc1Jhbmdl
LnB0cigpKTsKIAogICAgIC8vIENsb25lIHRoZSByYW5nZSwgc2luY2UgdGhlIGNhbGxlciBvZiB0
aGlzIG1ldGhvZCBtYXkgd2FudCB0byBrZWVwIHRoZSBvcmlnaW5hbCByYW5nZSBhcm91bmQuCiAg
ICAgYXV0byByYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKQEAgLTI2
NiwxMiArMjY2LDEyIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRv
VW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTCiAgICAgUmVmPEZyYW1lPiBw
cm90ZWN0b3IobV9mcmFtZSk7CiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQo
KTsKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxlY3Rpb25PZkNvcnJl
Y3RlZCwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGcmFt
ZVNlbGVjdGlvbjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuZW5kKCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3Vt
ZW50KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CiAKICAgICBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKLSAgICBtYXJr
ZXJzLnJlbW92ZU1hcmtlcnMocmFuZ2UuZ2V0KCksIE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZT4geyBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpB
dXRvY29ycmVjdGVkIH0sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5
T3ZlcmxhcHBpbmdNYXJrZXIpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdl
LmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFy
a2Vycy5yZW1vdmVNYXJrZXJzKHJhbmdlLnB0cigpLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGU+IHsgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6
QXV0b2NvcnJlY3RlZCB9LCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxs
eU92ZXJsYXBwaW5nTWFya2VyKTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5nZS5wdHIoKSwg
RG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBtYXJrZXJzLmFkZE1hcmtlcihyYW5n
ZS5wdHIoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogfQogCiB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQpAQCAtNDQzLDEyICs0
NDMsMTAgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24KIHsKICAgICBpZiAoIWNvbW1hbmQtPndh
c0NyZWF0ZUxpbmtDb21tYW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFy
dGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5k
KCkpOwotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqbV9mcmFtZS5kb2N1bWVudCgpLCBjb21tYW5kLT5zdGFydGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkuZW5kKCkpOwogICAg
IERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+
bWFya2VycygpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1h
cmtlcjo6UmVwbGFjZW1lbnQpOwotICAgIG1hcmtlcnMuYWRkTWFya2VyKHJhbmdlLmdldCgpLCBE
b2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CisgICAgbWFya2Vycy5hZGRN
YXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CisgICAgbWFy
a2Vycy5hZGRNYXJrZXIocmFuZ2UucHRyKCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5n
RXhlbXB0aW9uKTsKIH0KIAogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQpAQCAtNTI2LDE1ICs1MjQsMTUgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjptYXJrUHJlY2VkaW5nV2hpdGVzcGFjZUZv
ckRlbGV0ZWRBdXRvY29ycmVjdGlvbkEKICAgICBpZiAoZW5kT2ZTZWxlY3Rpb24gPT0gcHJlY2Vk
aW5nQ2hhcmFjdGVyUG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5n
ZT4gcHJlY2VkaW5nQ2hhcmFjdGVyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3Vt
ZW50KCksIHByZWNlZGluZ0NoYXJhY3RlclBvc2l0aW9uLCBlbmRPZlNlbGVjdGlvbik7Ci0gICAg
U3RyaW5nIHN0cmluZyA9IHBsYWluVGV4dChwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7
CisgICAgYXV0byBwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm1fZnJh
bWUuZG9jdW1lbnQoKSwgcHJlY2VkaW5nQ2hhcmFjdGVyUG9zaXRpb24sIGVuZE9mU2VsZWN0aW9u
KTsKKyAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KHByZWNlZGluZ0NoYXJhY3RlclJhbmdl
LnB0cigpKTsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCAhZGVwcmVjYXRlZElzRWRpdGlu
Z1doaXRlc3BhY2Uoc3RyaW5nW3N0cmluZy5sZW5ndGgoKSAtIDFdKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gTWFyayB0aGlzIHdoaXRlc3BhY2UgdG8gaW5kaWNhdGUgd2UgaGF2ZSBkZWxl
dGVkIGFuIGF1dG9jb3JyZWN0aW9uIGZvbGxvd2luZyB0aGlzCiAgICAgLy8gd2hpdGVzcGFjZS4g
U28gaWYgdGhlIHVzZXIgdHlwZXMgdGhlIHNhbWUgb3JpZ2luYWwgd29yZCBhZ2FpbiBhdCB0aGlz
IHBvc2l0aW9uLCB3ZQogICAgIC8vIHdvbid0IGF1dG9jb3JyZWN0IGl0IGFnYWluLgotICAgIG1f
ZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmln
aW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOworICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRpbmdDaGFyYWN0ZXJSYW5nZS5wdHIo
KSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVjdGlvbiwgbV9vcmlnaW5hbFN0cmlu
Z0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOwogfQogCiBib29sIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxhY2VkQnlSZXN1bHQoY29u
c3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQsIFJhbmdlJiByYW5nZVdpdGhBbHRlcm5hdGl2
ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdUb0JlUmVwbGFjZWQpCkBAIC01NzUsMjEgKzU3MywxOSBA
QCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZX
b3JkKGNvbnN0IERvY3VtZW50TWFya2VyJgogICAgIGlmICghc2hvdWxkU3RhcnRUaW1lckZvciht
YXJrZXIsIGVuZE9mV29yZFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIE5vZGUqIG5vZGUgPSBlbmRPZldvcmRQb3NpdGlvbi5jb250
YWluZXJOb2RlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCptX2ZyYW1lLmRvY3VtZW50KCksIG5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBt
YXJrZXIuZW5kT2Zmc2V0KCkpOwotICAgIGlmICghd29yZFJhbmdlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQo
KSk7CisgICAgYXV0byB3b3JkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50
KCksIG5vZGUsIG1hcmtlci5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXIuZW5kT2Zmc2V0KCkp
OworICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dCh3b3JkUmFuZ2UucHRyKCkpOwog
ICAgIGlmICghY3VycmVudFdvcmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBtX29yaWdpbmFsVGV4dCA9IGN1cnJlbnRXb3JkOwogICAgIHN3aXRjaCAobWFya2VyLnR5cGUo
KSkgewogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOgotICAgICAgICBtX3Jhbmdl
V2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0
aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2RldGFpbHMgPSBlbXB0eVN0cmlu
ZygpOwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0
VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY3Vt
ZW50TWFya2VyOjpSZXBsYWNlbWVudDoKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9
IHdvcmRSYW5nZTsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURk1vdmUod29y
ZFJhbmdlKTsKICAgICAgICAgbV9kZXRhaWxzID0gbWFya2VyLmRlc2NyaXB0aW9uKCk7CiAgICAg
ICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJz
aW9uKTsKICAgICAgICAgYnJlYWs7CkBAIC01OTksNyArNTk1LDcgQEAgYm9vbCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9NYXJrZXJBdEVuZE9mV29yZChjb25zdCBEb2N1bWVu
dE1hcmtlciYKICAgICAgICAgYXV0byYgbWFya2VyRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRX
b3JkICE9IG1hcmtlckRhdGEub3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gd29yZFJhbmdlOworICAgICAgICBt
X3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGTW92ZSh3b3JkUmFuZ2UpOwogICAgICAgICBtX2Rl
dGFpbHMgPSBtYXJrZXJEYXRhLmNvbnRleHQ7CiAgICAgICAgIHN0YXJ0QWx0ZXJuYXRpdmVUZXh0
VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGMz
ZDgxNGFkMWQzZmRhNmFmODY5Njg4YmZjMmNhMWI3OWM5NWM2YTMuLjdhM2ExNjAwZmJhOTM3ZGFk
NzQyNmY3NGI2MDM2OTcxZmM4Y2UyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0yNTAsMTAgKzI1MCwxMCBAQCB2b2lkIEFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlJiBzdHlsZSkKICAgICBpZiAoIXNj
b3BlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNp
YmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmly
c3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwotICAgIGludCBlbmRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UuZ2V0KCksIHRydWUpOworICAg
IGF1dG8gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1
bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZh
bGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
aW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwg
dHJ1ZSk7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQoc3RhcnRPZlBhcmFn
cmFwaCh2aXNpYmxlU3RhcnQpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFN0
YXJ0KGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCkpOwpAQCAtMjg0LDEwICsy
ODQsMTIgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKEVkaXRpbmdT
dHlsZSYgc3R5bGUpCiAgICAgICAgIG5leHRQYXJhZ3JhcGhTdGFydCA9IGVuZE9mUGFyYWdyYXBo
KHBhcmFncmFwaFN0YXJ0KS5uZXh0KCk7CiAgICAgfQogICAgIAotICAgIHN0YXJ0UmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4
LCAwLCB0cnVlKTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB0cnVlKTsKLSAgICBpZiAoc3RhcnRSYW5n
ZSAmJiBlbmRSYW5nZSkKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKKyAgICB7CisgICAgICAgIGF1
dG8gc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
c2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOworICAgICAgICBhdXRvIGVuZFJhbmdlID0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAs
IHRydWUpOworICAgICAgICBpZiAoc3RhcnRSYW5nZSAmJiBlbmRSYW5nZSkKKyAgICAgICAgICAg
IHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHls
ZSkKQEAgLTEwNTEsOSArMTA1Myw5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3du
SW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIE5vZGUqCiAgICAgICAg
ICAgICBlbGVtZW50c1RvUHVzaERvd24uYXBwZW5kKCpzdHlsZWRFbGVtZW50KTsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlVG9QdXNoRG93biA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gc3R5bGVUb1B1c2hEb3duID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqY3VycmVudCkp
Ci0gICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBkb3duY2Fz
dDxIVE1MRWxlbWVudD4oKmN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3du
LmdldCgpKTsKKyAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUs
IGRvd25jYXN0PEhUTUxFbGVtZW50PigqY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRv
UHVzaERvd24ucHRyKCkpOwogCiAgICAgICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwgZ28gdGhy
b3VnaCBjaGlsZHJlbiBvbiBlYWNoIGxldmVsCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
YWdncmVnYXRlIGlubGluZSBjaGlsZCBlbGVtZW50cyB0b2dldGhlciBzbyB0aGF0IHdlIGRvbid0
IHdyYXAgZWFjaCBjaGlsZCBzZXBhcmF0ZWx5LgpAQCAtMTA3Miw3ICsxMDc0LDcgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0
eWxlJiBzdHlsZSwgTm9kZSoKICAgICAgICAgICAgIC8vIEFwcGx5IHN0eWxlIHRvIGFsbCBub2Rl
cyBjb250YWluaW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8gdGFy
Z2V0Tm9kZQogICAgICAgICAgICAgLy8gQnV0IGlmIHdlJ3ZlIHJlbW92ZWQgc3R5bGVkRWxlbWVu
dCB0aGVuIGFsd2F5cyBhcHBseSB0aGUgc3R5bGUuCiAgICAgICAgICAgICBpZiAoJmNoaWxkICE9
IHRhcmdldE5vZGUgfHwgc3R5bGVkRWxlbWVudCkKLSAgICAgICAgICAgICAgICBhcHBseUlubGlu
ZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3du
LnB0cigpKTsKIAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5leHQgbm9kZSBmb3IgdGhl
IG91dGVyIGxvb3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAgICAgICAvLyBXaGVuIHJl
YWNoZWQgdGFyZ2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9uIHRoZSBjb21wbGV0aW9u
IG9mIHRoZSBjdXJyZW50IGlubmVyIGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggYzBlNWM5Y2U3NTdmNTY3YWNhOTYyMmFhODgy
NzEzZTVmNWE4ODFlMS4uZDdmNjc3NWU5ZDQyM2EyNzZlMWQyODc5MDljMzZiYmM3YmY1ZTU1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
QEAgLTM4Miw4ICszODIsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlcygpIGNvbnN0CiAgICAgaWYgKCFmaXJzdFJhbmdlKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0
YXRpY1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKmZpcnN0UmFuZ2UpOwotICAgIHJldHVybiB7IDEs
IHJhbmdlIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgq
Zmlyc3RSYW5nZSkgfTsKIH0KIAogVmVjdG9yPFJlZlB0cjxTdGF0aWNSYW5nZT4+IENvbXBvc2l0
ZUVkaXRDb21tYW5kOjp0YXJnZXRSYW5nZXNGb3JCaW5kaW5ncygpIGNvbnN0CkBAIC03NjgsMTUg
Kzc2NywxNSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlVGV4dEluTm9kZVBy
ZXNlcnZpbmdNYXJrZXJzKFRleHQmIG5vZGUsIHVuc2lnbgogICAgIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlciYgbWFya2VyQ29udHJvbGxlciA9IGRvY3VtZW50KCkubWFya2VycygpOwogICAgIGF1
dG8gbWFya2VycyA9IGNvcHlNYXJrZXJzKG1hcmtlckNvbnRyb2xsZXIubWFya2Vyc0luUmFuZ2Uo
UmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwgb2Zmc2V0ICsg
Y291bnQpLCBEb2N1bWVudE1hcmtlcjo6YWxsTWFya2VycygpKSk7CiAgICAgcmVwbGFjZVRleHRJ
bk5vZGUobm9kZSwgb2Zmc2V0LCBjb3VudCwgcmVwbGFjZW1lbnRUZXh0KTsKLSAgICBSZWZQdHI8
UmFuZ2U+IG5ld1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0
LCAmbm9kZSwgb2Zmc2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKKyAgICBhdXRvIG5l
d1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCAmbm9kZSwgb2Zmc2V0LCAmbm9kZSwg
b2Zmc2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IG1hcmtlciA6IG1hcmtlcnMpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBp
ZiAobWFya2VyLmlzRGljdGF0aW9uKCkpIHsKLSAgICAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIu
YWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuZGVzY3JpcHRp
b24oKSwgbWFya2VyLmFsdGVybmF0aXZlcygpLCBtYXJrZXIubWV0YWRhdGEoKSk7CisgICAgICAg
ICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5
cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCksIG1hcmtlci5hbHRlcm5hdGl2ZXMoKSwgbWFya2Vy
Lm1ldGFkYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgot
ICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2Vy
LnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0aW9uKCkpOworICAgICAgICBtYXJrZXJDb250cm9sbGVy
LmFkZE1hcmtlcihuZXdSYW5nZS5wdHIoKSwgbWFya2VyLnR5cGUoKSwgbWFya2VyLmRlc2NyaXB0
aW9uKCkpOwogICAgIH0KIH0KIApAQCAtMTQxNCwxNCArMTQxMywxNCBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0
T2ZQYXJhZ3JhcAogICAgICAgICAgICAgCiAgICAgICAgICAgICBzdGFydEluZGV4ID0gMDsKICAg
ICAgICAgICAgIGlmIChzdGFydEluUGFyYWdyYXBoKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFy
YWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCks
IHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKLSAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChzdGFydFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0UmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZVN0YXJ0LmRl
ZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOworICAgICAgICAgICAg
ICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRy
KCksIHRydWUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAg
ICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdy
YXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZp
c2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0g
ICAgICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJh
bmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQo
KS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgZW5kSW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0MzcsMTQgKzE0MzYsMTQgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBzdGFydCBhbmQgZW5kIGNhbid0IGJlIHVzZWQgZGly
ZWN0bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRoZXkgYXJlICJlZGl0aW5nIHBvc2l0aW9ucyIKICAg
ICBQb3NpdGlvbiBzdGFydFJhbmdlQ29tcGxpYW50ID0gc3RhcnQucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kUmFuZ2VDb21wbGlhbnQgPSBlbmQucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9kZSgpLCBzdGFy
dFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJhbmdlQ29tcGxp
YW50LmRlcHJlY2F0ZWROb2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0
YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRSYW5nZUNvbXBsaWFudC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkTm9k
ZSgpLCBlbmRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGFuIGluZWZmaWNpZW50IHdheSB0byBwcmVzZXJ2ZSBzdHlsZSBv
biBub2RlcyBpbiB0aGUgcGFyYWdyYXBoIHRvIG1vdmUuIEl0CiAgICAgLy8gc2hvdWxkbid0IG1h
dHRlciB0aG91Z2gsIHNpbmNlIG1vdmVkIHBhcmFncmFwaHMgd2lsbCB1c3VhbGx5IGJlIHF1aXRl
IHNtYWxsLgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsKICAgICAvLyBU
aGlzIHVzZWQgdG8gdXNlIGEgdGVybmFyeSBmb3IgaW5pdGlhbGl6YXRpb24sIGJ1dCB0aGF0IGNv
bmZ1c2VkIHNvbWUgdmVyc2lvbnMgb2YgR0NDLCBzZWUgYnVnIDM3OTEyCiAgICAgaWYgKHN0YXJ0
T2ZQYXJhZ3JhcGhUb01vdmUgIT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUpCi0gICAgICAgIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIHNlcmlhbGl6ZVByZXNl
cnZpbmdWaXN1YWxBcHBlYXJhbmNlKCpyYW5nZSwgbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNo
YW5nZTo6Tm8sIENvbnZlcnRCbG9ja3NUb0lubGluZXM6OlllcyksIGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCgpLCBz
ZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShyYW5nZS5nZXQoKSwgbnVsbHB0ciwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6Tm8sIENvbnZlcnRCbG9ja3NUb0lubGluZXM6Olllcyks
IGVtcHR5U3RyaW5nKCkpOwogCiAgICAgLy8gQSBub24tZW1wdHkgcGFyYWdyYXBoJ3Mgc3R5bGUg
aXMgbW92ZWQgd2hlbiB3ZSBjb3B5IGFuZCBtb3ZlIGl0LiAgV2UgZG9uJ3QgbW92ZSAKICAgICAv
LyBhbnl0aGluZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBlbXB0
eSBwYXJhZ3JhcGggY2FuIGhhdmUgc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDFiYzliNDBlNmZlOWNhNzk3Y2JmNjdl
NzZkNmU2NjU1ZWIwOTc1YTYuLmE2ZDE3NjBjMmIwY2Y5NGY5ODIxMzNlMjEyZGU0NWMxOWRkZjUy
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcApAQCAtNjkzLDkgKzY5Myw5IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
bWVyZ2VQYXJhZ3JhcGhzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdy
YXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVu
ZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWZyYW1lKCkuZWRpdG9yKCkuY2xp
ZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVS
ZXBsYWNlZC5nZXQoKSkpCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKKyAgICBhdXRvIHJhbmdlVG9CZVJlcGxhY2VkID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgaWYgKCFmcmFtZSgpLmVkaXRv
cigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShyYW5nZS5wdHIoKSwgcmFu
Z2VUb0JlUmVwbGFjZWQucHRyKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gbW92
ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJzIGlmIGl0IHJlbW92ZXMgYmxvY2tz
IHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0IGxldCBibG9jawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZy5jcHAKaW5kZXggY2NhNGVkZTFiYTQ0YzIzM2E2MzgxODc3ZWFjYTU4MTU4
NzRlZWU1Yy4uODZkMDIxZDE4YTQ3OTEzZWVhMGI3NjY0OGVmOWZmOWNmMDQyZDVkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMTE3LDkgKzExMTcsOSBAQCBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUm
IG5vZGUsIGludCBpbgogICAgIGlmIChpbmRleCA8PSAwKQogICAgICAgICByZXR1cm4geyBmaXJz
dFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoJm5vZGUpLCBET1dOU1RSRUFNIH07CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCkpOworICAgIGF1
dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSk7CiAgICAgcmFuZ2UtPnNl
bGVjdE5vZGVDb250ZW50cyhub2RlKTsKLSAgICBDaGFyYWN0ZXJJdGVyYXRvciBpdCgqcmFuZ2Up
OworICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKICAgICBpdC5hZHZhbmNl
KGluZGV4IC0gMSk7CiAgICAgcmV0dXJuIHsgaXQuYXRFbmQoKSA/IHJhbmdlLT5lbmRQb3NpdGlv
bigpIDogaXQucmFuZ2UoKS0+ZW5kUG9zaXRpb24oKSwgVVBTVFJFQU0gfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA2NDIxNmM5ODYwNjRiNjdlZTM5OTVl
MDAxMzg5ZDFjOGFkYjQ3MzhhLi5iMzhjMTUwOWVlOTc5YmU5ZTQwZmUzYmFkMjkwZDQ3NDI2NjAw
MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03MTQsNyAr
NzE0LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5
bGVPZk5vZGUoTm9kZSYgbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IHBhcmVudFN0eWxlID0gY29weVByb3BlcnRpZXNGcm9tQ29tcHV0
ZWRTdHlsZShub2RlLnBhcmVudE5vZGUoKSwgRWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7Ci0g
ICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbm9kZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
Jm5vZGUsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOworICAgIGF1dG8gbm9kZVN0eWxlID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUoJm5vZGUsIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwog
ICAgIG5vZGVTdHlsZS0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoKnBhcmVudFN0eWxlKTsK
IAogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlID0gbm9kZVN0eWxlLT5zdHlsZSgp
OwpAQCAtODI4LDggKzgyOCw4IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgYm9vbCBz
aG91bGRSZW1vdmVTdHJpa2VUaHJvdWdoID0gc3RyaWtlVGhyb3VnaENoYW5nZSgpID09IFRleHRE
ZWNvcmF0aW9uQ2hhbmdlOjpSZW1vdmU7CiAgICAgaWYgKHNob3VsZFJlbW92ZVVuZGVybGluZSB8
fCBzaG91bGRSZW1vdmVTdHJpa2VUaHJvdWdoKSB7CiAgICAgICAgIGlmIChSZWZQdHI8Q1NTVmFs
dWVMaXN0PiB2YWx1ZUxpc3QgPSB0ZXh0RGVjb3JhdGlvblZhbHVlTGlzdCgqaW5saW5lU3R5bGUp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBuZXdWYWx1ZUxpc3QgPSB2YWx1
ZUxpc3QtPmNvcHkoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGV4dHJhY3Rl
ZFZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAg
ICAgICAgIGF1dG8gbmV3VmFsdWVMaXN0ID0gdmFsdWVMaXN0LT5jb3B5KCk7CisgICAgICAgICAg
ICBhdXRvIGV4dHJhY3RlZFZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKIAogICAgICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB1bmRlcmxpbmUg
PSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVVuZGVybGluZSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlVW5kZXJsaW5lICYmIHZh
bHVlTGlzdC0+aGFzVmFsdWUodW5kZXJsaW5lLnB0cigpKSkgewpAQCAtODUwLDcgKzg1MCw3IEBA
IGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5
bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgICAgICAgICBpZiAoZXh0cmFjdGVkVmFsdWVM
aXN0LT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGNvbmZsaWN0cyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgaWYgKG5ld1ZhbHVlTGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAg
ICAgIG5ld0lubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
LCBuZXdWYWx1ZUxpc3QpOworICAgICAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuZXdWYWx1ZUxpc3Qp
KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0
eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKIApAQCAtMTA3
MSw3ICsxMDcxLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAvLyBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpcmVzIHRoYXQgdGhpcyBmdW5j
dGlvbiBvbmx5IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCiAgICAgLy8gSWYgdGhpcyBmdW5j
dGlvbiB3YXMgbW9kaWZpZWQgaW4gdGhlIGZ1dHVyZSB0byBkZWxldGUgYWxsIHJlZHVuZGFudCBw
cm9wZXJ0aWVzLCB0aGVuIGFkZCBhIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUKICAgICAvLyB3
aGljaCBvbmUgb2YgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiBvciBjb21wdXRlZFN0eWxlIGlzIGNh
bGxlZC4KLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24sIEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3Qp
OworICAgIGF1dG8gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KHBvc2l0aW9uLCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBTdHlsZVByb3BlcnRp
ZXMqIHN0eWxlQXRQb3NpdGlvbiA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24tPm1fbXV0YWJsZVN0
eWxlLmdldCgpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKQEAgLTExNTgs
NyArMTE1OCw3IEBAIHN0YXRpYyBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZXh0cmFj
dEVkaXRpbmdQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVyCiAKIHZvaWQgRWRpdGluZ1N0eWxl
OjptZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxl
bWVudCwgQ1NTUHJvcGVydHlPdmVycmlkZU1vZGUgbW9kZSwgUHJvcGVydGllc1RvSW5jbHVkZSBw
cm9wZXJ0aWVzVG9JbmNsdWRlKQogewotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlRnJv
bVJ1bGVzID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlRnJvbVJ1bGVz
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKICAgICBzdHlsZUZyb21SdWxlcy0+bWVyZ2VTdHls
ZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oZWxlbWVudCk7CiAKICAgICBpZiAoZWxlbWVudC5p
bmxpbmVTdHlsZSgpKQpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1l
cmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgLy8gVGhlIHByb3BlcnR5IHZhbHVlLCBpZiBpdCdzIGEgcGVyY2VudGFnZSwgbWF5IG5v
dCByZWZsZWN0IHRoZSBhY3R1YWwgY29tcHV0ZWQgdmFsdWUuICAKICAgICAvLyBGb3IgZXhhbXBs
ZTogc3R5bGU9ImhlaWdodDogMSU7IG92ZXJmbG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQog
ICAgIC8vIEZJWE1FOiBUaGVyZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8vcHJv
YmxlbS81MTk1MTIzPiBTbGFzaGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KLSAgICBS
ZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZnJvbUNvbXB1dGVkU3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIGZyb21Db21wdXRlZFN0eWxlID0g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3RvciBjb21wdXRlZFN0eWxlKCZlbGVtZW50KTsKIAogICAgIHsKQEAgLTEzMDQsNyArMTMwNCw3
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bihTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQotICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25mbGljdCgqZnJvbUNv
bXB1dGVkU3R5bGUpOworICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZUFuZE92ZXJyaWRlT25Db25m
bGljdChmcm9tQ29tcHV0ZWRTdHlsZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZVBy
b3BlcnRpZXNJblN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHN0eWxlVG9SZW1vdmVQcm9w
ZXJ0aWVzRnJvbSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogc3R5bGUpCkBAIC0xMzI4LDcgKzEz
MjgsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0
KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIE5vZGUqCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlID0g
Z2V0UHJvcGVydGllc05vdEluKCptX211dGFibGVTdHlsZSwgKnN0eWxlRnJvbU1hdGNoZWRSdWxl
cyk7CiAKICAgICAvLyAyLiBSZW1vdmUgc3R5bGUgcHJlc2VudCBpbiBjb250ZXh0IGFuZCBub3Qg
b3ZlcnJpZGRlbiBieSBtYXRjaGVkIHJ1bGVzLgotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGNv
bXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0LCBFZGl0aW5nUHJvcGVy
dGllc0luRWZmZWN0KTsKKyAgICBhdXRvIGNvbXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShjb250ZXh0LCBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsKICAgICBpZiAoY29tcHV0
ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUpIHsKICAgICAgICAgaWYgKCFjb21wdXRlZFN0eWxlLT5t
X211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikpCiAgICAgICAgICAgICBjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwpA
QCAtMTgwMiw3ICsxODAyLDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChUJiBzdHls
ZSkKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IGV4dHJhY3RQcm9wZXJ0aWVzTm90SW4oU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZVdpdGhSZWR1
bmRhbnRQcm9wZXJ0aWVzLCBUJiBiYXNlU3R5bGUpCiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gcmVzdWx0ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0aFJlZHVuZGFudFByb3Bl
cnRpZXMpOworICAgIGF1dG8gcmVzdWx0ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJnN0eWxlV2l0
aFJlZHVuZGFudFByb3BlcnRpZXMpOwogICAgIHJlc3VsdC0+cmVtb3ZlRXF1aXZhbGVudFByb3Bl
cnRpZXMoYmFzZVN0eWxlKTsKICAgICBBU1NFUlQocmVzdWx0LT5zdHlsZSgpKTsKICAgICBSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlID0gKnJlc3VsdC0+c3R5bGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlZjFmZDI0MDY0NjNlMzc4YTE4YWIyZWY5
MDZjYzBiNGNjMWZmZDcyLi5hNWU4NTg0ZjRhZTg3NzIzMTRmNjNmMzQxN2JjMGNkNmU0NjE3NmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xNzk1LDkgKzE3OTUsOSBAQCB2b2lk
IEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBh
dXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24gPT0gV3JpdGluZ0Rp
cmVjdGlvbjo6TGVmdFRvUmlnaHQgPyAibHRyIiA6IGRpcmVjdGlvbiA9PSBXcml0aW5nRGlyZWN0
aW9uOjpSaWdodFRvTGVmdCA/ICJydGwiIDogImluaGVyaXQiLCBmYWxzZSk7Ci0gICAgYXBwbHlQ
YXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uOjpTZXRXcml0
aW5nRGlyZWN0aW9uKTsKKyAgICBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUu
cHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBXcml0aW5nRGly
ZWN0aW9uIEVkaXRvcjo6YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNv
bnN0CkBAIC0yMDIzLDggKzIwMjMsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogCiAgICAg
ICAgICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25T
dGFydCwgZXh0ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWlu
KHN0ZDo6bWF4KHN0YXJ0LCBiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0
KTsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVh
dGUoYmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7
Ci0gICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0
ZWRSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpObyk7CisgICAgICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2RlLCBlbmQpOwor
ICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHNlbGVjdGVk
UmFuZ2UucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6Tm8pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcAppbmRleCA1NmNhNWJmMGE3Zjg5MzQwZWM3YjI0MmYwMTViMGU1NzhjYzM5ZDU3
Li45ZmRhYzFkNjExOTUzOGFjZTNkNGJmOGMwZWUzMTc5ZjQ3YzhiZDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTE0MiwxNiArMTQyLDE2IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSYgZnJhbWUsIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlLCBFZGl0QWN0CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0
eWxlKEZyYW1lJiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24g
YWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlW
YWx1ZSkKIHsKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHByb3BlcnR5VmFsdWUpOwogICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHNob3VsZEFw
cGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMgdGhlcmUgYSBnb29kIHJlYXNvbiBm
b3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51
T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxl
VG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgIGZyYW1lLmVkaXRvcigp
LmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5wdHIoKSwgYWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFw
cGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5h
cHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLnB0cigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTgyLDI3ICs1ODIsMjcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZUp1c3RpZnlSaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSBzb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvbkxlZnRUb1JpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8g
c3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6U2V0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5wdHIo
KSwgRWRpdEFjdGlvbjo6U2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaSwgQ1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGUo
c3R5bGUuZ2V0KCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1l
LmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUucHRyKCksIEVkaXRBY3Rpb246OlNldFdyaXRpbmdE
aXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFr
ZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7
CisgICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVk
KTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVl
UnRsKTsKLSAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0
aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxl
KHN0eWxlLnB0cigpLCBFZGl0QWN0aW9uOjpTZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRC
bG9ja0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1h
bmQuY3BwCmluZGV4IDZmNTMyMDhmZTZjMjE0OGEwMjU2MzdiNjEwZWIzMmFkYzZmMDE4NzIuLmU0
MzZjN2ZkZTIxZGJiMjAzNGI1OWM1Yjk1Mjg5ZmEzY2ZlZDcwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCB2
b2lkIEZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kLAogICAgIFJlZlB0cjxOb2RlPiBvdXRlckJsb2NrID0gKHN0
YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gbm9kZVRvU3BsaXRUbykgPyBzdGFydC5kZXByZWNhdGVk
Tm9kZSgpIDogc3BsaXRUcmVlVG9Ob2RlKCpzdGFydC5kZXByZWNhdGVkTm9kZSgpLCAqbm9kZVRv
U3BsaXRUbyk7CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVBZnRlckluc2VydGlvblBvc2l0aW9uID0g
b3V0ZXJCbG9jazsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRv
Y3VtZW50KCksIHN0YXJ0LCBlbmRPZlNlbGVjdGlvbik7CisgICAgYXV0byByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnQsIGVuZE9mU2VsZWN0aW9uKTsKICAgICBFbGVtZW50
KiByZWZOb2RlID0gZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChlbmQpOwogICAgIEVsZW1lbnQq
IHJvb3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydCk7CiAgICAgLy8gUm9vdCBpcyBu
dWxsIGZvciBlbGVtZW50cyB3aXRoIGNvbnRlbnRlZGl0YWJsZT1mYWxzZS4KICAgICBpZiAoIXJv
b3QgfHwgIXJlZk5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNFbGVtZW50Rm9yRm9y
bWF0QmxvY2socmVmTm9kZS0+dGFnUU5hbWUoKSkgJiYgc3RhcnQgPT0gc3RhcnRPZkJsb2NrKHN0
YXJ0KQotICAgICAgICAmJiAoZW5kID09IGVuZE9mQmxvY2soZW5kKSB8fCBpc05vZGVWaXNpYmx5
Q29udGFpbmVkV2l0aGluKCpyZWZOb2RlLCAqcmFuZ2UpKQorICAgICAgICAmJiAoZW5kID09IGVu
ZE9mQmxvY2soZW5kKSB8fCBpc05vZGVWaXNpYmx5Q29udGFpbmVkV2l0aGluKCpyZWZOb2RlLCBy
YW5nZS5nZXQoKSkpCiAgICAgICAgICYmIHJlZk5vZGUgIT0gcm9vdCAmJiAhcm9vdC0+aXNEZXNj
ZW5kYW50T2YoKnJlZk5vZGUpKSB7CiAgICAgICAgIC8vIEFscmVhZHkgaW4gYSBibG9jayBlbGVt
ZW50IHRoYXQgb25seSBjb250YWlucyB0aGUgY3VycmVudCBwYXJhZ3JhcGgKICAgICAgICAgaWYg
KHJlZk5vZGUtPmhhc1RhZ05hbWUodGFnTmFtZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCmluZGV4IGMxOWI3NzRhZDZiMzAzYjM5NTBjNmEx
MTU3NDA1Zjk0OGJhY2NhYzIuLjRlYzBiNGU1NWMzZWFmNjQwOGYyNTA1OTk2Y2ExZGNkYWE1ZjIz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNw
cApAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgUmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgLy8gR2V0IHRoZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlzIGVkaXRhYmxlIHJvb3QsIGl0
J3MgdGhlIHN0eWxlIHRoYXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAvLyBjb250ZW50IHRoYXQgd2Un
cmUgb3BlcmF0aW5nIG9uLgogICAgIE5vZGUqIHJvb3QgPSBlbmRpbmdTZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZGVmYXVsdFN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocm9vdCk7CisgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShyb290KTsKIAogICAgIC8vIFdlIHdhbnQgdG8gcmVtb3ZlIGV2
ZXJ5dGhpbmcgYnV0IHRyYW5zcGFyZW50IGJhY2tncm91bmQuCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBhY2Nlc3Mgc3R5bGUoKS4KICAgICBkZWZhdWx0U3R5bGUtPnN0eWxlKCktPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsK
IAotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUo
ZG9jdW1lbnQoKSwgZGVmYXVsdFN0eWxlLmdldCgpLCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRD
b21tYW5kLCBlZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShB
cHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHlsZS5wdHIoKSwg
aXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kLmNwcAppbmRleCA1MDJiYzA0ZDM1M2IyODNlMTg5MmVkZTI0OGM4YmUwNjY1ZGY3
MDkxLi4wNDFmOWQxMTdkNmEwMWViMmM1ODVhOGIyMTRkMzNkY2U4ZDg4MDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQu
Y3BwCkBAIC04OSw4ICs4OSw3IEBAIFJlZlB0cjxEYXRhVHJhbnNmZXI+IFJlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0CiAKIFZlY3RvcjxS
ZWZQdHI8U3RhdGljUmFuZ2U+PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OnRhcmdldFJh
bmdlcygpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiByYW5nZSA9IFN0YXRpY1Jh
bmdlOjpjcmVhdGVGcm9tUmFuZ2UoKm1fcmFuZ2VUb0JlUmVwbGFjZWQpOwotICAgIHJldHVybiB7
IDEsIHJhbmdlIH07CisgICAgcmV0dXJuIHsgMSwgU3RhdGljUmFuZ2U6OmNyZWF0ZUZyb21SYW5n
ZSgqbV9yYW5nZVRvQmVSZXBsYWNlZCkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAppbmRleCA0ODA0ZTkwYThlMjI5Y2I5ODRkNmY0Yzc2NTFjMmY5MThiNWVjNTY1Li5mODIzOWQy
YWE3MWZmYzFmNzE1MTc2ZWEwZjUzNjZhMjYwZDk3ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNDk2LDcgKzQ5Niw3
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0Fu
ZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1l
bnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50Pihub2RlLmdldCgpKTsKIAogICAgICAgICBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGUoKTsK
LSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7CisgICAgICAgIGF1dG8gbmV3SW5saW5lU3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7CiAgICAgICAgIGlmIChpbmxpbmVTdHls
ZSkgewogICAgICAgICAgICAgaWYgKGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAg
ICAgICAgICAgICBWZWN0b3I8UXVhbGlmaWVkTmFtZT4gYXR0cmlidXRlczsKQEAgLTc2Niw3ICs3
NjYsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxh
Y2VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBOb2RlKiB3cmFwcGluZ1N0eWxlU3BhbiA9IHRvcE5vZGU7Ci0gICAgUmVmUHRyPEVkaXRp
bmdTdHlsZT4gc3R5bGVBdEluc2VydGlvblBvcyA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGluc2Vy
dGlvblBvcy5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CisgICAgYXV0byBzdHlsZUF0SW5z
ZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5zZXJ0aW9uUG9zLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKICAgICBTdHJpbmcgc3R5bGVUZXh0ID0gc3R5bGVBdEluc2VydGlv
blBvcy0+c3R5bGUoKS0+YXNUZXh0KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzdHJpbmcgY29t
cGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0eWxlcy4KQEAgLTgwNCw3
ICs4MDQsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5z
KEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCiAgICAgaWYgKCF3cmFwcGluZ1N0eWxlU3Bh
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+aW5saW5lU3R5bGUoKSk7Cisg
ICAgYXV0byBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHdyYXBwaW5nU3R5bGVTcGFuLT5p
bmxpbmVTdHlsZSgpKTsKICAgICBDb250YWluZXJOb2RlKiBjb250ZXh0ID0gd3JhcHBpbmdTdHls
ZVNwYW4tPnBhcmVudE5vZGUoKTsKIAogICAgIC8vIElmIE1haWwgd3JhcHMgdGhlIGZyYWdtZW50
IHdpdGggYSBQYXN0ZSBhcyBRdW90YXRpb24gYmxvY2txdW90ZSwgb3IgaWYgeW91J3JlIHBhc3Rp
bmcgaW50byBhIHF1b3RlZCByZWdpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCBjMTA5ZGIwNGI3ZTcwZDgwZjFh
NDhmODU4ZGY0ZGJjMzZhZjM3ODNiLi43ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdlMDc2YTVlYTk4
MzgyMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTEyNCw4ICsxMjQsNyBAQCBTdHJpbmcgU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEoKSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFN0
YXRpY1JhbmdlPj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29u
c3QKIHsKLSAgICBSZWZQdHI8U3RhdGljUmFuZ2U+IHJhbmdlID0gU3RhdGljUmFuZ2U6OmNyZWF0
ZUZyb21SYW5nZShtX3JhbmdlVG9CZUNvcnJlY3RlZCk7Ci0gICAgcmV0dXJuIHsgMSwgcmFuZ2Ug
fTsKKyAgICByZXR1cm4geyAxLCBTdGF0aWNSYW5nZTo6Y3JlYXRlRnJvbVJhbmdlKG1fcmFuZ2VU
b0JlQ29ycmVjdGVkKSB9OwogfQogCiBSZWZQdHI8RGF0YVRyYW5zZmVyPiBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAwMGEyNTdmMDdjNjY3
MWI3NjgzYWIzZTQ3MmYxYTlmMzU3YWQ3NzNhLi5lODllODcwYTU2YjcwOTQ2YzdhZDdlYmJjMWNl
OTUxNDBjNTIwZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuY3BwCkBAIC0zMzcsOCArMzM3LDggQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAg
ICAgICAgaWYgKGluU2FtZVBhcmFncmFwaChwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigp
LCBtX3JhbmdlLT5lbmRQb3NpdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRo
ZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc2VhcmNoIHJh
bmdlIHRvIHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaCwKICAgICAgICAgICAgIC8vIHNpbmNlIHdl
IHdpbGwgd2FudCB0byBpZ25vcmUgcmVzdWx0cyBpbiB0aGlzIGFyZWEuCi0gICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBv
c2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOwotICAgICAgICAgICAgY3VycmVudEVu
ZE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNSYW5nZS5nZXQo
KSk7CisgICAgICAgICAgICBhdXRvIGVuZE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBh
cmFncmFwaFJhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIHBhcmFncmFwaFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIG1fcmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAg
Y3VycmVudEVuZE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kT2Zmc2V0QXNS
YW5nZS5wdHIoKSk7CiAgICAgICAgICAgICBsYXN0SXRlcmF0aW9uID0gdHJ1ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoY3VycmVudFN0YXJ0T2Zmc2V0IDwgY3VycmVudEVuZE9mZnNldCkgewpA
QCAtMzk3LDggKzM5Nyw4IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAg
ICAgaWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkgJiYgKCFjaGVja0dyYW1tYXIgfHwgYmFk
R3JhbW1hclBocmFzZS5pc0VtcHR5KCkgfHwgc3BlbGxpbmdMb2NhdGlvbiA8PSBncmFtbWFyRGV0
YWlsTG9jYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBzcGVsbGluZ09mZnNldCA9
IHNwZWxsaW5nTG9jYXRpb24gLSBjdXJyZW50U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZmlyc3RJdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcGFyYWdyYXBoT2Zmc2V0QXNSYW5nZSA9IFJhbmdlOjpjcmVhdGUocGFyYWdyYXBo
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgbV9yYW5nZS0+c3RhcnRQb3NpdGlv
bigpLCBwYXJhZ3JhcGhSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNwZWxsaW5nT2Zmc2V0ICs9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocGFyYWdy
YXBoT2Zmc2V0QXNSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHBh
cmFncmFwaE9mZnNldEFzUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBhcmFncmFwaFJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLmRvY3VtZW50KCksIG1fcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcGFyYWdy
YXBoUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVs
bGluZ09mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFz
UmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IG91dElzU3BlbGxpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBvdXRGaXJzdEZvdW5k
T2Zmc2V0ID0gc3BlbGxpbmdPZmZzZXQ7CkBAIC00MDgsOCArNDA4LDggQEAgU3RyaW5nIFRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVj
a0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tHcmFtbWFyICYmICFiYWRHcmFt
bWFyUGhyYXNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhbW1hclBo
cmFzZU9mZnNldCA9IGdyYW1tYXJQaHJhc2VMb2NhdGlvbiAtIGN1cnJlbnRTdGFydE9mZnNldDsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEl0ZXJhdGlvbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6
OmNyZWF0ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3Jh
bmdlLT5zdGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBwYXJhZ3JhcGhPZmZzZXRBc1JhbmdlID0gUmFuZ2U6OmNyZWF0
ZShwYXJhZ3JhcGhSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBtX3JhbmdlLT5z
dGFydFBvc2l0aW9uKCksIHBhcmFncmFwaFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCArPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKHBhcmFncmFwaE9mZnNldEFzUmFuZ2UucHRyKCkpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG91dElzU3BlbGxpbmcgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICAgICAgb3V0Rmlyc3RGb3VuZE9mZnNldCA9IGdyYW1tYXJQaHJhc2VPZmZzZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3OWI0M2NlYjI4
MzY3Zjg4NWVhYjVlZGNhOThhMjJjZTVhMmE4ZDYxLi42NzA2M2VlMTU2MmFlMzFmMjIwMjViMzU4
NTExZmRmNGQ5OThhNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAKQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGNtZCA9IFR5cGluZ0Nv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0VGV4dCwgbmV3VGV4dCwgb3B0aW9ucywgY29t
cG9zaXRpb25UeXBlKTsKLSAgICBhcHBseVRleHRJbnNlcnRpb25Db21tYW5kKGZyYW1lLmdldCgp
LCAqY21kLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOworICAgIGF1
dG8gY21kID0gVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRUZXh0LCBuZXdU
ZXh0LCBvcHRpb25zLCBjb21wb3NpdGlvblR5cGUpOworICAgIGFwcGx5VGV4dEluc2VydGlvbkNv
bW1hbmQoZnJhbWUuZ2V0KCksIGNtZC5nZXQoKSwgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uLCBjdXJy
ZW50U2VsZWN0aW9uKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWso
RG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMpCkBAIC00OTksOCArNDk5LDcgQEAg
Ym9vbCBUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29t
bWFuZCBjb21tYW5kVHlwZSwgVGV4dEcKICAgICBpZiAoIXJhbmdlIHx8IGlzRWRpdGluZ1RleHRB
cmVhT3JUZXh0SW5wdXQoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFw
cGx5RWRpdGluZygqdGhpcywgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnRhcmdldFJhbmdlc0ZvckJp
bmRpbmdzKCkpOwogCi0gICAgUmVmUHRyPFN0YXRpY1JhbmdlPiBzdGF0aWNSYW5nZSA9IFN0YXRp
Y1JhbmdlOjpjcmVhdGVGcm9tUmFuZ2UoKnJhbmdlKTsKLSAgICByZXR1cm4gZnJhbWUoKS5lZGl0
b3IoKS53aWxsQXBwbHlFZGl0aW5nKCp0aGlzLCB7IDEsIHN0YXRpY1JhbmdlIH0pOworICAgIHJl
dHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBseUVkaXRpbmcoKnRoaXMsIHsgMSwgU3RhdGlj
UmFuZ2U6OmNyZWF0ZUZyb21SYW5nZSgqcmFuZ2UpIH0pOwogfQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZUZv
ckFkZGVkVHlwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IGY0ZjlkNTBlZDEyMDVmODg0NTRiNmU4NmE0YTFiZmY0YzRkYTIxYmYuLjE3YjQ0MGU2MjdjOTc5
OTEyZTk5YzFjNjk5YzI5OTM4YjE0YTA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTE4OTMsMTAgKzE4OTMsMTAgQEAgaW50IGRpc3RhbmNlQmV0d2VlblBv
c2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
IG8KICAgICBib29sIHRoaXNJc1N0YXJ0ID0gKHZwIDwgb3RoZXIpOwogCiAgICAgLy8gU3RhcnQg
bXVzdCBjb21lIGZpcnN0IGluIHRoZSBSYW5nZSBjb25zdHJ1Y3Rvci4KLSAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWRO
b2RlKCktPmRvY3VtZW50KCksCisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVl
cEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IHZwIDogb3RoZXIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IG90
aGVyIDogdnApKTsKLSAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLmdldCgpKTsKKyAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHJhbmdlLnB0cigpKTsKIAogICAgIHJldHVybiAodGhpc0lzU3RhcnQgPyAtZGlzdGFuY2Ug
OiBkaXN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCA1Y2NmNDQ2MjQwOTY4MTNlODY5MjdlYjMwMzkzMjQ4OWZmMDI5YjkxLi41ZGU3
MTZmYTFhYzRhOWI2OWM4NWYwOTY2YmEyOTNiZmFiYjI2YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEVk
aXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0
ZXJEYXRhKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJj
aGl2ZUZvcm1hdCgpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1lKTsKKyAgICBhdXRv
IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKCZtX2ZyYW1l
KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25D
b21tYW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1h
bmRJT1MuY3BwCmluZGV4IDc1ZjU0YTEzMTA0YTM0ZjM4ZDFkNjg0YTM3ZjJlYTg5NjM0MjFkMTgu
LjJjNGI2MGQwMTQzMzExMTVjYjkxMmM3MGVkOWZjYzViMjUzNGYzYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC02Nyw4
ICs2Nyw4IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCiAgICAgRWxlbWVu
dCogcm9vdCA9IGFmdGVyUmVzdWx0cy5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKICAgICAvLyBG
SVhNRTogQWRkIHRoZSByZXN1bHQgbWFya2VyIHVzaW5nIGEgUG9zaXRpb24gY2FjaGVkIGJlZm9y
ZSByZXN1bHRzIGFyZSBpbnNlcnRlZCwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIFRleHRJdGVyYXRv
cnMuCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvRW5kID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKE5vZGUgKilyb290LCAwKSwgYWZ0ZXJS
ZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5nZXQoKSwgdHJ1ZSk7CisgICAgYXV0byByYW5nZVRv
RW5kID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24oKE5vZGUgKilyb290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkpOworICAg
IGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5wdHIo
KSwgdHJ1ZSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExlbmd0aDsK
IAogICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0Vk
aXRvcklPUy5tbQppbmRleCBmMzdmZGU3ZmY0NWRiYjU1YTU1NjAyOTgyZWVmMmM4OWNjNGU0Yzc3
Li4yMzBmNWUzYjQxNzMyYjFlNjI4NDUwOWQxNDQ1NTg3ZGEzZGYyOTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgRWRpdG9y
OjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdE
aXJlY3Rpb24gZGlyCiAgICAgLy8gSWYgdGhlIHRleHQgaGFzIGxlZnQgb3IgcmlnaHQgYWxpZ25t
ZW50LCBmbGlwIGxlZnQtPnJpZ2h0IGFuZCByaWdodC0+bGVmdC4gCiAgICAgLy8gT3RoZXJ3aXNl
LCBkbyBub3RoaW5nLgogCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc2VsZWN0aW9uU3R5bGUg
PSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpKTsKKyAgICBhdXRvIHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0eWxlOjpz
dHlsZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAg
ICAgaWYgKCFzZWxlY3Rpb25TdHlsZSB8fCAhc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpCiAgICAg
ICAgICByZXR1cm47CiAKQEAgLTEzOCwxNyArMTM4LDE3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24g
ZGlyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKKyAgICBh
dXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBuZXdWYWx1ZSk7Ci0gICAgYXBwbHlQ
YXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHls
ZS5wdHIoKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBzdHlsZXMgdGhhdCB0aGUgdXNlciBjYW5u
b3QgbW9kaWZ5IGJ5IGFwcGx5aW5nIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgogICAgIAotICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7Ci0gICAgUmVmUHRyPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS5nZXQoKS0+c3R5bGUo
KS0+bXV0YWJsZUNvcHkoKTsKKyAgICBhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKSk7CisgICAgYXV0byBk
ZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAg
CiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUg
VUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCiAg
ICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
InJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgRWRp
dG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGRlZmF1bHRTdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7IC8vIGlt
cGxlbWVudHMgdW5kZXJsaW5lCiAKICAgICAvLyBGSVhNRSBhZGQgRWRpdEFjdGlvbjo6TWF0Y2hT
dGx5ZSA8cmRhcjovL3Byb2JsZW0vOTE1NjUwNz4gVW5kbyByaWNoIHRleHQncyBwYXN0ZSAmIG1h
dGNoIHN0eWxlIHNob3VsZCBzYXkgIlVuZG8gTWF0Y2ggU3R5bGUiCi0gICAgYXBwbHlTdHlsZVRv
U2VsZWN0aW9uKGRlZmF1bHRTdHlsZS5nZXQoKSwgRWRpdEFjdGlvbjo6Q2hhbmdlQXR0cmlidXRl
cyk7CisgICAgYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGRlZmF1bHRTdHlsZS5wdHIoKSwgRWRpdEFj
dGlvbjo6Q2hhbmdlQXR0cmlidXRlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGdldEltYWdlKEVsZW1l
bnQmIGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2UsIENhY2hlZEltYWdlKiYgY2Fj
aGVkSW1hZ2UpCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KIAog
ICAgIFBvc2l0aW9uIGJlZm9yZUltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246
OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpOwogICAgIFBvc2l0aW9uIGFmdGVySW1hZ2VQb3NpdGlv
bigmaW1hZ2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1
bWVudCgpLCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOwotICAgIGNs
aWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UuZ2V0KCks
IHBhc3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEp
OworICAgIGF1dG8gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VFbGVtZW50LmRvY3Vt
ZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlvbik7CisgICAgY2xp
ZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VSYW5nZS5wdHIoKSwg
cGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSk7
CiAKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNDYyMmY4NjZiZDIwNjExODVmMzI5NTVl
ZTdlNzliZTFkNjkyZjI1Zi4uM2ZlNmY0ZTdlNDUyMTI1YjUxZmExZmM3ZDQ4MDYxYzJjNDZiYjc3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTYwLDggKzE2
MCw4IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9u
SXNBZnRlckFuY2hvcikpOwotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwor
ICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9u
KG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwg
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAgIG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVj
dGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpOwogCkBAIC0xNzYsOSArMTc2LDkgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGJvb2wgY2hvc2VQ
bGFpblRleHQ7Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHdl
YkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxh
aW5UZXh0KSkgeworICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3
ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgcmFuZ2UuZ2V0KCksIHRydWUsIGNo
b3NlUGxhaW5UZXh0KSkgewogICAgICAgICBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21l
bnQoKm5vZGUsICpmcmFnbWVudCk7Ci0gICAgICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgq
ZnJhZ21lbnQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpCisgICAg
ICAgIGlmIChzaG91bGRJbnNlcnRGcmFnbWVudCgqZnJhZ21lbnQsIHJhbmdlLnB0cigpLCBFZGl0
b3JJbnNlcnRBY3Rpb246OlBhc3RlZCkpCiAgICAgICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJh
Z21lbnQucmVsZWFzZU5vbk51bGwoKSwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFz
dGVib2FyZCksIGZhbHNlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3Rl
KTsKICAgICB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVs
ZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOworICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlm
ICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAzMWUxOGE1MWM4YmJiNDllYTE0NjQ3ZmY0NDFj
NTQ3MGFlMjkwNGFiLi4wZTFjYzIyNmVjNWMxMDJmNGY3M2QwNDExNWZkNzc3OWYxZTdhOGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RhdGljIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0FuZElubGluZURlY2woTm9k
ZSYgbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBlbGVtZW50ID0g
ZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0
eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsKKyAgICBh
dXRvIHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC5pbmxpbmVTdHlsZSgpKTsK
ICAgICBzdHlsZS0+bWVyZ2VTdHlsZUZyb21SdWxlcyhlbGVtZW50KTsKLSAgICByZXR1cm4gc3R5
bGU7CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBzdGF0aWMgYm9vbCBpc0VsZW1l
bnRQcmVzZW50YXRpb25hbChjb25zdCBOb2RlKiBub2RlKQpAQCAtMTIxMSw4ICsxMjExLDggQEAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFn
bWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICAgICAgLy8gQmFzZWQgb24gdGhlIGRvY3VtZW50
YXRpb24gSSBjYW4gZmluZCwgaXQgbG9va3MgbGlrZSB3ZSB3YW50IHRvIHN0YXJ0IHBhcnNpbmcg
dGhlIGZyYWdtZW50IGluIHRoZSBJbkJvZHkgaW5zZXJ0aW9uIG1vZGUuCiAgICAgICAgIC8vIFVu
Zm9ydHVuYXRlbHksIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIHBhcnNl
ci4KICAgICAgICAgLy8gV2UgYWNoaWV2ZSB0aGF0IGVmZmVjdCBoZXJlIGJ5IHBhc3NpbmcgaW4g
YSBmYWtlIGJvZHkgZWxlbWVudCBhcyBjb250ZXh0IGZvciB0aGUgZnJhZ21lbnQuCi0gICAgICAg
IFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGZha2VCb2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVh
dGUob3V0cHV0RG9jKTsKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcs
IGZha2VCb2R5LmdldCgpKTsKKyAgICAgICAgYXV0byBmYWtlQm9keSA9IEhUTUxCb2R5RWxlbWVu
dDo6Y3JlYXRlKG91dHB1dERvYyk7CisgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNl
U3RyaW5nLCBmYWtlQm9keS5wdHIoKSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9
PSAidGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChUZXh0
OjpjcmVhdGUob3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDA0MzQxMjkwMmE0MGZl
NDE3MWI3NjUyZDk4YjBhM2UyZTI4ZDUxNTcuLjg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThj
NDJlZmEwOWI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcApAQCAtMjE3LDkgKzIxNyw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB2b2lkIEZpbGVSZWFkZXJM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKIHsKICAgICBpZiAobV92YXJp
YWJsZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMgPiBtX2J5dGVzTG9hZGVkKSB7Ci0gICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9IG1fcmF3RGF0YS0+c2xpY2UoMCwgbV9ieXRlc0xv
YWRlZCk7Ci0KLSAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsKKyAgICAgICAgbV9yYXdEYXRh
ID0gbV9yYXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKICAgICAgICAgbV90b3RhbEJ5
dGVzID0gbV9ieXRlc0xvYWRlZDsKICAgICB9CiAgICAgY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBkN2UyYjc1YTQ1MzEyMGIw
MmQ3Yzc0MmQ0NjBmNDZhNGRkNTk5NDhlLi5kNzgxMTBjYzllZGI5ZGEwMDRkNDE1ODRhYzQ5ZGJh
ZTAwMjRlOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKIAogc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQ
YXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGly
ZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJl
dHVybiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCAzNTQyOWYxYzg2YjBjMWVhOTk3OGZkYTRjZjlhZTA0ZWI0M2YwZTk1Li5iOGIwNGFjYjk2NTU2
NzBiMjQ4Y2M4N2NkMWRhOGM2ZDc2NTgzYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZChjb25zdCBNZWRpYVBsYXll
ciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpZZXMpOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Olllcyk7CiAKICAgICAvLyBEb24n
dCBzZXQgdGhlIGV2ZW50IHRhcmdldCwgdGhlIGV2ZW50IHF1ZXVlIHdpbGwgc2V0IGl0IGluIEdl
bmVyaWNFdmVudFF1ZXVlOjp0aW1lckZpcmVkIGFuZCBzZXR0aW5nIGl0IGhlcmUKICAgICAvLyB3
aWxsIHRyaWdnZXIgYW4gQVNTRVJUIGlmIHRoaXMgZWxlbWVudCBoYXMgYmVlbiBtYXJrZWQgZm9y
IGRlbGV0aW9uLgpAQCAtNjQ0NSw3ICs2NDQ1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpj
cmVhdGVNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzPiBtZWRpYUNvbnRyb2xz
ID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGF1dG8gbWVkaWFDb250
cm9scyA9IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBpZiAoIW1lZGlh
Q29udHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAKaW5kZXggZmY5NmY0ZjI0MzViMDk4ZTA2NjYyZjMzY2MyMDVlMDAw
YjM3OTE2ZC4uMjI0ODA3YTI2MzRmMDFlOTMzNDllNzdhOTNjZjQ1MDFkYWZkMWUzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC00NzMsOSArNDczLDkgQEAg
SFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRl
cnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVJlZlB0cjxTdHlsZVByb3Bl
cnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpCitSZWY8U3R5
bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQog
ewotICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OmNyZWF0ZSgpOworICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKIAogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCk7CiAgICAgc3dpdGNoIChjZWxsQm9yZGVycygpKSB7CkBAIC01MTEsNyAr
NTExLDcgQEAgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKICAgICBpZiAobV9wYWRkaW5nKQogICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlQYWRkaW5nLCBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobV9w
YWRkaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAKLSAgICByZXR1cm4gc3R5bGU7
CisgICAgcmV0dXJuIFdURk1vdmUoc3R5bGUpOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRpZXMq
IEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA5MTAzNWYyN2NhNGQ0MzQzMGE4NzkzYWVkOTdhMTk4
MWEzOTkxM2IwLi5hN2I3ZjgxZWU0YmNmMDcxZjg4MjVlM2JiNjc0ZGM5NTIxZTkzY2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFz
cyBIVE1MVGFibGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIAogICAgIENl
bGxCb3JkZXJzIGNlbGxCb3JkZXJzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0
aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKKyAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBj
cmVhdGVTaGFyZWRDZWxsU3R5bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBs
YXN0Qm9keSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0
aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggNjU2YWJmYmRhMGJk
YmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOS4uM2E4ZDU0MTNmOTMxNDhlMTNmNDlmOTY4NTUw
NjI5ZjRjMDljMzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtODMsNyArODMsNyBAQCBT
dHJpbmcgVVJMVXRpbHM8VD46OnRvSlNPTigpIGNvbnN0CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
IFN0cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBh
dXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKICAgICByZXR1cm4g
b3JpZ2luLT50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYWI4OWZmOWU4N2Q1ZGIzODg3OTZi
OTQ1OTJjNzFjOTlkNzQ1OTkyOC4uY2YxYjUzYmRiMjNmNzk4ZmIyMTM4Yjk2ODk1MDQ4OTE5YmM0
MjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcApAQCAtNjcyLDcgKzY3Miw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJm
CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3It
dGhlLXRva2VuCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50Rm9y
Q3VycmVudE5vZGUoKTsKICAgICBib29sIGluc2lkZVRlbXBsYXRlRWxlbWVudCA9ICFvd25lckRv
Y3VtZW50LmZyYW1lKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVu
dEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIG93bmVyRG9jdW1lbnQsIGlu
c2lkZVRlbXBsYXRlRWxlbWVudCA/IG51bGxwdHIgOiBmb3JtKCksIHRydWUpOworICAgIGF1dG8g
ZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KGxvY2FsTmFt
ZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50ID8gbnVsbHB0ciA6IGZvcm0o
KSwgdHJ1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkgewogICAgICAgICBpZiAoYXV0
byogZWxlbWVudEludGVyZmFjZSA9IGZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKG93bmVyRG9j
dW1lbnQsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVu
dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKaW5kZXggODU0ZWE3N2ZhOGM3NDcwZmZkYmZlNTI2OTVkMmFmMzQ1
NjFjYTYxNi4uMGIxNDY3OWJjY2UwMTNmYjM4NWVhNWYzOTBhODI0NmUxYjNmNjRjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclMKICAg
ICAgICAgLy8gU2V0ICJmbGV4LWJhc2lzOiAxZW0iLiBOb3RlIHRoYXQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVMZW5ndGhJbnQoKSBvbmx5IG5lZWRzIHRoZSBlbGVtZW50J3MKICAgICAgICAg
Ly8gc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0
IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0cgogICAgICAgICAvLyBmb3Ig
dGhlIHJvb3QgZWxlbWVudCBzdHlsZSBhbmQgdGhlIHJlbmRlciB2aWV3LgotICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOworICAgICAgICBhdXRvIGVtU2l6ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwog
ICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAxLjAs
IGZhbHNlIH0pOwogICAgICAgICBuZXdTdHlsZS0+c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVs
cywgRml4ZWQgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwCmluZGV4IDExMjI3YTdlYTQ0M2FiMGRiZjkyY2NlMTFiMmMzYjYxN2UyMDkwZDguLjM1
YzI5MzI5MmViMDE5MzUwNzY3MGI4OTBhNDI2MjAyZDg5ZTVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwMiwxNCArNTAyLDE0IEBAIFJlZjxE
b2N1bWVudEZyYWdtZW50PiBXZWJWVFRQYXJzZXI6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9t
Q3VlVGV4dChEb2N1bWVudCYKIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNyZWF0ZU5ld0N1ZSgpCiB7
Ci0gICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+IGN1ZSA9IFdlYlZUVEN1ZURhdGE6OmNyZWF0ZSgp
OworICAgIGF1dG8gY3VlID0gV2ViVlRUQ3VlRGF0YTo6Y3JlYXRlKCk7CiAgICAgY3VlLT5zZXRT
dGFydFRpbWUobV9jdXJyZW50U3RhcnRUaW1lKTsKICAgICBjdWUtPnNldEVuZFRpbWUobV9jdXJy
ZW50RW5kVGltZSk7CiAgICAgY3VlLT5zZXRDb250ZW50KG1fY3VycmVudENvbnRlbnQudG9TdHJp
bmcoKSk7CiAgICAgY3VlLT5zZXRJZChtX2N1cnJlbnRJZCk7CiAgICAgY3VlLT5zZXRTZXR0aW5n
cyhtX2N1cnJlbnRTZXR0aW5ncyk7CiAKLSAgICBtX2N1ZWxpc3QuYXBwZW5kKGN1ZSk7CisgICAg
bV9jdWVsaXN0LmFwcGVuZChXVEZNb3ZlKGN1ZSkpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgbV9jbGllbnQtPm5ld0N1ZXNQYXJzZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggNjQzZmRkNzlhNWZlMTgyZTNmM2M5MWQyOTQy
YmU4NzZjMzkzOTBiMy4uYzhkYmEwMjMxZWIxNTUzMWUzOTA3YzliNTk2ZWMxMWMyMjI3YjAyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBFeGNlcHRpb25PcjxOb2RlKj4gRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5v
ZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXApCiAKICAgICBOb2RlKiBwcmV2aW91
c1NpYmxpbmcgPSBub2RlLnByZXZpb3VzU2libGluZygpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNv
ZGUgc2hvdWxkIHVzZSBvbmUgb2YgY3JlYXRlRnJhZ21lbnQqIGluIG1hcmt1cC5oCi0gICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KG1fZG9jdW1lbnQpOworICAgIGF1dG8gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVh
dGUobV9kb2N1bWVudCk7CiAgICAgaWYgKG1fZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKICAg
ICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIG5vZGUucGFyZW50RWxlbWVudCgpID8g
bm9kZS5wYXJlbnRFbGVtZW50KCkgOiBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKTsKICAg
ICBlbHNlCkBAIC0xNDMsNyArMTQzLDcgQEAgRXhjZXB0aW9uT3I8Tm9kZSo+IERPTVBhdGNoU3Vw
cG9ydDo6cGF0Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwKQogCiAgICAg
aWYgKGlubmVyUGF0Y2hDaGlsZHJlbigqcGFyZW50Tm9kZSwgb2xkTGlzdCwgbmV3TGlzdCkuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRvdGFsIHJlcGxhY2UuCi0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9kb21FZGl0b3IucmVwbGFjZUNoaWxkKCpwYXJlbnROb2Rl
LCAqZnJhZ21lbnQsIG5vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZG9tRWRpdG9yLnJl
cGxhY2VDaGlsZCgqcGFyZW50Tm9kZSwgZnJhZ21lbnQuZ2V0KCksIG5vZGUpOwogICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAppbmRleCA5YjY4YzRiMDVjM2I2M2VhMWVmZjcxYjAxYWU5YjE1OWZiY2U2
N2QzLi44YjY3NjJmZDU5NWE0M2ExMzFlZTBhNzVlMWMyMDY3ZDAwMmFjMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtNDc1LDcgKzQ3NSw3
IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0ZT4gSW5z
cGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgaWYgKGlzPENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRD4obV9jb250ZXh0KSkgewogICAgICAgICBhdXRvJiBjb250ZXh0MmQgPSBkb3duY2Fz
dDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dCk7CiAgICAgICAgIGZvciAoYXV0
byYgc3RhdGUgOiBjb250ZXh0MmQuc3RhdGVTdGFjaygpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgYXV0byBzdGF0ZVBheWxvYWQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogCiAg
ICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEFycmF5KHN0cmluZ0luZGV4Rm9yS2V5KCJzZXRU
cmFuc2Zvcm0iX3MpLCBidWlsZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKHN0YXRlLnRyYW5zZm9y
bSkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXREb3VibGUoc3RyaW5nSW5kZXhGb3JL
ZXkoImdsb2JhbEFscGhhIl9zKSwgY29udGV4dDJkLmdsb2JhbEFscGhhKCkpOwpAQCAtNTMzLDcg
KzUzMyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYWxTdGF0
ZT4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTCiAgICAgZWxzZSBpZiAoaXM8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4obV9jb250ZXh0KSkgewogICAgICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0V2ViR0xCYXNlID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZT4obV9jb250ZXh0KTsKICAgICAgICAgaWYgKE9wdGlvbmFsPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgPSBjb250ZXh0V2ViR0xCYXNlLmdl
dENvbnRleHRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+
IHdlYkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGF1dG8gd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxvYWQgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgd2ViR0xDb250ZXh0QXR0cmlidXRlc1BheWxv
YWQtPnNldEJvb2xlYW4oImFscGhhIl9zLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzLT5hbHBoYSk7
CiAgICAgICAgICAgICB3ZWJHTENvbnRleHRBdHRyaWJ1dGVzUGF5bG9hZC0+c2V0Qm9vbGVhbigi
ZGVwdGgiX3MsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMtPmRlcHRoKTsKICAgICAgICAgICAgIHdl
YkdMQ29udGV4dEF0dHJpYnV0ZXNQYXlsb2FkLT5zZXRCb29sZWFuKCJzdGVuY2lsIl9zLCB3ZWJH
TENvbnRleHRBdHRyaWJ1dGVzLT5zdGVuY2lsKTsKQEAgLTY0Myw4ICs2NDMsOCBAQCBSZWY8SlNP
Tjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29u
c3QgU3RyaW5nJiBuYW1lLAogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBhcmFtZXRlcnNE
YXRhKSk7CiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVzKSk7CiAKLSAg
ICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiB0cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwotICAgIGFjdGlvbi0+YWRkSXRl
bShpbmRleEZvckRhdGEoV1RGTW92ZSh0cmFjZSkpKTsKKyAgICBhdXRvIHRyYWNlID0gSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJ
bnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7Cisg
ICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YSh0cmFjZS5wdHIoKSkpOwogCiAgICAgcmV0
dXJuIGFjdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA4ZTFjNDgyOWRmZjViZWFjMWQ2
ZmMwMzIwOWNlYmZkMGM0NTA1Nzc0Li5hMGMzODg3YTZlZmMyYTA1MWMzYTM1MzE0N2Q3MTM2Y2Y4
YWM4YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1
bWVudCgpLCBtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2Js
YW5rIl9zLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNl
bmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpBbGxvdywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3csIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CiAKICAgICBib29sIGNyZWF0
ZWQ7Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyhtYWlu
RnJhbWUsIG1haW5GcmFtZSwgV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgeyB9LCBjcmVhdGVk
KTsKKyAgICBhdXRvIGZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2luZG93KG1haW5GcmFtZSwgbWFp
bkZyYW1lLCBXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCB7IH0sIGNyZWF0ZWQpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGQxOWYyYWM4NTc2YjI5MmNjY2M3YWM5
ZWMzMDgzMzQ0MTk4ZWUwZTEuLjY4NzE2NTRjZWQ4N2MxY2U4YzI5ODM2ZjgxZDdmYzg0YTMzNWI3
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NT
U1J1bGVMaXN0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAgICAgaWYgKCFzdHlsZVNoZWV0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlz
dD4gbGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIGxpc3QgPSBT
dGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4m
IGxpc3RSdWxlcyA9IGxpc3QtPnJ1bGVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6
ZSA9IHN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBsaXN0UnVs
ZXMuYXBwZW5kKHN0eWxlU2hlZXQtPml0ZW0oaSkpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcygpIGNvCiAKICAgICAgICAgYXV0byBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQg
PyBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKIAot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJv
cGVydHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQor
ICAgICAgICBhdXRvIHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKQog
ICAgICAgICAgICAgLnJlbGVhc2UoKTsKQEAgLTY5NiwxMSArNjk2LDExIEBAIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGVydGllcygpIGNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0
ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5
LnNldChjYW5vbmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5vbmljYWxQcm9w
ZXJ0eU5hbWUsIHByb3BlcnR5LmNvcHlSZWYoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hv
dWxkSW5hY3RpdmF0ZSkgewogICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNl
dFN0YXR1cyhJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFj
dGl2ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQ
cm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25p
Y2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpbXBsaWNpdCA9IG1f
c3R5bGUtPmlzUHJvcGVydHlJbXBsaWNpdChuYW1lKTsKQEAgLTEzMzIsMTIgKzEzMzIsMTIgQEAg
Ym9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICBpZiAoIW1f
cGFyc2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENv
bnRlbnRzOjpjcmVhdGUoKTsKKyAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29u
dGVudHM6OmNyZWF0ZSgpOwogICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250
ZXh0IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93
bmVyRG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRT
dHlsZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVs
ZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwotICAgIENTU1BhcnNlcjo6cGFyc2VTaGVldEZvcklu
c3BlY3Rvcihjb250ZXh0LCBuZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQt
PnRleHQoKSwgaGFuZGxlcik7CisgICAgQ1NTUGFyc2VyOjpwYXJzZVNoZWV0Rm9ySW5zcGVjdG9y
KGNvbnRleHQsIG5ld1N0eWxlU2hlZXQucHRyKCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgp
LCBoYW5kbGVyKTsKICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEoV1RGTW92
ZShydWxlU291cmNlRGF0YVJlc3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQt
Pmhhc1NvdXJjZURhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZmRkNWM3ZTA1NTIxYTkx
NmU0NDM5OTAyMjFlMGNhYzJkNjU1NDkwMC4uZTM4ZDFhMzgzZDMzOTQyMTRiN2JhOGJmNDA1NmZh
ZjgzNGJhMDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTQzOCw4ICs0MzgsOCBAQCB2b2lkIElu
c3BlY3RvckNhbnZhc0FnZW50OjpkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZh
c1JlbmRlcmluZ0NvbnRleAogCiAgICAgY29udGV4dC5jYW52YXNCYXNlKCkuYWRkT2JzZXJ2ZXIo
KnRoaXMpOwogCi0gICAgUmVmUHRyPEluc3BlY3RvckNhbnZhcz4gaW5zcGVjdG9yQ2FudmFzID0g
SW5zcGVjdG9yQ2FudmFzOjpjcmVhdGUoY29udGV4dCk7Ci0gICAgbV9pZGVudGlmaWVyVG9JbnNw
ZWN0b3JDYW52YXMuc2V0KGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JD
YW52YXMpOworICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gSW5zcGVjdG9yQ2FudmFzOjpjcmVh
dGUoY29udGV4dCk7CisgICAgbV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuc2V0KGluc3Bl
Y3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpKTsKIAog
ICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC00NTAsNyArNDUwLDcgQEAg
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4
dChDYW52YXNSZW5kZXJpbmdDb250ZXgKICAgICBpZiAobV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZy
YW1lQ291bnQpIHsKICAgICAgICAgUmVjb3JkaW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwog
ICAgICAgICByZWNvcmRpbmdPcHRpb25zLmZyYW1lQ291bnQgPSBtX3JlY29yZGluZ0F1dG9DYXB0
dXJlRnJhbWVDb3VudC52YWx1ZSgpOwotICAgICAgICBzdGFydFJlY29yZGluZygqaW5zcGVjdG9y
Q2FudmFzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6QXV0b0Nh
cHR1cmUsIFdURk1vdmUocmVjb3JkaW5nT3B0aW9ucykpOworICAgICAgICBzdGFydFJlY29yZGlu
ZyhpbnNwZWN0b3JDYW52YXMuZ2V0KCksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6
SW5pdGlhdG9yOjpBdXRvQ2FwdHVyZSwgV1RGTW92ZShyZWNvcmRpbmdPcHRpb25zKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDU4MTczYWNhM2Y3NGJjMmYzOTM0NjU2
NzQxZTUwNTFlNGYxMTJhYzguLjk2YmM4N2VmOGMxYWZkODk3YmQyNmJmMjI2OWU0MTA1NTk0ZGVh
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNzYsMTQgKzE3NiwxNCBAQCBzdGF0aWMg
UmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJL
ZXlQYXRoPiYgaWRiS2V5UAogICAgICAgICByZXR1cm4gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlw
ZShLZXlQYXRoOjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CiAKICAgICBhdXRvIHZpc2l0b3IgPSBX
VEY6Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7Ci0gICAgICAgIFJlZlB0
cjxLZXlQYXRoPiBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpU
eXBlOjpTdHJpbmcpLnJlbGVhc2UoKTsKKyAgICAgICAgYXV0byBrZXlQYXRoID0gS2V5UGF0aDo6
Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpTdHJpbmcpLnJlbGVhc2UoKTsKICAgICAg
ICAga2V5UGF0aC0+c2V0U3RyaW5nKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBrZXlQYXRoOwog
ICAgIH0sIFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpIHsKICAgICAgICAgYXV0byBh
cnJheSA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoYXV0
byYgc3RyaW5nIDogdmVjdG9yKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nKTsK
LSAgICAgICAgUmVmUHRyPEtleVBhdGg+IGtleVBhdGggPSBLZXlQYXRoOjpjcmVhdGUoKS5zZXRU
eXBlKEtleVBhdGg6OlR5cGU6OkFycmF5KS5yZWxlYXNlKCk7CisgICAgICAgIGF1dG8ga2V5UGF0
aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpLnJlbGVh
c2UoKTsKICAgICAgICAga2V5UGF0aC0+c2V0QXJyYXkoV1RGTW92ZShhcnJheSkpOwogICAgICAg
ICByZXR1cm4ga2V5UGF0aDsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyYjYwYzQ1Yjc4ODU5
OGEwNjU5YjhmYWRjODU3NmIzOTFiODRlNWQxLi41YzFjYTkyOTQwZmFkZDJlZmY2ZmM1MDczMmE4
ZDJjMzlkYTM2ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcq
IGRhdGEpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0YpCiAgICAgRnJhbWUm
IGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZnJhbWUpOworICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShmcmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1h
aW4gZnJhbWUiX3M7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggMTdhYWQ0ZGIyZjJhMmUzYjA1MzVkYjZmZGE2MTAzY2E5MWQ5NGM3NC4u
YTI4ZWM2OGNkMzlkNDQ1MTRjZTcyNjZhODM3OGJmMTMzYjZjYWJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTM4MywxNCArMzgzLDE0IEBAIGNsYXNzIEVtcHR5
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UgZmlu
YWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZSB7Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQotICAgICAgICBSZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gY29weShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0
eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CisgICAgICAgIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFy
ZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBFbXB0eVN0b3JhZ2VBcmVhKTsgfQorICAgICAgICBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gY29w
eShQYWdlKikgZmluYWwgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3Bh
Y2UpOyB9CiAgICAgfTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOwotICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpIGZp
bmFsOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKLSAgICBSZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5
T3JpZ2luJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpIGZpbmFsOworICAgIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQp
IGZpbmFsOworICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBmaW5hbDsKKyAgICBSZWY8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQpIGZpbmFsOwogfTsKIAogY2xhc3MgRW1wdHlVc2VyQ29udGVudFByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIFVzZXJDb250ZW50UHJvdmlkZXIgewpAQCAtNTEzLDIyICs1MTMs
MjIgQEAgdm9pZCBFbXB0eUVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYp
CiB7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVmUHRyPFN0b3Jh
Z2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25l
ZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOwog
fQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotUmVm
UHRyPFN0b3JhZ2VOYW1lc3BhY2U+IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25l
ZCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5z
aWduZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkNjczZTkwOTFh
NGIxOWMxNzU0ZGZmMTNlMjc0MTE5ZTRjYWRkYTUuLjQ4MGZiMmExZjc1YjNiZmM1MDI1NWViMmZm
MDdkMDUwZmIyOTA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MTMzOCw3ICsxMzM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1
ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChuZXdVUkwpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiByZWZlcnJlck9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHJlZmVycmVyKTsKKyAgICAgICAgYXV0byByZWZlcnJlck9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKTsKICAgICAgICAgYWRkSFRUUE9y
aWdpbklmTmVlZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsKICAgICB9
CiAgICAgaWYgKCZtX2ZyYW1lLnRyZWUoKS50b3AoKSAhPSAmbV9mcmFtZSkKQEAgLTM0OTksNyAr
MzQ5OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVP
cHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiAKICAgICBzd2l0Y2ggKGRpc3Bvc2l0
aW9uKSB7CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewotICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsK
KyAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAg
ICAgIGlmICghb3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7CkBAIC0zNjQ5LDcgKzM2NDksNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBG
cmFtZUxvYWRUeXBlIGxvYQogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0uZm9ybUNvbnRlbnRUeXBlKCkpOwotICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS5yZWZlcnJlcigpKTsKKyAgICAgICAgYXV0byBzZWN1
cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVmZXJy
ZXIoKSk7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9y
aWdpbi0+dG9TdHJpbmcoKSk7CiAgICAgICAgIGFkZEhUVFBVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0
c0lmTmVlZGVkKHJlcXVlc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZTFkNjBlYjkwZTdiNzM0OTdjMWFhZGMxYjM0ZWQ3
YzM1YzQ2YWU2ZS4uNGJhZDE4M2UwODU0OGM0N2RkZDk4MjI5ZWU5ZTYyYjRlYjQ5YjVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlcgogICAgIFN0cmluZyBtb2Rl
ID0gbG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5n
OjpudW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIFN0cmluZygpKTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQg
PSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUo
KSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgcmVzdWx0ID0g
cnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA1
ZmQzOWJlN2JkMTQwYmVlNDJiOTFhMjhhZjg2ZGY3NGE3ZTc0ZDcyLi5jM2I1ZTNlMWYyMjkzNDEw
NjY2MjYwOWI0YTAxMDM5YzIwZTkxMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xMzEsMTYgKzEzMSwxNiBAQCB2
b2lkIE1IVE1MUGFyc2VyOjphZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlLCBNSFRNTEFyY2hpdmUqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBzdWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CisgICAg
YXV0byBzdWJmcmFtZSA9IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCk7CiAgICAgc3ViZnJhbWUtPnNl
dE1haW5SZXNvdXJjZSgqcmVzb3VyY2UpOwotICAgIG1fZnJhbWVzLmFwcGVuZChzdWJmcmFtZSk7
CisgICAgbV9mcmFtZXMuYXBwZW5kKFdURk1vdmUoc3ViZnJhbWUpKTsKIH0KIAogUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwgY29uc3QgU3RyaW5nJiBlbmRPZlBhcnRCb3VuZGFyeSwgY29uc3QgU3Ry
aW5nJiBlbmRPZkRvY3VtZW50Qm91bmRhcnksIGJvb2wmIGVuZE9mQXJjaGl2ZVJlYWNoZWQpCiB7
CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50
Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRlbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJv
dW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAg
ICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6
OkJpbmFyeSkgewpAQCAtMjExLDcgKzIxMSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1I
VE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAg
ICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
bnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBh
dXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
ICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRp
dmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50
aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8g
Z2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZWU5N2IyYmQ0ZmQwNzIyYjViYTNiZDVmYWVlMWJjNmRm
YzE2NjYyMC4uZjg2MzEzNTJjMjIwZGQxZmI1NDU4MTI1N2JlNTY4NTk4ZjNmNmQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMTYsMTEgKzIx
Niw4IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYm
IGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIHJlbW92ZUltYWdl
RnJvbUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUg
ZW50cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJp
dG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7
Ci0gICAgaWYgKCFiaXRtYXBJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFw
SW1hZ2UuZ2V0KCksIHNlc3Npb25JRCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxs
cHRyKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFn
ZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbik7CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGll
bnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNv
ZGVkU2l6ZSgpKTsKQEAgLTU0MSw3ICs1MzgsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlc291cmNlLnVy
bCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHJlc291cmNlLnVybCgpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZU9yaWdpbi0+
ZXF1YWwoJm9yaWdpbikpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBl
bmQoJnJlc291cmNlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IDVmYWM4N2E1Y2ZjOGE3YWFmMDI4MDJkOGVmYTUxYTVhYjBkODI5NmMuLjE5ZjhmNTI3NWFjZTZi
YTI3ZmM0NTJjNmZmN2I2OGMzNzM1MWMzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTE0ODQsNyArMTQ4NCw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRN
YXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nCiAKICAgICBib29s
IGFsbG93Q3Jvc3NPcmlnaW4gPSBmcmFtZS0+c2V0dGluZ3MoKS5jcm9zc09yaWdpbkNoZWNrSW5H
ZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCgpOwogCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVM
aXN0PiBydWxlTGlzdCA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJ1
bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcnVs
ZSA6IG1hdGNoZWRSdWxlcykgewogICAgICAgICBpZiAoIWFsbG93Q3Jvc3NPcmlnaW4gJiYgIXJ1
bGUtPmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTQ5NCw3ICsxNDk0LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1h
dGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcKICAgICBpZiAocnVs
ZUxpc3QtPnJ1bGVzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBydWxlTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShydWxlTGlzdCk7CiB9CiAKIFJl
ZlB0cjxXZWJLaXRQb2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRv
UGFnZShOb2RlKiBub2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKQEAgLTIyNDUsNyAr
MjI0NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2lu
ZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAgICAgLy8gV2UgcGFzcyB0aGUgb3Bl
bmVyIGZyYW1lIGZvciB0aGUgbG9va3VwRnJhbWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlz
IGRpZmZlcmVudCBmcm9tCiAgICAgLy8gdGhlIG9wZW5lciBmcmFtZSwgYW5kIHRoZSBuYW1lIHJl
ZmVyZW5jZXMgYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUgb3BlbmVyIGZyYW1lLgogICAgIGJvb2wg
Y3JlYXRlZDsKLSAgICBSZWZQdHI8RnJhbWU+IG5ld0ZyYW1lID0gV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gV2ViQ29yZTo6
Y3JlYXRlV2luZG93KCphY3RpdmVGcmFtZSwgb3BlbmVyRnJhbWUsIFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVzLCBjcmVhdGVkKTsKICAgICBpZiAoIW5ld0ZyYW1lKQog
ICAgICAgICByZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDc5NDJhMGRiZTBiYTY3ZTQxMjczMTY0MmNjZTA3NzAz
YzY0YWIxMDkuLmVkM2ZlOTM3YzlhMjZkMWI3OTkxNjQyNmI3ZmMyMjM1NzMwYmUzZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTY1NCw4ICs2NTQsOCBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UgogCiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwg
ZW5kKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwg
dHJ1ZSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgp
LT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGU3MjUxZWUxYTE1ZmUyZTFkODAz
ZmVjZTU5OGU0YzNiZjJjNjNiYTYuLjlmMzNmM2U2ZThkOTY5OWExYzQwNjhmZDY5YWM2MTFlNmVl
MWRkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY29uc3QgU3Ry
aW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxk
IGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0
CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xv
c2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0
byBoYXBwZW4uCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHls
ZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVT
aGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCmluZGV4IDkwMDU1MTYwNjk5NTUzNTgzYmVlMDIzYmVjNjM4Yjky
ZDAxNTk0OTYuLmM1NzFhZjA2YWZlODY5NWE0NWRkN2Y0ZGFjY2FjNTRhZTMwYzkxZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKQEAgLTE5MSwxMSArMTkxLDExIEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0
aW9ucyBibGVuZEZpbHRlck9wZXJhdGlvbnMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsCiAg
ICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFw
cGVuZChibGVuZGVkT3ApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3AgPSBQYXNzdGhyb3VnaEZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVu
dGl0eU9wKTsKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09w
ID8gdG9PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21PcCA6IGlk
ZW50aXR5T3ApOworICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZy
b21PcCA/IGZyb21PcCA6IFdURk1vdmUoaWRlbnRpdHlPcCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IDU4
M2NmZDMxNjQ4ODAwZTczODE2NjVkM2Q1NDY0OWU4OTdiNWE5MDguLjA1Yzg1YzY2YjhlZTllM2Y3
ZjdlNDNiY2M1NzAyYjAyNjFmYTY0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
CkBAIC04MSwxNCArODEsMTQgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9sb2FkZXIt
PmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBSZWZQdHI8SFRNTERvY3Vt
ZW50PiBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCh0
aGlzLCB1cmwpOworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRo
ZXNpemVkRG9jdW1lbnQodGhpcywgdXJsKTsKICAgICBkb2N1bWVudC0+c2V0Q29tcGF0aWJpbGl0
eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6TGltaXRlZFF1aXJrc01vZGUpOwogICAg
IGRvY3VtZW50LT5jcmVhdGVET01XaW5kb3coKTsKLSAgICBzZXREb2N1bWVudChkb2N1bWVudCk7
CisgICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQuY29weVJlZigpKTsKIAotICAgIGF1dG8gcm9vdEVs
ZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1dG8gcm9v
dEVsZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudC5nZXQoKSk7CiAKLSAg
ICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIGF1
dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LmdldCgpKTsKICAgICBp
ZiAoIXN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgYm9keS0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6c3R5bGVBdHRyLCBzdHlsZSk7CiAKQEAgLTYyOSwxNiArNjI5LDE2IEBAIE5TQXJyYXkgKkZy
YW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgICAgIGZvciAo
YXV0byogbWFya2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3IoKm5vZGUsIERv
Y3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSkgewogICAgICAg
ICAgICAgLy8gRmlyc3QsIGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAg
ICAgICAgaWYgKHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIFN0
cmluZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBwcmVjZWRpbmdUZXh0ID0gcGxhaW5UZXh0KHByZWNlZGluZ1RleHRSYW5nZS5w
dHIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmVjZWRpbmdUZXh0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGludGVycHJldGF0aW9uIDogaW50ZXJwcmV0
YXRpb25zKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKGludGVycHJldGF0aW9uLCBw
cmVjZWRpbmdUZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9m
ZnNldCgpKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zm
c2V0KCkpKTsKLSAgICAgICAgICAgIFN0cmluZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWlu
VGV4dChyYW5nZUZvck1hcmtlci5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFy
a2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7CisgICAgICAgICAgICBTdHJpbmcgdmlz
aWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOwogICAg
ICAgICAgICAgc2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50Rm9yQ3VycmVudE1hcmtlciA9IG1h
cmtlci0+YWx0ZXJuYXRpdmVzKCkuc2l6ZSgpICsgMTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAg
IC8vIERldGVybWluZSB0ZXh0IGZvciB0aGUgaXRoIGludGVycHJldGF0aW9uLiBJdCB3aWxsIGVp
dGhlciBiZSB0aGUgdmlzaWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRzCkBAIC02NTgsOCArNjU4LDgg
QEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QK
ICAgICB9CiAKICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFy
a2VyLgotICAgIFJlZlB0cjxSYW5nZT4gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRB
ZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UuZ2V0KCkpOwor
ICAgIGF1dG8gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgp
LCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHJvb3QsIHJvb3RDaGlsZENvdW50KSk7CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIg
PSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOwogICAgIGlmICghdGV4dEFm
dGVyTGFzdE1hcmtlci5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRh
dGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAgICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlv
biwgdGV4dEFmdGVyTGFzdE1hcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCBmMzQwOWZhMmVmNTBlMGU2ZDE2
MGVkZjk1MzgwYWM5MjFiMTVmMGQwLi5jOTZiZWQxMDg2OWY2NzVkYmY1MTQ1ZjlmM2UwZjQxMjNm
MDJmYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIubW0KQEAgLTE1Niw4ICsxNTYsOCBAQCB2b2lkIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFJlbW92
ZWRPbkNvbXBsZXRpb246ZmFsc2VdOwogICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMV07CiAK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25j
YXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1h
dGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodEluIiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKKyAgICBh
dXRvIHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpjcmVhdGUo
YW5pbWF0aW9uLmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxheWVyKCkp
LnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIs
IHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQoKQpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKICAgICAgICAgcmV0
YWluZWRTZWxmLT5kaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAgICAgfV07CiAKLSAgICBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNB
QW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdy
YXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZv
cktleSgiRmFkZUhpZ2hsaWdodE91dCIsICpwbGF0Zm9ybUFuaW1hdGlvbik7CisgICAgYXV0byBw
bGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1h
dGlvbi5nZXQoKSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0
Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxh
dGZvcm1BbmltYXRpb24uZ2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDlmMTljZmVmM2Ji
ZTUwMDk0OGY1MmE1MDA4OWQzNzg1OWI3MTNlMjMuLjQ2ZmM4MTFjYzM1MzM1ZTlkM2FmYTZkYmIz
M2VmOTE5YzJkNjBhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6
Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFs
aXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsKKyAgICBh
dXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJh
eUJ1ZmZlcikgewogICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAl
enUgeCAlbHVcbiIsIHNpemUoKSwgc2l6ZW9mKGNoYXIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
CmluZGV4IGY2NWNkZTNjMWFmZjQ1ZjY2ZDVmMjIzNjM2NzE5MmYwY2IzMDdhMDcuLjllNzFhZTlm
NzQ3ZTk4Yjk1NmEwYzBjNWIwNDg5ZGIzYjg5ZGVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgYm9v
bCBIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQg
YXppbXV0aCwgaW50IGVsZXZhdGkKICAgICAvLyAoaGFyZHdhcmUpIHNhbXBsZS1yYXRlLgogICAg
IHVuc2lnbmVkIHN0YXJ0RnJhbWUgPSBpbmRleCAqIFJlc3BvbnNlRnJhbWVTaXplOwogICAgIHVu
c2lnbmVkIHN0b3BGcmFtZSA9IHN0YXJ0RnJhbWUgKyBSZXNwb25zZUZyYW1lU2l6ZTsKLSAgICBS
ZWZQdHI8QXVkaW9CdXM+IHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUpOwotICAg
IFJlZlB0cjxBdWRpb0J1cz4gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRl
Q29udmVydGluZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBz
YW1wbGVSYXRlKTsKKyAgICBhdXRvIHByZVNhbXBsZVJhdGVDb252ZXJ0ZWRSZXNwb25zZSA9IEF1
ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UoYnVzLCBzdGFydEZyYW1lLCBzdG9wRnJhbWUp
OworICAgIGF1dG8gcmVzcG9uc2UgPSBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVy
dGluZyhwcmVTYW1wbGVSYXRlQ29udmVydGVkUmVzcG9uc2UuZ2V0KCksIGZhbHNlLCBzYW1wbGVS
YXRlKTsKICAgICBBdWRpb0NoYW5uZWwqIGxlZnRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25z
ZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwogICAgIEF1ZGlvQ2hhbm5lbCogcmln
aHRFYXJJbXB1bHNlUmVzcG9uc2UgPSByZXNwb25zZS0+Y2hhbm5lbChBdWRpb0J1czo6Q2hhbm5l
bFJpZ2h0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuY3BwCmluZGV4IGU3OWQ2YzE4ZGViOWEwNzA0NWFmNTY5ZTc0NTBkZTEyZDQ3MGM4
NGEuLjg5NzdmMzk4NjlkNmI2NTAyNjQzNTQ0ZjQxZDJiNmRhMzg3YWU5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIs
IHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgLy8gV3JhcCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkg
dGhlIHNvdXJjZSBwcm92aWRlci4KLSAgICBSZWZQdHI8QXVkaW9CdXM+IGJ1cyA9IEF1ZGlvQnVz
OjpjcmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKKyAgICBhdXRvIGJ1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKIAogICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3JyZWN0
OgogICAgIGJ1cy0+c2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJh
bWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYjkxMjA3
NzNkZDUxMDE1YzE2Mjc4NGNkMjcxODA5MDc2OGVmYjdkNi4uY2RlMzBhOGE4YjIwZDU1Y2I1NGQy
Zjg5NTNmZTlmNGJhYTlhNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1l
ci5jcHAKQEAgLTM1Miw3ICszNTIsNyBAQCBSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRl
cjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogICAgIGlmICht
X2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPEF1
ZGlvQnVzPiBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFubmVscywgbV9jaGFubmVs
U2l6ZSwgdHJ1ZSk7CisgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobV9jaGFu
bmVscywgbV9jaGFubmVsU2l6ZSwgdHJ1ZSk7CiAgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUo
bV9zYW1wbGVSYXRlKTsKIAogICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwo
bV9mcm9udExlZnRCdWZmZXJzLmdldCgpLCBhdWRpb0J1cy0+Y2hhbm5lbCgwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJN
YWMuY3BwCmluZGV4IDJhZjUxOGI5NjI0ODI1YjBiNGM3MTQ0ZWJlNDQ2ZTVjMTI0YjFjNjcuLmRj
MTQ0MTE1YWMyOTZlODJmMzNiZTljMmRmMjMwNGEyYjhhNjIxMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3Bw
CkBAIC0xODAsNyArMTgwLDcgQEAgUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNy
ZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKICAgICBzaXplX3QgYnVz
Q2hhbm5lbENvdW50ID0gbWl4VG9Nb25vID8gMSA6IG51bWJlck9mQ2hhbm5lbHM7CiAKICAgICAv
LyBDcmVhdGUgQXVkaW9CdXMgd2hlcmUgd2UnbGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQotICAg
IFJlZlB0cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1c0NoYW5uZWxD
b3VudCwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3Jl
YXRlKGJ1c0NoYW5uZWxDb3VudCwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIGF1ZGlvQnVzLT5zZXRT
YW1wbGVSYXRlKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1w
bGVSYXRlKSk7IC8vIHNhdmUgZm9yIGxhdGVyCiAKICAgICAvLyBPbmx5IGFsbG9jYXRlZCBpbiB0
aGUgbWl4VG9Nb25vIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApp
bmRleCAxZmRmZWNkYTcxYzYwNGMwOTUxMTVkNTVkNTU0MzNlYjBkNmYzM2U0Li4xNjI4MTEyYTFj
MGI3ZTUwYjQwNGNmZDI2MzRmZDZjMjU0ZmNiMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEljb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxJY29uPiB7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUmVmUHRyPEljb24+
IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsg
fQorICAgIHN0YXRpYyBSZWY8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEljb24oaEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmluZGV4IDM4YjUxOTFjNjIwODQyZWQwYWZkYzdiMDZkZWUx
MDllZDJkZjI5YTguLjEzZjE4Nzg5M2I0NDBmZmI1OGQzYmViMWY2M2Y0YjRkMjEzYjU2ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSA6IHB1YmxpYyBUcmFja1ByaXZhdGVCYXNlIHsKICAgICAgICAgR2VuZXJpYywKICAg
ICAgICAgV2ViVlRUCiAgICAgfTsKLSAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQorICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfklu
YmFuZFRleHRUcmFja1ByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKICAgICBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYjhjYjg1MDZiOTk4N2ZiMDUyYWNlOTgxNGRlM2JmYTZj
MTBkZDY5NC4uYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCkBAIC0xODkxLDggKzE4OTEsOCBAQCBib29sIEFWRldyYXBwZXI6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UgogICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91
dDoKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVz
OiBrZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUgPSBrZXlVUkkubGVuZ3RoKCkg
KiBzaXplb2YoVUNoYXIpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6ZSwgMSk7Ci0gICAgICAgIFJl
ZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCAr
IGtleVVSSVNpemUsIDEpOworICAgICAgICBhdXRvIGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZp
ZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRhQnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5
VVJJU2l6ZSwgdHJ1ZSk7CiAKICAgICAgICAgYXV0byBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwpA
QCAtMTkwOCw4ICsxOTA4LDggQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKICAgICB9CiAjZW5k
aWYKIAotICAgIFJlZlB0cjxXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRl
ciA9IFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX293bmVyLCBhdlJlcXVlc3Qp
OwotICAgIG1fb3duZXItPm1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKGF2UmVxdWVzdCwgcmVzb3Vy
Y2VMb2FkZXIpOworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyOjpjcmVhdGUobV9vd25lciwgYXZSZXF1ZXN0KTsKKyAgICBtX293bmVyLT5tX3Jlc291
cmNlTG9hZGVyTWFwLmFkZChhdlJlcXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAg
ICAgcmVzb3VyY2VMb2FkZXItPnN0YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjEyODcyMTRhM2JmNWNlMTQwODA0NTUwZDlhZWVj
MzhhMzA2MTFhOS4uMWE0YjE4MWFhY2I4OTYzMDA1Y2NlNWFiZDg3MzNhYzFjMmQ5MTZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOSw5ICszOSw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKQogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IGNy
ZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
IGNyZWF0ZShBVkFzc2V0VHJhY2sgKnRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyh0cmFjaywgcGFyZW50KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBw
YXJlbnQpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCA3YjkzNWJmMWIzMjY2NTg1NjdjODJlN2FhNGU5YjljZmY2
NjkyYzIwLi5lMThmZWQzM2Q4MzhhZWRjMDYzMzI5ZWVmZmFmY2U4ZGRhNjdhYjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHN0YXRpYyB2b2lkIGZ1bGZp
bGxSZXF1ZXN0V2l0aEtleURhdGEoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QgKnJlcXVl
c3QsIEFyCiAKICAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoZW5kIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlcXVlc3RlZEtleURhdGEg
PSBrZXlEYXRhLT5zbGljZShzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50
PihlbmQpKTsKKyAgICAgICAgYXV0byByZXF1ZXN0ZWRLZXlEYXRhID0ga2V5RGF0YS0+c2xpY2Uo
c3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oZW5kKSk7CiAgICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQnl0ZXM6cmVxdWVzdGVkS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpyZXF1ZXN0ZWRLZXlEYXRh
LT5ieXRlTGVuZ3RoKCldKTsKICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpu
c0RhdGEuZ2V0KCldOwogICAgIH0KQEAgLTE4MTcsOCArMTgxNyw4IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KEFWQXNzZXRSCiAjZW5kaWYKICNlbmRpZgogCi0gICAgUmVmUHRyPFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZSh0aGlzLCBhdlJlcXVlc3QpOwotICAgIG1fcmVzb3VyY2VMb2FkZXJNYXAuYWRkKChfX2JyaWRn
ZSBDRlR5cGVSZWYpYXZSZXF1ZXN0LCByZXNvdXJjZUxvYWRlcik7CisgICAgYXV0byByZXNvdXJj
ZUxvYWRlciA9IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMsIGF2UmVxdWVz
dCk7CisgICAgbV9yZXNvdXJjZUxvYWRlck1hcC5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhdlJl
cXVlc3QsIHJlc291cmNlTG9hZGVyLmNvcHlSZWYoKSk7CiAgICAgcmVzb3VyY2VMb2FkZXItPnN0
YXJ0TG9hZGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDBjMDRhZjkwNDMwMjkx
ZjEyYTEyMTllYjNjNDM1OGNjYTRmMmJkMWEuLjE2ODEyNzU5ZTBhMWFlZmNmNDhiZWYxYTQzNjRk
NTg0YzkxODFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uOwogCiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDIGZpbmFsIDog
cHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CisgICAgc3RhdGljIFJl
ZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVh
bCB+TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNjYy4uMmIzN2Vj
N2RmZWFiNDY1ZjExZjdhNTA3ZTA4ODkyZWQ5Nzg5MGEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC00NCwxMCArNDQs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKLVJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xp
ZW50KQorUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVu
dCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM+IG1lZGlhU291cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKG5ldyBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKHBhcmVudCwgY2xpZW50KSk7Ci0gICAgY2xpZW50LT5z
ZXRQcml2YXRlQW5kT3BlbigqbWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBhdXRvIG1lZGlhU291
cmNlUHJpdmF0ZSA9IGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhwYXJl
bnQsIGNsaWVudCkpOworICAgIGNsaWVudC0+c2V0UHJpdmF0ZUFuZE9wZW4obWVkaWFTb3VyY2VQ
cml2YXRlLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIG1lZGlhU291cmNlUHJpdmF0ZTsKIH0KIApA
QCAtNzYsNyArNzYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2NkbUlu
c3RhbmNlLmdldCgpKTsKICNlbmRpZgotICAgIG91dFByaXZhdGUgPSBuZXdTb3VyY2VCdWZmZXI7
CisgICAgb3V0UHJpdmF0ZSA9IG5ld1NvdXJjZUJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgbV9zb3Vy
Y2VCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKG5ld1NvdXJjZUJ1ZmZlcikpOwogCiAgICAgcmV0dXJu
IE9rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmgKaW5kZXggNTNkZmYyMmQxOWM4NzBkODU2ZTVmOGY1MmI3ODBhM2YyMWQzZDkwOC4u
Nzk4MGQ1NGZlMWQ1Mzg2OGNlMWZjNzcyMjg4N2IzODM2OWNiYTg5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03OSw3
ICs3OSw3IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewog
CiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3VyY2VC
dWZmZXJQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyopOworICAgIHN0
YXRpYyBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMo
KTsKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51bGxw
dHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KaW5kZXggYTJlMDdjZjZmMzIxN2IzYWRmODk1YzkyYjAyMzk0OTQyOTQ1ODVj
MS4uOWFiYWQ3ZmExYzk2NGUxYTNlNWYyMmY1OWZkNDNhZGNjYmQxN2ZhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAg
LTQzMCw3ICs0MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiBjbGFzcyBNZWRpYURlc2Ny
aXB0aW9uQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYURlc2NyaXB0aW9uIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBjcmVhdGUoQVZBc3Nl
dFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDKHRyYWNrKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDPiBj
cmVhdGUoQVZBc3NldFRyYWNrKiB0cmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURl
c2NyaXB0aW9uQVZGT2JqQyh0cmFjaykpOyB9CiAgICAgdmlydHVhbCB+TWVkaWFEZXNjcmlwdGlv
bkFWRk9iakMoKSB7IH0KIAogICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fY29kZWM7IH0KQEAgLTQ4NCw5ICs0ODQsOSBAQCBzdGF0aWMgdm9pZCBidWZm
ZXJXYXNDb25zdW1lZENhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2b2lk
KiwgQ0ZTdAogICAgICAgICBzb3VyY2VCdWZmZXItPmJ1ZmZlcldhc0NvbnN1bWVkKCk7CiB9CiAK
LVJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmNyZWF0ZShNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCitSZWY8U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVh
dGUoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFyZW50KQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMocGFyZW50KSk7CiB9CiAK
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCkBAIC01NTEsMTYgKzU1MSwxNiBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0
KEFWQXNzZXQqIGFzc2V0KQogCiAgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdKSB7CiAgICAgICAgICAgICBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZv
cm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPiB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBpbmZvLnRyYWNrID0gdmlk
ZW9UcmFjazsKLSAgICAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHZpZGVvVHJhY2spOwor
ICAgICAgICAgICAgYXV0byB2aWRlb1RyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAgICBpbmZvLnRyYWNrID0g
dmlkZW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChX
VEZNb3ZlKHZpZGVvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNZWRp
YURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAgIHNlZ21lbnQu
dmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9IGVsc2UgaWYgKFt0cmFjayBoYXNN
ZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSB7CiAgICAg
ICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6
OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwotICAgICAgICAgICAgUmVmUHRyPEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7Ci0gICAgICAgICAgICBp
bmZvLnRyYWNrID0gYXVkaW9UcmFjazsKLSAgICAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5k
KGF1ZGlvVHJhY2spOworICAgICAgICAgICAgYXV0byBhdWRpb1RyYWNrID0gQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZSh0cmFjaywgdGhpcyk7CisgICAgICAgICAg
ICBpbmZvLnRyYWNrID0gYXVkaW9UcmFjay5jb3B5UmVmKCk7CisgICAgICAgICAgICBtX2F1ZGlv
VHJhY2tzLmFwcGVuZChXVEZNb3ZlKGF1ZGlvVHJhY2spKTsKICAgICAgICAgICAgIGluZm8uZGVz
Y3JpcHRpb24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAg
ICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAppbmRleCBmNDU2ZjBhOTZmMmUyYmMyNjJkZWFmYzM5ZjUzMmRiOWQ1
YjA2ZThmLi41ZGQ3ZTYyMzBmZThlMDViNGZmMzQ1ZTNiMTk0MTRhYjA5MWYzZTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBm
aW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3JlYXRl
KEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQp
CisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gY3Jl
YXRlKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJl
bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVu
dCkpOwogICAgIH0KIAogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmNwcAppbmRleCA4ZDFmMWI0Y2RhYTAwNTMzNzdmOTU0OWNhZmM3MWJiMzM1MzlkNjAzLi40MzJm
MGI4Yzg0NjQwZmE2YzU0OGVlZjE4Yjc0NTE4NTY0YTdkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC03
MjQsOSArNzI0LDkgQEAgaW50IFRpbGVDb250cm9sbGVyOjpyaWdodE1hcmdpbldpZHRoKCkgY29u
c3QKICAgICByZXR1cm4gKG1fbWFyZ2luU2l6ZSAqIG1fbWFyZ2luRWRnZXMucmlnaHQoKSkgLyB0
aWxlR3JpZCgpLnNjYWxlKCk7CiB9CiAKLVJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250
cm9sbGVyOjpjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFRpbGVHcmlk
JiBncmlkKQorUmVmPFBsYXRmb3JtQ0FMYXllcj4gVGlsZUNvbnRyb2xsZXI6OmNyZWF0ZVRpbGVM
YXllcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgVGlsZUdyaWQmIGdyaWQpCiB7Ci0gICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIgPSBtX3RpbGVDYWNoZUxheWVyLT5jcmVhdGVDb21w
YXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ1RpbGVMYXllciwgJmdyaWQsIHRpbGVSZWN0LnNpemUoKSk7CisgICAgYXV0byBsYXll
ciA9IG1fdGlsZUNhY2hlTGF5ZXItPmNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Qb29s
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyLCAmZ3JpZCwg
dGlsZVJlY3Quc2l6ZSgpKTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
M0QoKSk7CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHRpbGVSZWN0LmxvY2F0aW9uKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmgKaW5kZXggNTYyZDhiYjE0NTE4MDk1MTUxZWMxOWRjMjFhODk4YzgzNzhhMTBiYi4uNTc5N2U4
NjQ0MDgwYWYxZjA2NGQwNmQzYzhhZTY4NzE4OTIwZDE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC0xMzQsNyAr
MTM0LDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5n
IHsKIAogICAgIHZvaWQgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiAKLSAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBjcmVhdGVUaWxlTGF5ZXIoY29uc3QgSW50UmVjdCYsIFRpbGVHcmlkJik7
CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlVGlsZUxheWVyKGNvbnN0IEludFJlY3Qm
LCBUaWxlR3JpZCYpOwogCiAgICAgY29uc3QgVGlsZUdyaWQmIHRpbGVHcmlkKCkgY29uc3QgeyBy
ZXR1cm4gKm1fdGlsZUdyaWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmE5
ZDkxYWUxYzc4ZDFkNzM1Y2U0OTFiM2FkYTlhYTgwZjY3NDQzZS4uMWFiYTQ2ZjRjM2JjYTVkMWIy
YWMzYzBjNDU1YTFkOWI2ZWUwODE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0gICAg
UmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0
ZSgpOworICAgIGF1dG8gaG9zdCA9IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAg
IGlmICghaG9zdCkgewogICAgICAgICBhdmFpbGFibGUgPSBmYWxzZTsKQEAgLTEyNSw3ICsxMjUs
NyBAQCBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUo
KQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGhvc3QgPSBX
S0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7CisgICAgYXV0byBob3N0ID0gV0tDQUNG
Vmlld0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbGF5ZXIgdHJlZSBob3N0IGZvciBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVy
TWV0YWwubW0KaW5kZXggNDA2ZTA4NWZmZjFmMTlhOWRiZmRiODFjNjQ5MzFmNDY4YTRmOTc5NS4u
ZmNjMjc2ZGJlMTQyOTUzODFiNDMzMjVjMGNjMjZkZmQ0ODUzNGFlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZm
ZXJNZXRhbC5tbQpAQCAtNTUsMTEgKzU1LDExIEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZl
cjo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwdG9yCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29w
eSwgZGVzY3JpcHRvci5zaXplLCBbXSAodm9pZCogcHRyKSB7CisgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkZXNjcmlw
dG9yLnNpemUsIFtdICh2b2lkKiBwdHIpIHsKICAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVl
KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHB0cik7CiAgICAgfSk7CiAgICAgYXJyYXlCdWZmZXItPnJl
ZigpOwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlckNvbnRlbnRzID0gYXJyYXlCdWZmZXIu
Z2V0KCk7CisgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyQ29udGVudHMgPSBhcnJheUJ1ZmZl
ci5wdHIoKTsKICAgICAvLyBGSVhNRTogRGVmYXVsdCB0aGlzIE1UTFJlc291cmNlT3B0aW9ucy4K
ICAgICBQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyIG10bEJ1ZmZlciA9IGFkb3B0TlMoW2RldmljZS5w
bGF0Zm9ybURldmljZSgpCiAgICAgICAgIG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTphcnJheUJ1
ZmZlci0+ZGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IGUwMjcyNDcxZTNjNTJiYjA3M2UxZTUxNzQxYmNhMWEwODliYWM1MzguLjBm
MDVlYjkxOTlkYmYzZTQ5ZTFhMTJlMDc1NjZlZWM0ODkxZGUxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03MzQsOSArNzM0LDkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcygpCiAgICAgICAg
ICAgICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKQogICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
JiBHU1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
dGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQo
c3RyZWFtSWQsIHRyYWNrKTsKLSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnRy
YWNrKTsKKyAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAgICAgICAgIG1f
dGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBt
X3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9y
IHN0cmVhbSAlcyIsIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODk0LDEwICs4OTQsMTAg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8o
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUobWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOworICAgICAgICBhdXRvIHRyYWNrID0gVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGksIHBh
ZCk7CiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7Ci0gICAgICAgIG1f
dmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjayk7Ci0gICAgICAgIG1fcGxheWVyLT5hZGRW
aWRlb1RyYWNrKCp0cmFjayk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjayh0cmFjay5n
ZXQoKSk7CiAgICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVmlkZW9UcmFja3ModmFsaWRWaWRlb1N0
cmVhbXMpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlQbGF5ZXJPZkF1ZGlvKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsK
KyAgICAgICAgYXV0byB0cmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
bWFrZVdlYWtQdHIoKnRoaXMpLCBpLCBwYWQpOwogICAgICAgICBBU1NFUlQoc3RyZWFtSWQgPT0g
dHJhY2stPmlkKCkpOwogICAgICAgICBtX2F1ZGlvVHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2sp
OwogICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygqdHJhY2spOwpAQCAtMTAyOSw5ICsx
MDI5LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9m
VGV4dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGUoaSwgcGFkKTsKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJl
YW1JZCwgdHJhY2spOwotICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7Cisg
ICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUoaSwgcGFkKTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29w
eVJlZigpKTsKKyAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcHVyZ2VJbnZhbGlkVGV4dFRyYWNrcyh2YWxpZFRleHRTdHJlYW1zKTsKQEAg
LTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5k
bGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FTEVN
RU5UOgogICAgICAgICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UobWVzc2FnZSkp
IHsKICAgICAgICAgICAgIGlmIChnc3RfaW5zdGFsbF9wbHVnaW5zX3N1cHBvcnRlZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrPiBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBtaXNzaW5nUGx1Z2luQ2FsbGJhY2sgPSBNZWRpYVBsYXllclJlcXVlc3RJbnN0
YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjazo6Y3JlYXRlKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0odWludDMyX3QgcmVzdWx0LCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYgbWlzc2luZ1BsdWdpbkNhbGxiYWNrKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9JTkZP
KCJnb3QgbWlzc2luZyBwbHVnaW5nIGluc3RhbGxhdGlvbiBjYWxsYmFjayBpbiBkZXN0cm95ZWQg
cGxheWVyIHdpdGggcmVzdWx0ICV1IiwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEzMTMsMTAgKzEzMTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1JFQURZKTsK
ICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NU
QVRFX1BBVVNFRCk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbV9taXNz
aW5nUGx1Z2luQ2FsbGJhY2tzLmFwcGVuZChtaXNzaW5nUGx1Z2luQ2FsbGJhY2spOworICAgICAg
ICAgICAgICAgIG1fbWlzc2luZ1BsdWdpbkNhbGxiYWNrcy5hcHBlbmQobWlzc2luZ1BsdWdpbkNh
bGxiYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXRh
aWwoZ3N0X21pc3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2luc3RhbGxlcl9kZXRhaWwobWVzc2Fn
ZSkpOwogICAgICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ3N0X21p
c3NpbmdfcGx1Z2luX21lc3NhZ2VfZ2V0X2Rlc2NyaXB0aW9uKG1lc3NhZ2UpKTsKLSAgICAgICAg
ICAgICAgICBtX3BsYXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhT
dHJpbmc6OmZyb21VVEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRp
b24uZ2V0KCkpLCAqbWlzc2luZ1BsdWdpbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBtX3Bs
YXllci0+Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhTdHJpbmc6OmZyb21V
VEY4KGRldGFpbC5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZGVzY3JpcHRpb24uZ2V0KCkpLCBt
aXNzaW5nUGx1Z2luQ2FsbGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBVU0UoR1NUUkVBTUVSX01QRUdUUykKQEAgLTE0NDgs
NyArMTQ0OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBl
Z1RzU2VjdGlvbihHc3RNcGVndHNTZWN0aW9uKiBzZWN0aW9uCiAgICAgICAgICAgICBjb25zdCBH
c3RNcGVndHNQTVRTdHJlYW0qIHN0cmVhbSA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c1BN
VFN0cmVhbSo+KGdfcHRyX2FycmF5X2luZGV4KHBtdC0+c3RyZWFtcywgaSkpOwogICAgICAgICAg
ICAgaWYgKHN0cmVhbS0+c3RyZWFtX3R5cGUgPT0gMHgwNSB8fCBzdHJlYW0tPnN0cmVhbV90eXBl
ID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBBdG9taWNTdHJpbmcgcGlkID0gU3RyaW5nOjpu
dW1iZXIoc3RyZWFtLT5waWQpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgYXV0byB0cmFjayA9
IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKAogICAgICAg
ICAgICAgICAgICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YSwgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTo6RGF0YSwgcGlkKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNy4xMC4x
Mi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTIxMzMsNyArMjEzMyw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAg
ICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CiAgICAgICAgIGNvbnZl
cnRUb0ludGVybmFsUHJvdG9jb2wobmV3VXJsKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCk7Cisg
ICAgICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJs
KTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKICAg
ICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTmV3IG1lZGlhIHVybDogJXMi
LCBuZXdVcmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTdmMjkyMDI1ZGQ0
YWFjMjY1ZGQ5YmRkZjJiNzc4Mzg2Y2I5YjYxLi4zNTYzNTEzNDJmMGE1NTE5Nzk5OGZlNzE4MWI5
YzhhNTUzZmRjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2EKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQogICAgICAgICBwYWlu
dGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFt
ZXI+IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgp
KTsKKyAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2Ft
cGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggOWZiZTdiZmQ2ZjQ4MjUyMTYxZGY0NzBj
ZTg1ZWQ0ZjI0MzBkZWE1MS4uYWYwMWZkZWViNDBkNGNiOTVjZTlmNTJjNjM1MzRjOGI1MjJkNmJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBA
QCB2b2lkIEFwcGVuZFBpcGVsaW5lOjphcHBzaW5rTmV3U2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxl
PiYmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNh
bXBsZUdTdHJlYW1lcj4gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1l
cjo6Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkp
OworICAgIGF1dG8gbWVkaWFTYW1wbGUgPSBXZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6
Y3JlYXRlKFdURk1vdmUoc2FtcGxlKSwgbV9wcmVzZW50YXRpb25TaXplLCB0cmFja0lkKCkpOwog
CiAgICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRTPSVzIERUUz0lcyBEVVI9JXMg
cHJlc2VudGF0aW9uU2l6ZT0lLjBmeCUuMGYiLAogICAgICAgICBtZWRpYVNhbXBsZS0+dHJhY2tJ
RCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBBcHBl
bmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUp
CiAgICAgICAgIG1lZGlhU2FtcGxlLT5hcHBseVB0c09mZnNldChNZWRpYVRpbWU6Onplcm9UaW1l
KCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNhbXBs
ZSgqbWVkaWFTYW1wbGUpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+ZGlkUmVjZWl2ZVNh
bXBsZShtZWRpYVNhbXBsZS5nZXQoKSk7CiB9CiAKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmRpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAppbmRleCA3Y2JmNTRlYjNjMzVlYTEzOWMwZTcw
NjI5ZGY4ZGFiZGI1NDVkMDdlLi42ZTRiNjRmYjQyMDBiYjA5MGMwNTU4NzdiYzk2YjUxMmQ1NTFm
OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94LmNwcApAQCAtNDQsOSArNDQsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBzeXN0ZW1JRCA9IGJ1
ZmZlci0+c2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyAxNik7Ci0gICAgaWYgKCFzeXN0ZW1JRCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgb2Zmc2V0ICs9IDE2OwogCiAgICAgbV9zeXN0ZW1J
RC5yZXNpemUoMTYpOwpAQCAtNjMsOCArNjAsNiBAQCBib29sIElTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZQog
ICAgICAgICAgICAgYXV0byYgY3VycmVudEtleUlEID0gbV9rZXlJRHNba2V5SURdOwogICAgICAg
ICAgICAgY3VycmVudEtleUlELnJlc2l6ZSgxNik7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEtl
eUlEID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIDE2KTsKLSAgICAgICAgICAgIGlm
ICghcGFyc2VkS2V5SUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgb2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAgbWVtY3B5KGN1cnJlbnRLZXlJRC5kYXRhKCks
IHBhcnNlZEtleUlELT5kYXRhKCksIDE2KTsKICAgICAgICAgfQpAQCAtNzYsOSArNzEsNiBAQCBi
b29sIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGFyc2UoRGF0YVZpZXcm
IHZpZXcsIHVuc2lnbmVkJiBvZmZzZQogICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9m
ZnNldCA8IGRhdGFTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBwYXJzZWRE
YXRhID0gYnVmZmVyLT5zbGljZShvZmZzZXQsIG9mZnNldCArIGRhdGFTaXplKTsKLSAgICBpZiAo
IXBhcnNlZERhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG9mZnNldCArPSBkYXRh
U2l6ZTsKIAogICAgIG1fZGF0YS5yZXNpemUoZGF0YVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9u
Qm94LmNwcAppbmRleCA1N2E1Njk0ZDVlYWUxMzllZWQyODU5NWExMzIzMDZiYzVjNzVhMDRmLi4y
Yzk0ZjRkM2NjMWI3NjE3NWQ5MjM4ODYyNmYxODBiOWNiODAyMTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNy
eXB0aW9uQm94LmNwcApAQCAtNjQsOSArNjQsNiBAQCBib29sIElTT1RyYWNrRW5jcnlwdGlvbkJv
eDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGF1dG8ga2V5SURCdWZmZXIgPSBidWZmZXItPnNsaWNlKG9mZnNldCwg
b2Zmc2V0ICsgMTYpOwotICAgIGlmICgha2V5SURCdWZmZXIpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIG9mZnNldCArPSAxNjsKIAogICAgIG1fZGVmYXVsdEtJRC5yZXNpemUoMTYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCmluZGV4IDY2N2YyMzAxNzIzNTkxNDYz
MTdmYzg2MWEyN2VjODQwNmJlMDc0MWYuLjAxYTI3NDI0MzljMjI3ZjIyMmI4Y2ViMmNhNjBhMzFm
Yzk0ZmY5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKQEAgLTU0LDEx
ICs1NCwxMSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdAogICAgICAgICBpZiAoYmxlbmRlZE9w
KQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBpZGVudGl0
eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAg
YXV0byBpZGVudGl0eU9wID0gUGFzc3Rocm91Z2hGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBXVEZNb3ZlKGlk
ZW50aXR5T3ApKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3Bl
cmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBXVEZN
b3ZlKGlkZW50aXR5T3ApKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYzY2ZTQ2MzYyMDAyODY1
MGI0NWM1MDYxMWJiMjZkYzQ0MmUyN2M4Zi4uOGNjNThkNjFkOWI1MDM3OTdmMDcyNzI1ZTBjNmQ3
ODNkZTVkMWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3Jl
YXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3Jt
YXQpOworICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRl
eHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
KnRleHR1cmUpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKKyAgICBzdGF0
aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFn
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGY5NDRm
MDdhNThlMmFkZGRiMmRhMTkyNWEzNTNmNzNiZTQ0ZTI4MmYuLmIxNDUyZmUyYjY2N2JkZWYzMWE4
YmM5Y2UzMWY0ZTZkMmVjN2IzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25z
LmNwcApAQCAtODcsMTEgKzg3LDExIEBAIFRyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3Bl
cmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2ZvCiAgICAgICAg
IGlmIChibGVuZGVkT3BlcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5h
cHBlbmQoYmxlbmRlZE9wZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVm
UHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gaWRlbnRpdHlPcGVyYXRpb24gPSBJZGVudGl0eVRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aXR5T3BlcmF0
aW9uID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAg
aWYgKHByb2dyZXNzID4gMC41KQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCku
YXBwZW5kKHRvT3BlcmF0aW9uID8gdG9PcGVyYXRpb24gOiBpZGVudGl0eU9wZXJhdGlvbik7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQodG9PcGVyYXRpb24gPyB0
b09wZXJhdGlvbiA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0
aW9uID8gZnJvbU9wZXJhdGlvbiA6IGlkZW50aXR5T3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlv
biA6IFdURk1vdmUoaWRlbnRpdHlPcGVyYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3MTkwMzJmZTY3ZDE2ODQyZDdjYzc5NmMwMTA5
Mjc1ZWQ0NDMyYmEyLi4xODcwYmIxNjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVjb2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRv
IHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5n
IHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2UgYW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcG5nRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgm
bV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0g
ZGlyRW50cnkubV9pbWFnZU9mZnNldCkpOwotICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdLT5zZXRE
YXRhKCpwbmdEYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBhdXRvIHBuZ0RhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnkubV9pbWFnZU9mZnNl
dF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7CisgICAgbV9wbmdE
ZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxEYXRhUmVjZWl2ZWQo
KSk7CiB9CiAKIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGluZGV4LCBib29s
IG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwCmluZGV4IGU1NGJhMzc2ZGE2
MTY2NDU3YzIzMjg5NzE4MTRjZmYzODVmYTZlMTguLjEwMDkxMmIzMjkzMzNmYzNlYmMzM2M1MTdi
YjJkNDczNzZiOGQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApAQCAtOTcsMTEgKzk3LDExIEBAIE1vY2tJbml0aWFs
aXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVyKiBkYXRhKQogICAg
IHNpemVfdCBvZmZzZXQgPSAxNjsKIAogICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgewot
ICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNl
dCk7Ci0gICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1v
Y2tUcmFja0JveDo6dHlwZSgpKQorICAgICAgICBhdXRvIHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNl
KG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIucHRyKCkp
ICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
TW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIE1vY2tUcmFj
a0JveCB0cmFja0JveChzdWJCdWZmZXIucHRyKCkpOwogICAgICAgICBvZmZzZXQgKz0gdHJhY2tC
b3gubGVuZ3RoKCk7CiAgICAgICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAxYmUxYWU1N2JlMWU5
MTA5MmZlNjYxYWUyMzY3MjkwNDEwYWZjYzNkLi45ZmJhYzAwMjA0NzhlOWIzNTBkZTdmZjRkNDdj
OWZlMzU5NDYwZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIFJlZjxNZWRpYVNhbXBsZT4gTW9ja01lZGlhU2FtcGxlOjpjcmVh
dGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0CiAKIGNsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9u
IGZpbmFsIDogcHVibGljIE1lZGlhRGVzY3JpcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJv
eCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9Cisg
ICAgc3RhdGljIFJlZjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4gY3JlYXRlKGNvbnN0IE1vY2tUcmFj
a0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJv
eCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSA9IGRlZmF1bHQ7CiAK
ICAgICBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5j
b2RlYygpOyB9CkBAIC0xMTgsOSArMTE4LDkgQEAgY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24g
ZmluYWwgOiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7CiAgICAgTW9ja1RyYWNrQm94IG1fYm94
OwogfTsKIAotUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKK1JlZjxNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZT4gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShwYXJlbnQpKTsKIH0KIAogTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUq
IHBhcmVudCkKQEAgLTE0MiwxNyArMTQyLDE3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXpl
KCkgJiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRl
ZCkgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAg
ICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIu
ZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGgg
PSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChib3hMZW5n
dGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IFN0cmluZyB0eXBlID0gTW9ja0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
U3RyaW5nIHR5cGUgPSBNb2NrQm94OjpwZWVrVHlwZShidWZmZXIucHRyKCkpOwogICAgICAgICBp
ZiAodHlwZSA9PSBNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnR5cGUoKSkgewotICAgICAgICAgICAg
TW9ja0luaXRpYWxpemF0aW9uQm94IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVm
ZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlvbkJveCBpbml0Qm94ID0g
TW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgICAgICBkaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOwogICAgICAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7Ci0gICAgICAgICAgICBNb2NrU2FtcGxlQm94
IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAgICAgIE1v
Y2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIucHRyKCkpOwogICAg
ICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlBhcnNpbmdGYWls
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYTI2NGZiNWUwN2Q0
OTZhNzA5NjIyYzBiZmNmMTM5ZmY4OTVmMDQ3Zi4uYTNlNjVkYmRiZWNjOTQ0NjlhMWIwZTFiMWY3
NzBiMjFkNGJmYzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAt
NDEsNyArNDEsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gY3JlYXRlKE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlPiBjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgfk1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7
IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCmluZGV4IGI0NmNhNmI2MDExYjAy
MjkwZDZiODMwZmJlMGI2MDNmZDJkYmFkMGMuLmY0YzAwOTIyOTQ4ODFhNGZhZWYxYzBkZjc1MjA4
MzRjNjllMjIwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1RyYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIE1vY2tBdWRp
b1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tU
ZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBN
b2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2
YXRlKGJveCkpOyB9CisgICAgc3RhdGljIFJlZjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRl
KGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tUZXh0
VHJhY2tQcml2YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTW9ja1RleHRUcmFja1ByaXZhdGUg
OiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiAKIGNsYXNzIE1vY2tWaWRlb1RyYWNr
UHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gm
IGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZShib3gpKTsg
fQorICAgIHN0YXRpYyBSZWY8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29uc3QgTW9j
a1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1ZpZGVvVHJhY2tQcml2
YXRlKGJveCkpOyB9CiAgICAgdmlydHVhbCB+TW9ja1ZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZh
dWx0OwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggOWQw
NTczYWZlM2I0NjcwOGY2MTI2ODA1NDIxNWEwZWQ2YWIyZGJjZi4uMzY1OTBlYmFmNGIzOWE1Yjkz
ZjFhMTgwNmUxNmNhZmQ1ZWNlZTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KIFJlZlB0
cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxGb3JtRGF0YT4gZGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIGRhdGEg
PSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEtPm1f
YWx3YXlzU3RyZWFtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTksNyArMzE5LDcg
QEAgUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2lkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaApp
bmRleCA2MjRjY2M1ZTEyODA3MWQ3NDE3YjhkMTZlNGU4NTRmZDc1M2FlZTY5Li44ZTc3MzNjNTdh
ZDUwZDFlZTY2NDViZGNiOWEzMjM4Y2NkZDdkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVy
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29raWVT
dG9yYWdlT2JzZXJ2ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29va2llU3RvcmFn
ZU9ic2VydmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDb29raWVTdG9yYWdlT2Jz
ZXJ2ZXI+IGNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICopOworICAgIHN0YXRpYyBSZWY8Q29v
a2llU3RvcmFnZU9ic2VydmVyPiBjcmVhdGUoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICBD
b29raWVTdG9yYWdlT2JzZXJ2ZXIoTlNIVFRQQ29va2llU3RvcmFnZSAqKTsKICAgICB+Q29va2ll
U3RvcmFnZU9ic2VydmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KaW5kZXggOTE4
MTcxYzZiMDcwN2FhMDgwMGU5YjhkZjI5NGI0MWUxY2Y3ODlkMC4uNWQyNWFlMTBkMmYxYWJhNzM4
M2I3MDM2MjE2ZTM3NzkxNjcyZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIubW0KQEAg
LTc0LDkgKzc0LDkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb29r
aWVTdG9yYWdlT2JzZXJ2ZXI+IENvb2tpZVN0b3JhZ2VPYnNlcnZlcjo6Y3JlYXRlKE5TSFRUUENv
b2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UpCitSZWY8Q29va2llU3RvcmFnZU9ic2VydmVyPiBD
b29raWVTdG9yYWdlT2JzZXJ2ZXI6OmNyZWF0ZShOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVT
dG9yYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29va2llU3RvcmFnZU9ic2VydmVy
KGNvb2tpZVN0b3JhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVTdG9yYWdl
T2JzZXJ2ZXIoY29va2llU3RvcmFnZSkpOwogfQogCiBDb29raWVTdG9yYWdlT2JzZXJ2ZXI6OkNv
b2tpZVN0b3JhZ2VPYnNlcnZlcihOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGFhOTU3MzdiZTc5YWJkMTRmMTliYTIxYjkyMmNj
YjEwMTY1MGM0ODguLjBmNmVhMTk3ODdhNDZjNzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHVpbnQ2NF90
IGFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3Vw
TWVzc2FnZSwKICAgICAgICAgaWYgKGZpbGVNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUoKS0+c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90Pigp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGJsb2JJ
dGVtLmZpbGUoKS0+cGF0aCgpKSkgeworICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSkp
IHsKICAgICAgICAgICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRl
U291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKICAgICAgICAg
ICAgICAgICBib2R5U2l6ZSArPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZ
X1RFTVBPUkFSWSwgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgfSwg
WyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoZmlsZURhdGEuZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYzkwODY5
MzAxNjE4NTU4YjYwZTFmMzA0ODE4ZGJkZDllNTFkYmMxMi4uMmQ3YjY2ZDkzNzkwNWRjYzIyZjRh
MTNlOTVhMGFmMDZiYjQ4YjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY5LDE0
ICsxNjksMTQgQEAgY2xhc3MgSHlwaGVuYXRpb25EaWN0aW9uYXJ5IDogcHVibGljIFJlZkNvdW50
ZWQ8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiB7CiAKICAgICB2aXJ0dWFsIH5IeXBoZW5hdGlvbkRp
Y3Rpb25hcnkoKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGlj
dGlvbmFyeT4gY3JlYXRlTnVsbCgpCisgICAgc3RhdGljIFJlZjxIeXBoZW5hdGlvbkRpY3Rpb25h
cnk+IGNyZWF0ZU51bGwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIeXBo
ZW5hdGlvbkRpY3Rpb25hcnkoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEh5cGhl
bmF0aW9uRGljdGlvbmFyeSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0
aW9uRGljdGlvbmFyeT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmIGRpY3RQYXRoKQorICAgIHN0YXRp
YyBSZWY8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGUoY29uc3QgQ1N0cmluZyYgZGljdFBh
dGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEh5cGhlbmF0aW9uRGljdGlv
bmFyeShkaWN0UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIeXBoZW5hdGlv
bkRpY3Rpb25hcnkoZGljdFBhdGgpKTsKICAgICB9CiAKICAgICBIeXBoZW5EaWN0KiBsaWJoeXBo
ZW5EaWN0aW9uYXJ5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYWM3Y2I2NjdiY2U4YTI3MThiYWM3ZGYxNmU2
YmM0OTE4ZDQzZGI3Ni4uOGU3NGIwNzY5MzVhYTBkY2NkN2VhODM3YWNlNjdiM2NlN2NlMTU1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWFyY2hQ
b3B1cE1lbnVXaW46OlNlYXJjaFBvcHVwTWVudVdpbihQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fcG9wdXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVdpbihjbGllbnQpKSkKKyAgICA6
IG1fcG9wdXAoYWRvcHRSZWYoKm5ldyBQb3B1cE1lbnVXaW4oY2xpZW50KSkpCiB7CiB9CiAKIFBv
cHVwTWVudSogU2VhcmNoUG9wdXBNZW51V2luOjpwb3B1cE1lbnUoKQogewotICAgIHJldHVybiBt
X3BvcHVwLmdldCgpOworICAgIHJldHVybiBtX3BvcHVwLnB0cigpOwogfQogCiBib29sIFNlYXJj
aFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51V2luLmgKaW5kZXggZTUwNjBiOGFiOWI5ZmVhZjM1YmZiOGIzN2Ix
OWEzY2QxOTU2NTExZS4uOWE3YWU4ODIzYzVjNDNmZjk0NmE2MTU3YWZjNTdiNTlkYzE1NDNlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdp
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnVXaW4gOiBwdWJsaWMgU2Vh
cmNoUG9wdXBNZW51IHsKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxQb3B1cE1lbnVXaW4+IG1fcG9wdXA7CisgICAgUmVmPFBvcHVwTWVudVdpbj4g
bV9wb3B1cDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQppbmRleCA1MmI0ZDc0NWI5OTczM2FjNmFmMGI1YjcyYzM2MGI2YjJkNGIwYTliLi5lZTFl
MjI2ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZUlPUzo6YWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBS
ZW5kZXJCb3gmIGJveCkKIHN0YXRpYyB2b2lkIGFwcGx5Q29tbW9uQnV0dG9uUGFkZGluZ1RvU3R5
bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC41LCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKDAuNSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwogICAgIGludCBw
aXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCZzdHlsZSwgZG9jdW1lbnQucmVuZGVyU3R5bGUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygp
LCBkb2N1bWVudC5mcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKSk7CiAgICAgc3R5bGUuc2V0UGFk
ZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIH0KQEAgLTkxNywxMiAr
OTE3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29udGV4dC5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKLSAgICBSZWZQdHI8R3JhZGllbnQ+
IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7
IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWln
aHQgLSAxKSB9KTsKKyAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIHN0cm9rZUdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0
cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkp
OwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhk
LCAweDhkKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUo
c3Ryb2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwg
MjU1LCAyNTUpKTsKIApAQCAtOTM3LDEwICs5MzcsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWlu
dEkKICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91
bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBw
ZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgUmVmUHRyPEdy
YWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFy
RGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAw
LjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBw
ZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7CisgICAgYXV0byB1cHBlckdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7
CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEz
MywgMTg4KSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgs
IDE4LCAxOCwgNTEpKTsKLSAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUo
dXBwZXJHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVu
dEhlaWdodCkpOwogCkBAIC05NDksMjAgKzk0OSwyMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50
SQogICAgICAgICAvLyAyKSBEcmF3IHRoZSBwcm9ncmVzcyBiYXIuCiAgICAgICAgIGRvdWJsZSBw
b3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwog
ICAgICAgICBkb3VibGUgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAgICAg
ICAgUmVmUHRyPEdyYWRpZW50PiBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGll
bnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3Np
dGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyR3JhZGll
bnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVj
dC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEp
IH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAy
MTcsIDI0NykpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9y
KDExOCwgMTY0LCAyMjgpKTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5
LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAotICAgICAg
ICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShH
cmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJva2VH
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkg
fSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcig5
NSwgMTA3LCAxODMpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgw
LjUsIENvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigzOCwgMTA0LCAxNjYpKTsKLSAgICAgICAgY29udGV4
dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRp
ZW50KSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwogICAgICAgICBpbnQgbGVmdCA9IHJlY3Qu
eCgpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0QnV0
dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYgc2VsZWN0b3IsIFJlbmRlclN0eWxlJiBzdHkKICAgICAv
LyBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludCBvbmx5IG5lZWRzIHRoZSBlbGVt
ZW50J3Mgc3R5bGUgdG8gY2FsY3VsYXRlIGVtIGxlbmd0aHMuCiAgICAgLy8gU2luY2UgdGhlIGVs
ZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0
aGUgcm9vdCBlbGVtZW50IHN0eWxlCiAgICAgLy8gYW5kIHRoZSByZW5kZXIgdmlldy4KLSAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CisgICAgYXV0byBlbVNpemUgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMp
OwogICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBmYWxzZSkpOwog
ICAgIHN0eWxlLnNldFBhZGRpbmdCb3goTGVuZ3RoQm94KDAsIHBpeGVscywgMCwgcGl4ZWxzKSk7
CiAKQEAgLTE3NDMsMTEgKzE3NDMsOCBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29u
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mCiAgICAgaWYg
KCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaWNvbklt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKLSAgICBpZiAo
IWljb25JbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmlj
b25JbWFnZSwgaW5mby5pY29uUmVjdCk7CisgICAgYXV0byBpY29uSW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGlj
b25JbWFnZS5nZXQoKSwgaW5mby5pY29uUmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0
YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5m
byYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCmluZGV4IGZhYmM4YjJhYjhiZmZhMTlmM2VhYmRlNGMwNmE5OWRmYmZl
MzY5NGMuLjE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cApAQCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIHRz
IDw8ICJcbiI7CiAgICAgICAgIC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNo
IGlzIHBhc3NlZCB0byB0aGUgYnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsK
LSAgICAgICAgUmVmUHRyPFNWR0ZpbHRlcj4gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0
ZShBZmZpbmVUcmFuc2Zvcm0oKSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1
ZSk7Ci0gICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVzKCpk
dW1teUZpbHRlcikpIHsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3Jl
YXRlKEFmZmluZVRyYW5zZm9ybSgpLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCB0
cnVlKTsKKyAgICAgICAgaWYgKGF1dG8gYnVpbGRlciA9IGZpbHRlci5idWlsZFByaW1pdGl2ZXMo
ZHVtbXlGaWx0ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29w
ZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICAgICAgICAgIGlmIChGaWx0ZXJFZmZlY3QqIGxhc3RF
ZmZlY3QgPSBidWlsZGVyLT5sYXN0RWZmZWN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNw
cAppbmRleCA1Njg3MjM4ODkyNzhlYzdhYjI0NGI1Yzk1YTRmNmI1ZWQyNWRmZjc2Li5jMjY5YTg1
NTk0NmJlZWJkNmEwYmVkOTFhOGFhYjkwOTIwNGIyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5jcHAKQEAgLTM3LDE3ICszNywxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9NV2luZG93JiB3aW5kb3csIFJlZlB0cjxTdG9y
YWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKK1JlZjxTdG9yYWdlPiBTdG9yYWdlOjpjcmVhdGUoRE9N
V2luZG93JiB3aW5kb3csIFJlZjxTdG9yYWdlQXJlYT4mJiBzdG9yYWdlQXJlYSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlKHdpbmRvdywgV1RGTW92ZShzdG9yYWdlQXJlYSkp
KTsKIH0KIAotU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRvdywgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQorU3RvcmFnZTo6U3RvcmFnZShET01XaW5kb3cmIHdpbmRv
dywgUmVmPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDogRE9NV2luZG93UHJvcGVy
dHkoJndpbmRvdykKICAgICAsIG1fc3RvcmFnZUFyZWEoV1RGTW92ZShzdG9yYWdlQXJlYSkpCiB7
CiAgICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhKTsKIAogICAg
IG1fc3RvcmFnZUFyZWEtPmluY3JlbWVudEFjY2Vzc0NvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZS5oCmluZGV4IDgzNjZiYmMxYjU5Yzc5ZjllNzU3ZGUzYTEzZjc1MGExY2IzNzgyMDEu
Ljk4M2U4NWE2MmE4NjRjN2E3MGRmMTdkM2FhNTAyZjI1ZjdkYzlmYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFz
cyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8U3Rv
cmFnZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTdG9yYWdlPiBjcmVhdGUoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2U+IGNyZWF0ZShET01XaW5kb3cmLCBSZWY8U3RvcmFnZUFyZWE+
JiYpOwogICAgIH5TdG9yYWdlKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKQEAg
LTUwLDEyICs1MCwxMiBAQCBjbGFzcyBTdG9yYWdlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZT4sIHB1YmxpYyBET01XaQogICAgIGJvb2wgaXNTdXBw
b3J0ZWRQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgVmVjdG9yPEF0b21p
Y1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCi0gICAgU3RvcmFnZUFy
ZWEmIGFyZWEoKSBjb25zdCB7IHJldHVybiAqbV9zdG9yYWdlQXJlYTsgfQorICAgIFN0b3JhZ2VB
cmVhJiBhcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYS5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFN0b3JhZ2UoRE9NV2luZG93JiwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmKTsKKyAg
ICBTdG9yYWdlKERPTVdpbmRvdyYsIFJlZjxTdG9yYWdlQXJlYT4mJik7CiAKLSAgICBjb25zdCBS
ZWZQdHI8U3RvcmFnZUFyZWE+IG1fc3RvcmFnZUFyZWE7CisgICAgY29uc3QgUmVmPFN0b3JhZ2VB
cmVhPiBtX3N0b3JhZ2VBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCA0MDlhNDMzZTFkNWMxZjZl
MmQ3ZDE4YTExOTc2ZDliYjJmZmMyNTJhLi41NWM2NjI4MmI4YmQ2OGJjMDQ3ODJkZjQ3Y2FkZWQw
YzIxMjk0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaApA
QCAtMzcsOCArMzcsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3JhZ2VOYW1lc3BhY2U+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1
YWwgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdl
KiBuZXdQYWdlKSA9IDA7CisgICAgdmlydHVhbCBSZWY8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
TmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcAppbmRleCA2OWMxYjMzNTMwOGJiZmNkOTdiYTQ4NTY1M2UxNmE2Yzk3NTk1
YzRmLi41OTM5YWZmZDNlYjJmOGVlZDQ2YmY2MmJhYjRiMTVhZWI1ZTk1ZWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpyZW1vdmVQYWdl
KFBhZ2UmIHBhZ2UpCiAgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCi1SZWZQdHI8U3Rv
cmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1
bWVudCYgZG9jdW1lbnQpCitSZWY8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6bG9jYWxTdG9yYWdlQXJlYShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgLy8gVGhpcyBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBEb2N1bWVudCdz
IFBhZ2UsCiAgICAgLy8gc28gdGhlIERvY3VtZW50IGhhZCBiZXR0ZXIgc3RpbGwgYWN0dWFsbHkg
aGF2ZSBhIFBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaAppbmRleCAxOTE2Y2NiMjI3ZWQ5MWY1ZmY5MjY0MjRmMDA2OTgyOTYyYjFh
NzZmLi5kZDdmOWE0NmJkODQ3OTI0OWM3NGQyYTRjMjI0NTI5NjRlNjdhZWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTQ0
LDEwICs0NCwxMCBAQCBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlJiwgdW5zaWduZWQgcXVvdGEpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTdG9y
YWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYs
IHVuc2lnbmVkIHF1b3RhKSA9IDA7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGxvY2FsU3Rv
cmFnZUFyZWEoRG9jdW1lbnQmKTsKKyAgICBSZWY8U3RvcmFnZUFyZWE+IGxvY2FsU3RvcmFnZUFy
ZWEoRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1v
dmVQYWdlKFBhZ2UmKTsKQEAgLTU5LDggKzU5LDggQEAgY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiB7CiAg
ICAgU3RvcmFnZU5hbWVzcGFjZSYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgU3RvcmFn
ZU5hbWVzcGFjZSYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2lu
Jik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2Vj
dXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkgPSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkg
PSAwOworICAgIHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSA9IDA7
CiAKICAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKaW5kZXggOGNlMWE5ZTc0YTRlMGY1NjU5YzUxYzUyNzQxODgxZTQwODVmNzNmNS4uNGY5ZjBk
NGQ0Y2VhMzI2MWQ5NzI3OTJmNTYxODU0NTc3YTEzY2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVl
PiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJgogICAg
IGlmICghYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShT
VkdBdHRyaWJ1dGVNb2RlKTsKKyAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS0+bmFtZSgpKTsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0cmlidXRlLT52YWx1ZSgpKTsK
ICAgICBhdXRvIGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCA4YzY2ZDJj
MjIxNjBjNDJlZWQ2NDAyOWMyN2EyY2I2NDkxZDFhNTZiLi4xNjdhNTQ3YWM2ZDJjNDRhNjk5N2E3
MDE1MTYyZDdhNzU0Mzc5OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxl
bmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAg
aWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoZmlsdGVyLCBtb2Rl
KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVCbGVuZDo6Y3JlYXRlKGZpbHRlciwgbW9kZSgpKTsK
ICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBpbnB1dEVm
ZmVjdHMuYXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDIpOyAg
ICAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmlu
ZGV4IDUxNWQzMmZmYmNkN2U1M2E3YmI0ZjU4ZmRhYjgyNWJmNjFjOTdiNzkuLjM2ZTY2OThiMmM0
Yjc1ZDJjYWI2YTlkMjM4NGZkMGM4NTg3NjNmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmls
dGVyLCBmaWx0ZXJUeXBlLCBmaWx0ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xv
ck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwgZmlsdGVyVmFsdWVzKTsKICAgICBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwotICAgIHJldHVybiBlZmZlY3Q7
CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAKaW5kZXggNTdmYWYzYjQ2MzAwMTk3MDNlM2Q4N2I5YzMzMjQzMjdjNDdkYmFiMi4u
MDIzNzk5NTJiZGNiNjE2YThmMDgzZmI0MTM1N2EzMTU2MGFjODQ3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC04
OSw5ICs4OSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0CiAgICAgICAgICAgICBhbHBoYSA9
IGRvd25jYXN0PFNWR0ZFRnVuY0FFbGVtZW50PihjaGlsZCkudHJhbnNmZXJGdW5jdGlvbigpOwog
ICAgIH0KICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVu
dFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAg
YXV0byBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5w
dXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5k
ZXggYTEwZTNhNzIxY2ZlYWJkNDcyMmFhMDk3YjFkY2Y4N2UyYzI1ZjlhNy4uYTdhNzY4Mjk2ZDM0
ZTQyN2U1MDA5ZGFlMmE3OGM0OTljNmYwYjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0
ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7
CisgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGZpbHRlciwgc3ZnT3BlcmF0
b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBp
bnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygpOwogICAgIGlucHV0RWZmZWN0cy5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVuZChpbnB1dDEpOwogICAg
IGlucHV0RWZmZWN0cy5hcHBlbmQoaW5wdXQyKTsgICAgCi0gICAgcmV0dXJuIGVmZmVjdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IGI5YjAyM2FjMDA2YzA3
ZWNjZGQwNzc3NDlkMjcyNTkyM2QyYmZkMDQuLmQ5ZGIwYWNlYjdmM2UwNDQyODUyNjczZjdiODJh
ZGMxOTAwMzQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xODksOSArMTg5LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXIKIAogICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5
aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9y
KCkpOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRp
bmc6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50
KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGln
aHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
ZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCBrZXJuZWxV
bml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSk7
CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4g
ZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggNDM1
ZmM3MDFkZjYwN2NmMGIwYmQ5NmFkNzcxZGI1ZmZhZmQ0NGY1My4uMmI0MmYzNDQwODI4OWVmOWIw
OTAzYThhNmJhNWFjMzI0ZWMzNTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEyNywxMiArMTI3LDEyIEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyCiAgICAgaWYgKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURp
c3BsYWNlbWVudE1hcDo6Y3JlYXRlKGZpbHRlciwgeENoYW5uZWxTZWxlY3RvcigpLCB5Q2hhbm5l
bFNlbGVjdG9yKCksIHNjYWxlKCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRN
YXA6OmNyZWF0ZShmaWx0ZXIsIHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3Rvcigp
LCBzY2FsZSgpKTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cyA9IGVmZmVj
dC0+aW5wdXRFZmZlY3RzKCk7CiAgICAgaW5wdXRFZmZlY3RzLnJlc2VydmVDYXBhY2l0eSgyKTsK
ICAgICBpbnB1dEVmZmVjdHMuYXBwZW5kKGlucHV0MSk7CiAgICAgaW5wdXRFZmZlY3RzLmFwcGVu
ZChpbnB1dDIpOyAgICAKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVm
ZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcAppbmRleCA1NTBmNjVlMjc0M2NmMWVkNmE2NDQzZjk1MWVjZjRiYjhlZjhjNTliLi42
OThhNDg1NGMxYjE1NGUyOTM1OGE5YjJiNDliM2Y2ZWUyNjhmNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGQKICAgICBpZiAoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURyb3BTaGFk
b3c6OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgp
LCBkeSgpLCBjb2xvciwgb3BhY2l0eSk7CisgICAgYXV0byBlZmZlY3QgPSBGRURyb3BTaGFkb3c6
OmNyZWF0ZShmaWx0ZXIsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBkeCgpLCBk
eSgpLCBjb2xvciwgb3BhY2l0eSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQo
aW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVmZmVjdCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAKaW5kZXggOTMzMTg3ZTZkMDQ5YTRmZWY3ZDcxNGU2YTM5NTY1MTE0MWE0Y2EwMC4uOTU0
NzJkYjcxODYzOTc1MDE3MDc3YTY5MzE5NjUzNDVjNDEyZjE5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEyNCw5ICsxMjQsOSBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aQogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8
IHN0ZERldmlhdGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShmaWx0ZXIs
IHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpLCBlZGdlTW9kZSgpKTsKKyAgICBhdXRv
IGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoZmlsdGVyLCBzdGREZXZpYXRpb25YKCks
IHN0ZERldmlhdGlvblkoKSwgZWRnZU1vZGUoKSk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KS5hcHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3Zl
KGVmZmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CmluZGV4IDUwMmE5OTE5M2M4OWIwZjdlOTFiODExOWI5NmJmNWRjODc0MzViODkuLmVmYTc3ZGUy
YzFiYmQ1ODYyNWU1NmY4NGFjM2U1M2JmNGQwZjkzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8U1ZHRkVNZXJnZUVsZW1l
bnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRAogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVNZXJnZTo6Y3JlYXRlKGZpbHRlcik7CisgICAg
YXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKICAgICBGaWx0ZXJFZmZlY3RW
ZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKTsKIAogICAgIGZvciAo
YXV0byYgbWVyZ2VOb2RlIDogY2hpbGRyZW5PZlR5cGU8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Pigq
dGhpcykpIHsKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJn
ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEYKICAgICBp
ZiAobWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGZjYmM2
M2I2MmU2ZTEwNmViYjVkNTYyMDllM2Y1Mjk5ZDhiMGI2ZmMuLjdhNGNkMDgyZDU0MTU5YWFmNTI1
MDAyZGE5NDYwZWJhMWQ5ZWYxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAKQEAgLTE0NSw5ICsxNDUsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZAogICAgIGlmICh4UmFkaXVzIDwgMCB8fCB5UmFkaXVzIDwgMCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU1vcnBob2xv
Z3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRpdXMpOworICAg
IGF1dG8gZWZmZWN0ID0gRkVNb3JwaG9sb2d5OjpjcmVhdGUoZmlsdGVyLCBzdmdPcGVyYXRvcigp
LCB4UmFkaXVzLCB5UmFkaXVzKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChp
bnB1dDEpOwotICAgIHJldHVybiBlZmZlY3Q7CisgICAgcmV0dXJuIFdURk1vdmUoZWZmZWN0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAppbmRleCAyODIzNjk4NGY0MWE1YmEyZmE2MjM1MTZiYmY3MDQxYWFkYmQw
MjIyLi44ODUyNzExYTVhNmE2ZDQ0MzMzYzRlNzFlNmUzYjIxM2EwYTU3ZGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtOTIsOSArOTIsOSBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0
ZShmaWx0ZXIsIGR4KCksIGR5KCkpOworICAgIGF1dG8gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0
ZShmaWx0ZXIsIGR4KCksIGR5KCkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5k
KGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShlZmZlY3Qp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAKaW5kZXggM2EyZjRkMjNmOTczZDU3YjFjZGM2OWRkZTIxNzczNzg3M2Qw
Y2ZlNy4uODFlZjQ1NzY4Njk3MTdhNjllOWRlYjZlNjQ5NWRhNTExNzRjYzJjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApA
QCAtMTk4LDkgKzE5OCw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgCiAgICAgQ29s
b3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihy
ZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShmaWx0
ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCBzcGVjdWxhckV4
cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1v
dmUobGlnaHRTb3VyY2UpKTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6
Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCks
IHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0
aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
YXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92ZShl
ZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5k
ZXggM2YzODc5ZDdlNjZhOGMxZGRmOTkyMzI2M2I3ZmUwMDYyNTQ4OTI0NC4uZTNjZjVhZGNmNGY2
NDk3ZDczNmJjZGI3YjZjMmViZWFmMWYwZThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcApAQCAtODEsOSArODEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaQog
ICAgIGlmICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7CisgICAgYXV0byBl
ZmZlY3QgPSBGRVRpbGU6OmNyZWF0ZShmaWx0ZXIpOwogICAgIGVmZmVjdC0+aW5wdXRFZmZlY3Rz
KCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1cm4gV1RGTW92
ZShlZmZlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0dD
T2JzZXJ2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCmlu
ZGV4IDg2ZDk1OGY1NzYwNTFiODA3ZTA1MWMxNWFlYTBiYTY1MWJiNGZiMWIuLmFlMTE4ZWY5ZGRm
YjgwNDc1ZTNkZjU0MDMwNzRhNWE3Y2Q4NjQ3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvR0NPYnNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvR0NP
YnNlcnZhdGlvbi5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR0NPYnNlcnZhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEdDT2JzZXJ2YXRpb24+
IHsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmUHRy
PEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPEdDT2JzZXJ2YXRpb24+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR0NPYnNlcnZhdGlvbihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgR0NPYnNlcnZhdGlvbihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9CiAK
ICAgICBib29sIHdhc0NvbGxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX29ic2VydmVkVmFsdWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCBhOWIxNzUxOTY5MmVkYjNj
ZGM2YTRlY2Y4ZjQzNWZkZjJjM2I4NDVmLi45OTAxN2FiZWI1OTkzM2MzMGVhYzAyZTY4MmM1MjQ2
YjIwMTdjOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC0xMDAsNyAr
MTAwLDcgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21T
b3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcKICAgICAgICAgZnJhbWUtPnNldERvY3Vt
ZW50KHJlc3VsdC5jb3B5UmVmKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVU
eXBlKTsKKyAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291
cmNlTUlNRVR5cGUpOwogICAgIGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlz
RW1wdHkoKSA/IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwg
VGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQt
PnNldERlY29kZXIoV1RGTW92ZShkZWNvZGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWYyOGE4ZWJhNTlkZjFlNmUyMWZj
Yzg3NWUwZjQ5MGJhYTYwODg1Zi4uYjQyNTBhMDJjZWJmOTBlMmFjYzNlZGIzNzQ5OGFhNDg4MTgx
ZWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURv
Y3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHBh
cnNlciA9IFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50
LCBwYXJzZXJDb250ZW50UG9saWN5KTsKKyAgICBhdXRvIHBhcnNlciA9IFhNTERvY3VtZW50UGFy
c2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5
KTsKICAgICBib29sIHdlbGxGb3JtZWQgPSBwYXJzZXItPmFwcGVuZEZyYWdtZW50U291cmNlKGNo
dW5rKTsKICAgICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gVGhlIGZpbmlzaCgpIGFuZCBkb0Vu
ZCgpIGltcGxlbWVudGF0aW9ucyB0b3VjaCB0aGUgbWFpbiBkb2N1bWVudCBhbmQgbG9hZGVyIGFu
ZCBjYW4gY2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KICAgICBwYXJzZXItPmRl
dGFjaCgpOyAvLyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMgZGV0YWNo
ZWQgYmVmb3JlIGRlc3RydWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNmQ0YTBlZjRkNmRiZmQ3NjczMGMw
NGQ3OGQwYmE1YzliOWNlZGI3Zi4uMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4
NDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBzdGF0aWMgSVBDOjpDb25uZWN0aW9uKiBjdXJyZW50Q29ubmVjdGlvbjsKIAotUmVmUHRy
PFdlYlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1JlZjxXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmgKaW5kZXggMzIxYTA4Mzg2OTM4NmM0ZmJmNWYyOGQwN2VkMmRkNjQ0MWMyOTVjNS4uM2EwYTdh
ODk3OWUzMzE3ZDM3NzI2OGY4ZTY5MDI0ZWEyZDYyY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQzLDcgKzQzLDcg
QEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nl
c3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBz
dGF0aWMgUmVmPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAg
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
bmVjdGlvbi5tbQppbmRleCBiOWZjODk1MGZhMzNjYTU2ZjlhNjUwOWY2YTJlMWE4YzBhZjlkYTE3
Li5jNzY0OTZiNzMxMjQ2N2MzNjYwNjJmYWVlYzQ3NzI2OWUzYWU4Y2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTEwMyw4
ICsxMDMsOCBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+
KWRlbGVnYXRlCiAKIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiltZXNz
YWdlTmFtZSBib2R5OihpZCltZXNzYWdlQm9keQogewotICAgIFJlZlB0cjxXZWJLaXQ6Ok9iakNP
YmplY3RHcmFwaD4gd2tNZXNzYWdlQm9keSA9IFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVh
dGUobWVzc2FnZUJvZHkpOwotICAgIHNlbGYuX2Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2Fn
ZU5hbWUsIHdrTWVzc2FnZUJvZHkuZ2V0KCkpOworICAgIGF1dG8gd2tNZXNzYWdlQm9keSA9IFdl
YktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJvZHkpOworICAgIHNlbGYuX2Nv
bm5lY3Rpb24ucG9zdE1lc3NhZ2UobWVzc2FnZU5hbWUsIHdrTWVzc2FnZUJvZHkucHRyKCkpOwog
fQogCiAtIChXZWJLaXQ6OldlYkNvbm5lY3Rpb24mKV9jb25uZWN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ZDFmMDI1NDhmMzdk
ZGEzMDExNzc3MDgzNDBlZjJmZTIxODc4MWVmLi41ZWRkNWExZmVlZmYyMzVmY2Y0YTczY2M0MzEw
NWIwN2IxZTYwOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTExMzQsNyArMTEzNCw3IEBAIC0gKHZvaWQpdGFrZVNuYXBzaG90V2l0
aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8V2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaW1hZ2VIYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CisgICAgICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShpbWFnZUhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAgPyBiaXRt
YXAtPm1ha2VDR0ltYWdlKCkgOiBudWxscHRyOwogICAgICAgICBSZXRhaW5QdHI8TlNJbWFnZT4g
bnNJbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFn
ZS5nZXQoKSBzaXplOk5TTWFrZVNpemUoc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHQpXSk7CiAg
ICAgICAgIGhhbmRsZXIobnNJbWFnZS5nZXQoKSwgbmlsKTsKQEAgLTIwNzcsOCArMjA3Nyw4IEBA
IC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKICNpZiBI
QVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1h
dCBjb21wcmVzc2VkRm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllVVjQyMjsK
ICAgICBpZiAoV2ViQ29yZTo6SU9TdXJmYWNlOjphbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9G
b3JtYXQoc25hcHNob3RGb3JtYXQsIGNvbXByZXNzZWRGb3JtYXQpKSB7Ci0gICAgICAgIFJlZlB0
cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gdmlld1NuYXBzaG90ID0gV2ViS2l0OjpWaWV3U25hcHNo
b3Q6OmNyZWF0ZShudWxscHRyKTsKLSAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpjb252ZXJ0
VG9Gb3JtYXQoV1RGTW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OllV
VjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4g
Y29udmVydGVkU3VyZmFjZSkgeworICAgICAgICBhdXRvIHZpZXdTbmFwc2hvdCA9IFdlYktpdDo6
Vmlld1NuYXBzaG90OjpjcmVhdGUobnVsbHB0cik7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y29udmVydFRvRm9ybWF0KFdURk1vdmUoc3VyZmFjZSksIFdlYkNvcmU6OklPU3VyZmFjZTo6
Rm9ybWF0OjpZVVY0MjIsIFt2aWV3U25hcHNob3QgPSB2aWV3U25hcHNob3QuY29weVJlZigpXShz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CiAg
ICAgICAgICAgICBpZiAoY29udmVydGVkU3VyZmFjZSkKICAgICAgICAgICAgICAgICB2aWV3U25h
cHNob3QtPnNldFN1cmZhY2UoV1RGTW92ZShjb252ZXJ0ZWRTdXJmYWNlKSk7CiAgICAgICAgIH0p
OwpAQCAtNTkyMiw3ICs1OTIyLDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVj
dEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW0KICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZUhh
bmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAg
ICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFu
ZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAg
ICAgIGlmICghYml0bWFwKSB7CiAgICAgICAgICAgICBjb3BpZWRDb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMDA3ZDExMWJhZDA3YjAz
MGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0Mi4uOTViMDJlODNlZWMwMTAwNzg1NzU5ZjBmZDZiMjhk
NWNmZmY5Y2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTg0LDggKzg0LDgg
QEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQo
aW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGkKICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uIGNvcmVQb3NpdGlvbiB7IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKSwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBh
bHRpdHVkZTsKICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNj
dXJhY3k7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7Ci0gICAg
bV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24u
Z2V0KCkpOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKKyAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJv
dmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi5wdHIoKSk7CiB9CiAKIHZvaWQgV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlcjo6bm90aWZ5RXJyb3JPY2N1cnJlZChjb25zdCBjaGFyKiAvKiBt
ZXNzYWdlICovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3YWZhNzljNjFlYmNjMDJlY2ZiOGVmOTliZGRkZTEz
NzU4NjI0MTMzLi5iY2U4MDU4ZTU5ZTYzODcwNDJkY2QyNjhmYTE5OTNhNmNkNGI3NGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcApAQCAtMTQ1NSw4ICsxNDU1LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfYWxs
b3dfdGxzX2NlcnRpZmljYXRlX2Zvcl9ob3N0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAg
ICBnX3JldHVybl9pZl9mYWlsKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChob3N0KTsKIAotICAgIFJlZlB0cjxXZWJDZXJ0aWZpY2F0ZUlu
Zm8+IHdlYkNlcnRpZmljYXRlSW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyhjZXJ0aWZpY2F0ZSwgc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmlj
YXRlRmxhZ3M+KDApKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdCh3ZWJDZXJ0aWZpY2F0ZUluZm8uZ2V0KCksIFN0
cmluZzo6ZnJvbVVURjgoaG9zdCkpOworICAgIGF1dG8gd2ViQ2VydGlmaWNhdGVJbmZvID0gV2Vi
Q2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNlcnRpZmlj
YXRlLCBzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICBjb250ZXh0
LT5wcml2LT5wcm9jZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0
KHdlYkNlcnRpZmljYXRlSW5mby5wdHIoKSwgU3RyaW5nOjpmcm9tVVRGOChob3N0KSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5kZXggODI4
YmZiMjI1YTdmZTc4MDgzMjE2YjAyNjFmZDhmMTFiYjIzYjBiMi4uYWJkNzc5ZmU3NTYxYTVmYjg5
YmZlNWE1MGU1MTA5MmEzNTNjYmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNz
aW9uQ2Fpcm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2
NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBh
dXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5t
bQppbmRleCAzN2IwY2I3YTgzMDQzZGYwMzEzMTZjNjQ4M2MyMDkzM2IzMDc2NmJkLi5kMzQ3NzE4
YjJmZDg3OTYwMmNiMzg1NzQ4NTAwZmQyZjk2MzNlZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBp
bWFnZURhdGFIYW5kbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGM4ODM2NDJiNWRjNTA2
YjYyNzY1MTBiNzM0ODVmY2Q0NjYyZWY0ODEuLjVmZDVhZjQ5YjRjZDU3YWVhZmYxNjg2Y2FhY2U0
YWU1MTMyZmI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcApA
QCAtNDgsNyArNDgsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29u
c3QgVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKICAgICBBU1NFUlQobV9zaXplID09IHVwZGF0
ZUluZm8udmlld1NpemUpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFwSGFuZGxlKTsKKyAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHVwZGF0ZUluZm8uYml0bWFw
SGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZTMwYjAz
ZjVmNGM0Y2RjOGIyN2RjNmFjNmM1NTVhYjg5YzlkYjhiNy4uMjg1ZDY2Yjc4NGMzYjI1ODI1NGM1
ZTM2YzM5YmRkMzQ0MTRkMzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNzQyLDkgKzc0Miw5IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdl
UHJveHkmIHBhCiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBOU0Vycm9yICpvcmlnaW5hbEVycm9yKQogewotICAgIFJlZlB0cjxBUEk6OkZyYW1l
SGFuZGxlPiBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVBy
b3h5LmZyYW1lSUQoKSk7CisgICAgYXV0byBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6
OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7CiAKLSAgICBhdXRvIHJlY292ZXJ5QXR0
ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKCpmcmFtZUhh
bmRsZSkgdXJsU3RyaW5nOm9yaWdpbmFsRXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdV
UkxTdHJpbmdFcnJvcktleV1dKTsKKyAgICBhdXRvIHJlY292ZXJ5QXR0ZW1wdGVyID0gYWRvcHRO
UyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKGZyYW1lSGFuZGxlLmdldCgpKSB1cmxT
dHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vy
cm9yS2V5XV0pOwogCiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOnJlY292ZXJ5QXR0ZW1wdGVyLmdl
dCgpLCBfV0tSZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5LCBuaWxdKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaAppbmRleCA5ZDc3NDEwYzA5YzFiNzExNWE0MDQxZDI5N2JiNDU2ODM4ZWFlOTYwLi42
NGEzNWY3ZTg3OWRiMDNkYzBiZjg3NzIyMTQ0YzIyYmZmM2Q5ZWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaApAQCAtMTcxLDcgKzE3MSw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dCBmaW5hbDogcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDCiAKIGNs
YXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBj
cmVhdGUoV2ViUGFnZVByb3h5Jik7CisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmKTsKICAgICB2aXJ0dWFsIH5QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCmluZGV4IDRjOGZjYmY4ZWY3MmUwNTFlOGEyMjkxYjVmNGYxNmZmZGMwMjcw
NjcuLjg2NzdhMDQxYzcwZDExYjk3Njk4YzQ3ZWMyYjc5YWRmMzFkOTAxY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubW0KQEAgLTI5Miw5ICsyOTIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDo6cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpCiAK
ICNwcmFnbWEgbWFyayAtIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCitSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2Up
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
cGFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eShwYWdlKSk7CiB9CiAKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKaW5kZXggYTkyOTlmMWI3NDY5YjAzYWQyMzQ2MjRiY2QwYjM1NmJjOTI4YjY5Mi4uMjk3Zjk2
OGIzNTI5ZTBjMzU1Y2Q0ZGIxYTg5OWMyMGU4Y2M5MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQg
ZmluYWwKIAogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNv
dW50ZWQ8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkmKTsKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1
YWwgflZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggYTQzOGZlNzFhODZkMzI3Mjg1YWVmNTIx
MmZmMzU2MTI2NDI1NmQxNi4uNGNmMzBiZjMzMWU3OTQyMWYyMzljY2E1OTYzMTEzOTJmOGY1YTgz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzE0LDkgKzMxNCw5IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiAKICNw
cmFnbWEgbWFyayAtIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQogCi1SZWZQdHI8VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgcGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5KQorUmVmPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4g
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkmIHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShw
YWdlLCBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkocGFnZSwgcGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KSk7CiB9CiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5JiBwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmlu
ZGV4IDE3MTBkZjE5YzQyNjU4ZjZmNTljN2MxODA3NzcxYWYyMmUyMjNkYzIuLjFkYWQ3MDRlYzk5
NmIxZWY5ZDRjMWE5OWIxNzBiZjc2MjNkMzY4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNTks
OCArMTU5LDggQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRN
ZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBz
aXplKTsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKKyAgICBuZXdDaGFu
Z2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9y
VHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
dWludDY0X3QmIG51bWJlck9mRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IGU2Yzg3MmU0ZmFkZTZjZmM0MmJjYTMzM2I3NDdiODIxY2Y1
NmUwNDcuLjlkNmM1Mzk0NDBjZGJjMTBmNDM2YzE2YTMyY2U0NzdiNjI1NzdkNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00Mzg3LDEwICs0
Mzg3LDEwIEBAIFJlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlZpZXdJbXBsOjp0YWtlVmlld1NuYXBz
aG90KCkKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QgPSBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZN
b3ZlKHN1cmZhY2UpKTsKKyAgICBhdXRvIHNuYXBzaG90ID0gVmlld1NuYXBzaG90OjpjcmVhdGUo
V1RGTW92ZShzdXJmYWNlKSk7CiAgICAgc25hcHNob3QtPnNldFZvbGF0aWxlKHRydWUpOwogCi0g
ICAgcmV0dXJuIHNuYXBzaG90OworICAgIHJldHVybiBXVEZNb3ZlKHNuYXBzaG90KTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eU1hcC5jcHAKaW5kZXggNzUwOWRkZWRiNGMwOGU2YmU4NTRiYjdjZWY3MjVhOTc5ZDgwZGNl
ZS4uODZkYzA5YzM0MWRhN2Y2ZWM0MWM2YTgyYTM3MWYxNzI3MWY2OGM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNw
cApAQCAtNDYsMTIgKzQ2LDEyIEBAIERvd25sb2FkUHJveHlNYXA6On5Eb3dubG9hZFByb3h5TWFw
KCkKIAogRG93bmxvYWRQcm94eSogRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94
eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3du
bG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVz
b3VyY2VSZXF1ZXN0KTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxv
YWRJRCgpLCBkb3dubG9hZFByb3h5KTsKKyAgICBhdXRvIGRvd25sb2FkUHJveHkgPSBEb3dubG9h
ZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOworICAg
IG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJv
eHkuY29weVJlZigpKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkUHJveHkt
PmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9hZFByb3h5KTsKKyAgICBtX3Byb2Nl
c3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCkuZG93bmxvYWRJRCgpLCBk
b3dubG9hZFByb3h5LmdldCgpKTsKIAotICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOwor
ICAgIHJldHVybiBkb3dubG9hZFByb3h5LnB0cigpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHlN
YXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA3OTY1ODY4YmUwNDMzOWU3
ODQ5ZjRkZDM0NDJjNjRkYzk1NmU2NjhjLi5mYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBi
Yjg5MDE3N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBA
IC05NiwxMSArOTYsMTEgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3Qg
U3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgbGFuZywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGly
ZWN0aW9uIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCkKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVy
YXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKLSAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVS
TCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwor
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJv
ZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNh
dGlvbklEKTsKICAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25J
RFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlv
bklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9u
SUQsIG5vdGlmaWNhdGlvbklEUGFpcik7Ci0gICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmlj
YXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmlj
YXRpb24pKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCAqbm90aWZpY2F0aW9uKTsK
KyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3Bh
aXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBt
X3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNGIwMTI1MmViYjhmZTkyN2M1YWFmNGM1NzBkYThlNDU1Zjhl
Y2I2ZC4uMTBkMmRhZDliZmIzNWY4ZWQyODY0MDJmNDNlZTA5ZjcxNjAwZTcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjU0LDEwICszNjU0LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKQog
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MtPmNhbkNyZWF0ZUZyYW1lKGZyYW1lSUQpKTsK
ICAgICAKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gc3ViRnJhbWUgPSBXZWJGcmFtZVByb3h5
OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOworICAgIGF1dG8gc3ViRnJhbWUgPSBXZWJGcmFtZVBy
b3h5OjpjcmVhdGUoKnRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8gQWRkIHRoZSBmcmFtZSB0byB0
aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBtX3Byb2Nlc3MtPmZyYW1lQ3JlYXRlZChmcmFtZUlE
LCAqc3ViRnJhbWUpOworICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIHN1YkZy
YW1lLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVdpbmRvdyh1aW50
NjRfdCBmcmFtZUlELCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYgd2luZG93SWRlbnRpZmllcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZDkzYjA4
NWY1MDMxMTU3MjgzMzlmYWM5OWI5ZDM4NGJhOTFkOTFhLi40NTdkNDIxMWVlZjk3MTkxNGRiM2Iw
YWMwNThkYjBiZGJjMzY1ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRT
dGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBGdW5jdGlvbjx2b2lkIChBUEk6Ogog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiBy
ZXF1ZXN0ID0gU3RhdGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKSk7CisgICAgYXV0byByZXF1ZXN0ID0gU3Rh
dGlzdGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0
aWNzUmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRp
c3RpY3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xNzIyLDIwICsxNzIyLDIwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGljc01hc2ssIEZ1bmN0aW9u
PHZvaWQgKEFQSTo6CiAgICAgICAgIHJlcXVlc3ROZXR3b3JraW5nU3RhdGlzdGljcyhyZXF1ZXN0
LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0
aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0KiByZXF1ZXN0KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKSA8cmRhcjovL3Byb2JsZW0vMTMyMDAw
NTk+OiBNYWtlIGdldHRpbmcgc3RhdGlzdGljcyBmcm9tIG11bHRpcGxlIFdlYlByb2Nlc3NlcyB3
b3JrLgogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3Rp
Y3MoU3RhdGlzdGljc1JlcXVlc3QqIHJlcXVlc3QpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXF1
ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QmIHJlcXVlc3QpCiB7CiAg
ICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdvcmtQcm9jZXNzIGlz
IHVuYXZhaWxhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBy
ZXF1ZXN0SUQgPSByZXF1ZXN0LT5hZGRPdXRzdGFuZGluZ1JlcXVlc3QoKTsKLSAgICBtX3N0YXRp
c3RpY3NSZXF1ZXN0cy5zZXQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LmFkZE91dHN0YW5kaW5nUmVxdWVzdCgpOworICAgIG1fc3RhdGlzdGlj
c1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsICZyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0
aWNzKHJlcXVlc3RJRCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCA1YjRkYzU4YzNlOWNhOGRkNTljOGVmOTRiMWY2NTZmNDUyODE5MDUxLi4x
YTE2MWFjYzQyMWJkM2Q5ZWE2ZjE5ODE5ZWY1MDJmMWQ5YjQ0MjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ4Nyw4ICs0ODcsOCBAQCBjbGFzcyBXZWJQ
cm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlByb2Nlc3NQbwogICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlByb2Nl
c3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAotICAgIHZvaWQgcmVx
dWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7Ci0gICAgdm9pZCBy
ZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKKyAgICB2b2lk
IHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCYpOworICAgIHZv
aWQgcmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Jik7CiAKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dzdHJlYW1lci9XZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKaW5kZXggNWUzZmI2NWMy
MzBkYmQ4NGRhZTM3MDJkZDZkZGY3ZDI1MzI0MDg5ZC4uZTNhZTUxNGIwMzdjZThmODgwNDk4YWZl
MTJhMWY5ZWMzMWJhNjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3N0
cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW5zdGFs
bE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uKQogewotICAgIFJlZlB0cjxJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Bl
cm1pc3Npb25SZXF1ZXN0PiByZXF1ZXN0ID0gSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKCp0aGlzLCBkZXRhaWxzLCBkZXNjcmlwdGlvbik7Ci0gICAg
aWYgKHBhZ2VDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lu
c1Blcm1pc3Npb25SZXF1ZXN0KCpyZXF1ZXN0KSkKKyAgICBhdXRvIHJlcXVlc3QgPSBJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoKnRoaXMsIGRldGFp
bHMsIGRlc2NyaXB0aW9uKTsKKyAgICBpZiAocGFnZUNsaWVudCgpLmRlY2lkZVBvbGljeUZvcklu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPmRlbnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCmluZGV4IDg1MTY0MzcwZjdiNTFiZmIwOTEwZWEwMDQxZGJlMTAxNDQyN2Y4NjMuLjkyZWFk
MDQ1ZThiOGZjMmU0Yjk5MzQ0MjZiZDEwYTRhOGU1OWY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclByb3h5R3RrLmNw
cApAQCAtNTMsMTggKzUzLDE4IEBAIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQo
IW1fd2ViVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0g
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAg
ICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVi
dWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNl
dERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldExvZ3NQ
YWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgUmVm
UHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVj
dG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UobnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdy
b3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZv
clBhZ2UobnVsbHB0cikpOwogCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcm9j
ZXNzUG9vbCgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKG51bGxw
dHIpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2Vz
LmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2Vz
LnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5w
dHIoKSk7CiAgICAgbV93ZWJWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQobV93ZWJWaWV3LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9yVmlld0Rlc3Ryb3ll
ZCksIHRoaXMpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV93ZWJW
aWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4
IGI2NGUzMzU5MjkyYjNmZWVjZjdlNzJlYWIzMGUwYTZhNzE5ZmQzNGMuLmNhMTg3YTY0MjM0MTEy
ZTg1NzliZDg2MTYyZDliODNmYjQyOWM4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQ
YWdlKCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVj
dG9yVmlldyk7CiAKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJX
ZWJLaXQyLiIsICJXZWJLaXQyLiIpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAv
LyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcg
YnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAj
ZW5kaWYKICAgICBwcmVmZXJlbmNlcy0+c2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyh7CiAgICAg
fSk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBhZ2UoaW5zcGVjdGVkUGFnZSgp
KSk7CisgICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQ
YWdlR3JvdXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKIAogICAgIGF1dG8g
cGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29s
KGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVu
Y2VzKHByZWZlcmVuY2VzLmdldCgpKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdy
b3VwKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVu
Y2VzKHByZWZlcmVuY2VzLnB0cigpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdy
b3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3
ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgqcGFnZUNvbmZpZ3VyYXRpb24ucHRyKCkpKTsKICAgICBn
X29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgZ19zaWduYWxfY29u
bmVjdChtX2luc3BlY3RvclZpZXcsICJkZXN0cm95IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JWaWV3
RGVzdHJveWVkKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMWNmNTg3NThlY2JhOTg1N2Ew
YTYxYWQ0OGQ2YmZhM2UxYzBkN2YzLi45YTQ3ZTI2NDlmNjkzY2QyYjNiNTVjZWMyMGUxNzNjMmZi
NGIxM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dl
b2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKICAgICAgICAgICAgIFVS
TCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKICAgICAgICAg
ICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKCpyZXF1ZXN0LmZyYW1lLmdldCgpLCAqcmVxdWVzdC5vcmlnaW4uZ2V0KCkp
KTsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI+IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZSh1aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgICAgICAgICBhdXRv
IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSh1
aURlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkZvclVSTDpmcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgICAgICAgICBXS1dlYlZp
ZXcgKnZpZXdGcm9tUmVxdWVzdCA9IHJlcXVlc3Qudmlldy5nZXQoKTsKICAgICAgICAgICAgIFt1
aURlbGVnYXRlIF93ZWJWaWV3OnZpZXdGcm9tUmVxdWVzdCByZXF1ZXN0R2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTCBmcmFtZTpmcmFtZUluZm8uZ2V0KCkgZGVj
aXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNo
ZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXgg
NTI5ZjhlNjc4N2NkNTJhZGM3ZmZiNTY3MWRhOTY5YTZmNDY0ZDUxMS4uNmM1Y2I5Y2NmYjJiZDJm
M2NiYmZlNTlkZjdiNTEwOGM5YWU3ZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29u
c3QgU2hhcmVhYmxlQml0CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7Ci0g
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBhdXRv
IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1v
dmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKLSAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9pbXBsLT5z
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShpbWFnZS5wdHIoKSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwg
dGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgYXJjaGl2ZUJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZE5h
bWUpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94
eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwCmluZGV4IDkxY2ZmNjE5YmI5YWY5ZTNhYzU0YzNiMDU2NTJlMmIzMGVlM2RiNjkuLjVh
ZmViODA5ZjIwNDgwZmRkZDc2MjFlMzI1MDk0NGRiN2RlZTZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMTky
LDcgKzE5Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAg
IFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3Bl
cnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBj
aGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKQEAgLTIwMCwxMSArMjAwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICNlbmRpZgogICAgIHByZWZl
cmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAgICAgcHJlZmVy
ZW5jZXMtPnNldEphdmFTY3JpcHRSdW50aW1lRmxhZ3MoeyB9KTsKLSAgICBSZWZQdHI8V2ViUGFn
ZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyRm9yUGFnZShpbnNwZWN0ZWRQYWdlKCkpKTsKKyAgICBhdXRvIHBhZ2VHcm91
cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXJGb3JQ
YWdlKGluc3BlY3RlZFBhZ2UoKSkpOwogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6
OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0
UHJvY2Vzc1Bvb2woJmluc3BlY3RvclByb2Nlc3NQb29sKGluc3BlY3Rpb25MZXZlbCgpKSk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKTsK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5nZXQoKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLnB0cigpKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cC5wdHIoKSk7CiAK
ICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudCA9IHsKICAgICAg
ICAgeyAwLCB0aGlzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQppbmRleCA4MjUwOTAxNzkw
MGY0Nzg5NDQ5ZWM1ZGVmYzcxMjhhMTc1YzY2OTk3Li45MzEzNDNlYjFiYjg3MzJlYTVkM2I1NDI0
YzUzMDZjODQ2MmU5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0KQEAgLTUwLDggKzUw
LDggQEAgLSAoaWQpX2luaXRXaXRoSW1wbDooV2ViQ29yZTo6UmFuZ2UqKWltcGwKIAogLSAoaWQp
aW5pdFdpdGhEb2N1bWVudDooV0tET01Eb2N1bWVudCAqKWRvY3VtZW50CiB7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUoKldlYktpdDo6
dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzZWxmID0gW3NlbGYgX2luaXRXaXRo
SW1wbDpyYW5nZS5nZXQoKV07CisgICAgYXV0byByYW5nZSA9IFdlYkNvcmU6OlJhbmdlOjpjcmVh
dGUoKldlYktpdDo6dG9XZWJDb3JlRG9jdW1lbnQoZG9jdW1lbnQpKTsKKyAgICBzZWxmID0gW3Nl
bGYgX2luaXRXaXRoSW1wbDpyYW5nZS5wdHIoKV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAppbmRleCBlOTlmMzU3MGQwZTMwYmFkZmUwMWRhY2ZkYjNmYWY0NTBlN2NhZTZmLi44YzI5
NWJhZWJmYmEyZTA2YjViNzYxODU1YmYyZWQ5ODI5OWZlZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25h
cHNob3RPcHRpb25zIG9wdGlvbgogICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZSA9IHBhaW50
UmVjdC5zaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShzY2FsZUZhY3Rvcik7CiAK
LSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOworICAgIGF1dG8gYmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2luZ1N0b3Jl
U2l6ZSwgeyB9KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
aW5kZXggMjFhMzEyMzNlNmZjOWUyODE4YTJmY2ZhMzAxOTFhNWZhMTU3ODhiNS4uOTUxMjMwMmIy
ODJlNDFlZDFiMjQ3MTlhMmQwNDQ4ZGM3NDdmZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTE2OCw4ICsxNjgsOCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJQYWdlJiBwYWdlLCBSYQogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBl
LT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1l
bnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6
ZSgpKTsKLSAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBp
dGVtLT5zaXplKCkpOworICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmNwcAppbmRleCBlYzA5ODY3YmYwMzhlZTU4YzlmZTJkMzg3NDA2NDg5ZDY2
M2I4ZDhlLi42ZTI4MmQ5ZTBiOTBiMjkwZWFhMDg5ODdhNDJiOGY4OThjYTliMDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTc4LDEwICs3OCwxMCBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChXZWJQYWdlKiBwYWdlLCBjb25zdCBIaQogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0g
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29yZUhpdFRlc3RSZXN1bHQpOwog
CiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5tb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSks
IHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b0FQSShwYWdlKSwg
dG9BUEkoaGl0VGVzdFJlc3VsdC5wdHIoKSksIHRvQVBJKG1vZGlmaWVycyksICZ1c2VyRGF0YVRv
UGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVm
KHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5k
ZXggYzZhNTA2OTE3NDBhNWRiM2U2NWYxOTc1NzFiN2JkNDAwNWJiNzFhMC4uODhjMGEyZDljNjMx
MmQyYzBlYTA2YTU1N2Y1YTAxZTJjMzlhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApA
QCAtNzUxLDcgKzc1MSw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2lu
OjpzbmFwc2hvdCgpCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gbV9wbHVnaW5TaXpl
OwogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3RvcigpKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVTaXplLCB7IH0pOwog
ICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3Ig
aW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5k
ZXggZTg4ODQ1NzQwYTg4YzY2YjMxZGY3ZTJlNGNkNTI2OGFjYTFjNTEyYy4uZWJkZmE0NTI3MWRl
ZDY1MjkxNTE2YTNiMjRiNDgwOGQ3NjkxZjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDMsNyArOTQzLDcgQEAgdm9p
ZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVz
cG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcq
KWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlv
bi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1
dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygp
LCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFt
ZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBJbnRTaXplIGJhY2tpbmdTdG9y
ZVNpemUgPSBzaXplKCk7CiAgICAgYmFja2luZ1N0b3JlU2l6ZS5zY2FsZShjb250ZW50c1NjYWxl
RmFjdG9yKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIHsgfSk7CisgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNraW5nU3RvcmVT
aXplLCB7IH0pOwogICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CiAKICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3Rv
ciwgLWNvbnRlbnRzU2NhbGVGYWN0b3IpKTsKQEAgLTE4NTMsMTEgKzE4NTMsNyBAQCB2b2lkIFBE
RlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUs
IE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBwbGFpblRl
eHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBw
bGFpblRleHRTdHJpbmcuZ2V0KCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwotCi0gICAgICAgICAgICBpZiAoIWJ1ZmZlcikKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGhhbmRsZTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9
IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVt
Y3B5KHNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggMzE0NzlhZmMyOWFk
ZjRhYzg1MmJiM2NlM2Q4M2M0MTI5MjQ3YmZjMC4uNjU4ZWNkOWQyMzc4OTA0YjM0N2QwZDNhNmY0
NjdlOTQ0ZDJmMDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBA
IC04NCw4ICs4NCw4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgaWYgKCFJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+
IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0
c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGF1dG8gcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBs
dWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9u
b3VzSW5pdGlhbGl6YXRpb24pOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jb3B5UmVmKCkpOwogCiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwpAQCAtOTQsNyAr
OTQsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5l
Y3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkpOwogICAgIH0KIAotICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5nZXQoKTsKKyAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ucHRyKCk7CiB9CiAK
IHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKaW5kZXggODg1ZmNhM2UxNGNmMDZkMDVjNzRiMDNiYjk0ZjNhYmI2YmM5MWQxNi4uOTcwZWEx
ZmU3Y2E5NjQ1ZGQ5Yzc3N2NjZDVlMzYyYTY2ZGVhZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjQ3LDggKzI0Nyw3IEBA
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBsdWdpblByb3h5OjpzbmFwc2hvdCgpCiAgICAgaWYg
KHNuYXBzaG90U3RvcmVIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3RCdWZmZXIgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShzbmFwc2hvdFN0b3JlSGFuZGxlKTsKLSAgICByZXR1cm4gc25hcHNob3RC
dWZmZXI7CisgICAgcmV0dXJuIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHNuYXBzaG90U3RvcmVI
YW5kbGUpOwogfQogCiBib29sIFBsdWdpblByb3h5Ojppc1RyYW5zcGFyZW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTU0YzE4
Yzk1YzUzZGYyNDNkMThhYjc4NmJiMmZmNzY3MzYyNTMwNC4uNTBiMzU1MjIxM2RhYjQ4ZTg3NmIx
Zjc5ZThkNDI5OGZiY2M2MGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTExNzQsOCArMTE3NCw4IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGVyZm9ybVVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICB9CiAKICAgICAv
LyBUaGlzIHJlcXVlc3QgaXMgdG8gbG9hZCBhIFVSTCBhbmQgY3JlYXRlIGEgc3RyZWFtLgotICAg
IFJlZlB0cjxTdHJlYW0+IHN0cmVhbSA9IFBsdWdpblZpZXc6OlN0cmVhbTo6Y3JlYXRlKHRoaXMs
IHJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZXF1ZXN0LT5yZXF1ZXN0KCkpOwotICAgIGFkZFN0cmVh
bShzdHJlYW0uZ2V0KCkpOworICAgIGF1dG8gc3RyZWFtID0gUGx1Z2luVmlldzo6U3RyZWFtOjpj
cmVhdGUodGhpcywgcmVxdWVzdC0+cmVxdWVzdElEKCksIHJlcXVlc3QtPnJlcXVlc3QoKSk7Cisg
ICAgYWRkU3RyZWFtKHN0cmVhbS5wdHIoKSk7CiAgICAgc3RyZWFtLT5zdGFydCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDAyNjRkNzRiZGEwMzIzZjhlZDRlOTA0ZTMxNTllZDJl
NjQ3Y2EzZmUuLmQ1YWI2NmI0ZTkzNDE5OGFmNmM2Yjc1ZmIxNzVhYWZmZTcxMTZmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03MTgsOCArNzE4LDggQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2UKICAgICBhdXRvIGN1cnJlbnRRdW90YSA9IHRyYWNrZXIucXVvdGEob3JpZ2luRGF0YSk7
CiAgICAgYXV0byBjdXJyZW50T3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlKG9yaWdpbkRhdGEp
OwogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKLSAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbkRhdGEuZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBuZXdRdW90YSA9IG1fcGFnZS5p
bmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSgmbV9wYWdlLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCks
IGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgp
LCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFz
ZUlkZW50aWZpZXIob3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3Jp
Z2luKCkpOworICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5k
aWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLnB0cigpLCBkYXRh
YmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3Jp
Z2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgp
KTsKIAogICAgIGlmICghbmV3UXVvdGEpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCkBAIC03MzcsOCArNzM3LDgg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkK
IAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewot
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLnRvU3RyaW5nKCkpOwotICAgIGlm
IChtX3BhZ2UuaW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZFJlYWNoQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKCZtX3BhZ2UsIHNlY3VyaXR5T3JpZ2luLmdldCgpLCB0b3RhbEJ5dGVzTmVl
ZGVkKSkKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhvcmlnaW4udG9TdHJpbmcoKSk7CisgICAgaWYgKG1fcGFnZS5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoJm1f
cGFnZSwgc2VjdXJpdHlPcmlnaW4ucHRyKCksIHRvdGFsQnl0ZXNOZWVkZWQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvJiBjYWNoZVN0b3JhZ2UgPSBtX3BhZ2UuY29yZVBhZ2UoKS0+YXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGNhMDhmNDg4ZTk3NWJlMzY2MTRiYmIzY2M1ZDMzOWI4MTA0NzBjY2EuLmY2NjgyZDc5ZjA1
ZmViZTJmNDYzNjEzODg1MWNlZjFhNTNhOWVmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtNzY3LDEwICs3NjcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKIAog
ICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOworICAg
IGF1dG8gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9m
cmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5vdGlmeSB0aGUg
YnVuZGxlIGNsaWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2Vi
UGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5h
bWUsIHVzZXJEYXRhKTsKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2Vi
UGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLnB0cigpLCByZXF1ZXN0LCBmcmFtZU5h
bWUsIHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlv
blVzZSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWI2ZjRlNGIyZGM5
ZGFkNzhmZTBlNjhlM2RhODIxMmFmODZhMjQzNi4uNzQyZTM4NGIxNzkyZTAzNzA3MmY2Mjc2YmNh
YmYyZDViNzQ5MGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTE5
NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdAogICAgICAgICBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZTo6UmVwbHko
cGF0aG5hbWVzLCBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KSwgMCk7CiAgICAgQVNTRVJU
KHBhdGhuYW1lcy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJh
eS5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IGV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25zSGFuZGxlQXJyYXlbaV0pKSkKKyAgICAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheVtp
XSkpKQogICAgICAgICAgICAgZXh0ZW5zaW9uLT5jb25zdW1lUGVybWFuZW50bHkoKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA4NzE2MTIwZjcxZGNmOWFj
MjNkOGQxM2ViZGY5M2M2N2RmMzNkODk2Li4xODY3Yzk4NDkwNWM5MjAwZTAyMmRlMzZiOGQwNjVl
ZmZmMjQ0ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VU
b1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShpbWFnZVNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgQVNTRVJUKGdyYXBo
aWNzQ29udGV4dC0+aGFzUGxhdGZvcm1Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCmluZGV4IGZmZWUyYTY0NmNjNmU4OWYyNDMzZjNhNDdmZTdmNjQ3MzQ3YTgwMmUuLmY4
N2Q5MzQ0M2Y3YzU4YTgyYzQzNjNmMDM0YTAwNjAxM2I2YWExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZQogICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAg
fQogCi0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoZWxlbWVudCk7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGVsZW1lbnQpOwogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFn
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggYTM4
Y2QyYmY2Mzc5NGM4ZTlmMWQyMTJhM2U3OGIzZThjNGVmOGM2Yi4uOGNlNTY1ZmI5NTZmMzZjYjc1
MmVmODExYTEyNDVlYjU1ZGRjZjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMTY0LDcgKzE2NCw3IEBA
IERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgaWYgKHByZXNlbnRhdGlvblRyYW5zaXRpb24g
PT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFk
ZSkKICAgICAgICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZVNuYXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKICAgICAKLSAgICBSZWZQdHI8VGV4dElu
ZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShy
YW5nZSwgaW5kaWNhdG9yT3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisgICAgYXV0
byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBp
bmRpY2F0b3JPcHRpb25zLCBwcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICAgICBpZiAoIXRleHRJ
bmRpY2F0b3IpIHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm8oZmFsc2UpOwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmlu
ZGV4IDc4MjRlNWNmNzFiNDdkYjA5ZWVhMzVhNzY5ZmE3NjQxYTcyZDdmMzIuLjZhODZiMDAyYjg2
ZjQyYTAxY2Y0OGU1ZGY2OTAwYWNmNThmODMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtNDE3LDcgKzQxNyw3
IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8p
CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKICAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogICAgIGJpdG1hcFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGJpdG1hcFNpemUsIHsgfSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShiaXRtYXBTaXplLCB7IH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcAppbmRleCA5ZmVmZGJjYTEyY2Y1OWU2ZTMyNWNjOWMyNGViZTRmMzA5
MjlkMWYzLi42M2NjMjgzOTJlNDgwZGZiZDU0MzJkNjkwMDBmYTM4ZjIyZGU2NjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6aGlkZUZpbmRVSSgpCiAK
IGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVk
RnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRBbmltYXRlKQogewotICAg
IFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVX
aXRoU2VsZWN0aW9uSW5GcmFtZShzZWxlY3RlZEZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5j
bHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uLCBzaG91bGRBbmltYXRlID8gVGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZSA6IFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKTsKKyAgICBhdXRvIGluZGljYXRvciA9IFRleHRJbmRp
Y2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIFRleHRJbmRp
Y2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIHNob3VsZEFu
aW1hdGUgPyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlIDogVGV4
dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpOwogICAgIGlmICghaW5kaWNh
dG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2ZTVkNTMxNTkxYzQzZGVmYjAz
MTM2NzM0ODg3ODg5N2NhM2Q0MzllLi4xMDg2YzZmZGZjMjEwYThlMzQ3NjA0NjRkNmJjNDE2Mzky
OTU5YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIg
PSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdl
LnBhZ2VJRCgpOwotICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3Rv
cmVGbHVzaGVyLCBwYWdlSURdIHsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBb
YmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJ
RF0gewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCiAgICAgICAgIE1v
bm90b25pY1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjQwYjg0YjQ3YTgy
Njc4ODFkY2JlMjc3ZmE1YzFiZjVjYjQyMDBlMy4uMDA3NDliNDc3YTI0Y2U4Y2NjODI1MDFkOTRl
MDhiNjBlZTFhNjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViRnJhbWU6OmRvY3VtZW50TG9h
ZGVyRGV0YWNoZWQodWludDY0X3QgbmF2aWdhdGlvbklEKQogI2lmIFBMQVRGT1JNKENPQ09BKQog
UmV0YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVy
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFtZSkgLT4g
Ym9vbCB7CisgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpjb3Jl
RnJhbWUoKS0+ZG9jdW1lbnQoKSwgW3RoaXMsIGNhbGxiYWNrLCBjb250ZXh0XShGcmFtZSYgZnJh
bWUpIC0+IGJvb2wgewogICAgICAgICBpZiAoIWNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYTg3YzUyOWU0NDQ0MTMyN2EwMGE5OGMwMjU0ZjExZmFjMmE0NmNkNi4uZDU4MmJlODIy
MTc4MjcyYWQxMmU5MDc2NWIxMjE5ODhmZWIyMzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MzIsMTAgKzE0MzIsMTAgQEAgdm9pZCBX
ZWJQYWdlOjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybCwgSW50UG9pbnQgZG8KICAgICBjb25zdCBpbnQgc2luZ2xlQ2xpY2sgPSAxOwogICAgIC8v
IEZJWE1FOiBTZXQgbW9kaWZpZXIga2V5cy4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgc2V0IElzU2ltdWxhdGVkOjpZZXMuCi0gICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNl
RXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21w
b3NlZDo6WWVzLAorICAgIGF1dG8gbW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpZZXMsIEV2ZW50OjpJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIE1vbm90b25pY1Rp
bWU6Om5vdygpLCBudWxscHRyLCBzaW5nbGVDbGljaywgc2NyZWVuUG9pbnQsIGRvY3VtZW50UG9p
bnQsIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCBXZWJDb3JlOjpOb1RhcCwgbnVsbHB0cik7
CiAKLSAgICBtYWluRnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKG1haW5GcmFtZURvY3VtZW50
LT5jb21wbGV0ZVVSTCh1cmwpLCBlbXB0eVN0cmluZygpLCBtb3VzZUV2ZW50LmdldCgpLCBMb2Nr
SGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVmZXJyZXI6
Ok1heWJlU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRO
b3RBbGxvdyk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZChtYWluRnJhbWVE
b2N1bWVudC0+Y29tcGxldGVVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSwgbW91c2VFdmVudC5wdHIo
KSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgU2hvdWxkU2VuZFJl
ZmVycmVyOjpNYXliZVNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3cpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN0b3BMb2FkaW5nRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCkKQEAgLTM3MDUsNyArMzcwNSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3Qg
V2ViCiAKICAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXpl
KCk7IGkrKykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
c0hhbmRsZUFycmF5W2ldKSkpCisgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5
W2ldKSkpCiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBs
b2FkLmFwcGVuZChleHRlbnNpb24pOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRl
eCAwYzg0ZjY0YzhjNjNlZDFiYmQ2MGI3M2YzYjU2OGE0YTI3OGMxYWRmLi5mYmE1YjA1NmE0Yzlm
YWQwMTcxYzE4ODNmMDBjZWJmNWEzNTdmNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC05NCw3
ICs5NCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUm
IHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgICAgIG1faXNTaG93aW5nRmlu
ZEluZGljYXRvciA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUo
c2VsZWN0ZWRGcmFtZSwgZmluZFRleHRJbmRpY2F0b3JPcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKHRvdGFsSG9yaXpvbnRhbE1hcmdp
biwgdG90YWxWZXJ0aWNhbE1hcmdpbikpOworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKHNlbGVjdGVkRnJhbWUsIGZpbmRU
ZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
Ok5vbmUsIEZsb2F0U2l6ZSh0b3RhbEhvcml6b250YWxNYXJnaW4sIHRvdGFsVmVydGljYWxNYXJn
aW4pKTsKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCA5ZjkxNzMxZjQzYmZiMTEyMjQ3NTdlZmIxMDE3ZTQ2MjVjMTQ4ZjdmLi5iMDcyYzVi
ODc2YzJmOWM0MTBmODE1MTViMWZjMDA5ZTE5MTRkOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTgyMCwxNCArMTgy
MCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBv
bGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRp
b24ucHJldmlvdXMoKTsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHBvc2l0
aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKTsKIAotICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0
KCkpICE9IG9sZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShy
YW5nZS5wdHIoKSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBzZWxlY3Rpb24gaGFzIGNoYW5n
ZWQgdW50aWwgd2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRoZSBuZXcgdGV4dC4KICAgICBmcmFtZS5l
ZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwotICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CisgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5wdHIoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3Io
KS5pbnNlcnRUZXh0KG5ld1RleHQsIDApOwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNl
bGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogfQpAQCAtMjEzNiwxNyArMjEzNiwxNSBAQCB2b2lkIFdl
YlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5r
RWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua1JhbmdlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IG1hcmdpbkluUG9pbnRzID0gNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJn
aW5JblBvaW50cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4
dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5n
ZSgqbGlua1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRseUZpdENvbnRlbnQgfCBUZXh0
SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWlu
dEJhY2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50
QWxsQ29udGVudEZvckNvbXBsZXhSYW5nZXMgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0
aW9uLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXpl
KG1hcmdpbkluUG9pbnRzICogZGV2aWNlU2NhbGVGYWN0b3IsIG1hcmdpbkluUG9pbnRzICogZGV2
aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShsaW5rUmFuZ2UuZ2V0KCksIFRl
eHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25S
ZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBU
ZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29t
cGxleFJhbmdlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9w
dGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRl
dmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEluZGljYXRvcikKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5saW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRv
ci0+ZGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRleHRJbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m
by5saW5rSW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0yMTU2LDcgKzIxNTQsNyBA
QCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlcwogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5k
YXRhRGV0ZWN0b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9ySWRlbnRp
ZmllcigqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmRhdGFEZXRlY3Rv
clJlc3VsdHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1
bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YURldGVjdGlvbjo6cmVxdWly
ZXNFeHRlbmRlZENvbnRleHQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQtPmRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua1JhbmdlID0gUmFu
Z2U6OmNyZWF0ZShlbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqZWxlbWVudCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5k
YXJ5KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250
ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby50ZXh0QWZ0
ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFj
dGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLCBk
YXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQo
KSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKQEAgLTIxODEsNyArMjE3OSw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25v
d24gdG8gbmVlZCB3aWRlIGdhbXV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc2hhcmVkQml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwg
Yml0bWFwQ29uZmlndXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkNThkZDljNGM3YWFlMjc5MjM5MTU0
ODgzZDgyZTNkZjM4MTIxOWVlLi42MjBmZmE3ZjE1ZGM4YzI0OTdhNzNjYjliZDIwYjBiYzdkNTY1
ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04NTAs
NyArODUwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJh
bnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICB0cmFuc2Zvcm0uc2NhbGUo
c2NhbGUpOwogCiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHJlbmRlclZpZXdBbmlt
YXRpb25DQSA9IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgidHJhbnNmb3Jt
Iik7Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb24g
PSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0Eu
Z2V0KCkpOworICAgIGF1dG8gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYTo6Y3JlYXRlKHJlbmRlclZpZXdBbmltYXRpb25DQS5nZXQoKSk7CiAgICAgcmVuZGVy
Vmlld0FuaW1hdGlvbi0+c2V0VG9WYWx1ZSh0cmFuc2Zvcm0pOwogCiAgICAgUmV0YWluUHRyPENB
TGF5ZXI+IHNoYWRvd0NBTGF5ZXI7CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1Bh
Z2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlv
bkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsICpyZW5kZXJWaWV3QW5pbWF0aW9uKTsKKyAg
ICB6b29tTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJl
bmRlclZpZXdBbmltYXRpb24uZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAg
ICAgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUo
ZnJhbWVWaWV3LCBzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggODA1ZmU5ZTRj
YmI1ZDcyNmZmMjI2ZmVkNThkMjBhMWQ3ZTlkYmIyMS4uMjYzOTk0NTYyOGFhZmExNDJkNzU4YmI1
OGI2OTU0ZjcyOGQ3YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMjQgKzQw
LDI0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1S
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFt
ZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVv
dGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUlt
cGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRl
cykpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBT
dG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpFcGhlbWVy
YWxMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkVwaGVtZXJh
bExvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmUHRy
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1w
bChTdG9yYWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpMb2NhbCwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcykK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VU
eXBlOjpUcmFuc2llbnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUlu
Qnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsICZ0b3BMZXZlbE9yaWdpbiwg
cXVvdGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNw
YWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBtYXApCiAg
ICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7
CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitSZWY8U3RvcmFn
ZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGlmIChtX3N0b3JhZ2VUeXBlID09IFN0
b3JhZ2VUeXBlOjpFcGhlbWVyYWxMb2NhbCkKICAgICAgICAgcmV0dXJuIGVwaGVtZXJhbExvY2Fs
U3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTg1LDE2ICsxODUsMTYgQEAgY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OkVwaGVtZXJhbFN0b3JhZ2VBcmVhIGZpbmFsIDogcHVibGlj
IFN0b3JhZ2VBcmVhIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hcD4gbV9zdG9yYWdlTWFwOwogfTsK
IAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9j
YWxTdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQor
UmVmPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZXBoZW1lcmFsTG9jYWxTdG9y
YWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQogewogICAg
IGF1dG8mIHNsb3QgPSBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzLmFkZChzZWN1cml0eU9y
aWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2xvdCkKICAgICAgICAg
c2xvdCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpFcGhlbWVyYWxTdG9yYWdlQXJlYTo6Y3JlYXRl
KHNlY3VyaXR5T3JpZ2luLCBtX3F1b3RhSW5CeXRlcyk7Ci0KLSAgICByZXR1cm4gc2xvdC5nZXQo
KTsKKyAgICBBU1NFUlQoc2xvdCk7CisgICAgcmV0dXJuICpzbG90OwogfQogCi1SZWZQdHI8U3Rv
cmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQYWdlKiBu
ZXdQYWdlKQogewogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKQEAgLTIwMiwx
MiArMjAyLDEyIEBAIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y29weShQYWdlKiBuZXdQYWdlKQogICAgICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKSwgbV9x
dW90YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OkVwaGVtZXJhbExvY2FsKTsKLSAgICBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IG5ld05h
bWVzcGFjZSA9IGFkb3B0UmVmKG5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBl
LCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUlu
Qnl0ZXMpKTsKKyAgICBhdXRvIG5ld05hbWVzcGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5h
bWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgbV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2
ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5dGVzKSk7CiAKICAgICBmb3IgKGF1dG8mIGl0ZXIg
OiBtX2VwaGVtZXJhbExvY2FsU3RvcmFnZUFyZWFzKQogICAgICAgICBuZXdOYW1lc3BhY2UtPm1f
ZXBoZW1lcmFsTG9jYWxTdG9yYWdlQXJlYXMuc2V0KGl0ZXIua2V5LCBpdGVyLnZhbHVlLT5jb3B5
KCkpOwogCi0gICAgcmV0dXJuIG5ld05hbWVzcGFjZTsKKyAgICByZXR1cm4gV1RGTW92ZShuZXdO
YW1lc3BhY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CmluZGV4IGYxM2EyMmRjYmQyMWI2NzQwZTQ1MjM3ZjRkZmFkODMxMjU2NzI5ZTMuLjk3ZGIwYjgx
M2JhZjVjYjVhNDdkNzJlZTVhMDY1NWU2NzUwMGVkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApA
QCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7Ci0gICAgc3RhdGljIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsK
KyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
OworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7CiAKICAgICB2
aXJ0dWFsIH5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpOwogCkBAIC01NiwxMCArNTYsMTAgQEAgY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZSB7CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZjxXZWJD
b3JlOjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNv
cHkoV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VBcmVhPiBlcGhlbWVyYWxMb2NhbFN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gZXBoZW1lcmFsTG9j
YWxTdG9yYWdlQXJlYShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGU7CiAgICAgY29uc3QgdWlu
dDY0X3QgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyLmNwcAppbmRleCA0NjJkZTg2YzQ5MDA0ZjFhZjY5MWVkMGI2NzE2MThmMDNhN2ZmZTJjLi44
MjU1N2I3MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5jcHAKQEAgLTQxLDE0ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1h
cDx1aW50NjRfdCwgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcgogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1S
ZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmIChzbG90KQotICAgICAgICByZXR1cm4gc2xvdDsKKyAgICAgICAgcmV0dXJuICpzbG90
OwogCi0gICAgUmVmUHRyPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyID0gYWRvcHRSZWYobmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihp
ZGVudGlmaWVyKSk7Ci0gICAgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsK
KyAgICBhdXRvIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50aWZpZXIpKTsKKyAgICBzbG90ID0gc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLnB0cigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjsKIH0KQEAgLTY1LDIyICs2NSwyMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6
On5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogICAgIHN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoUGFnZSYgcGFnZSwgdW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICBy
ZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNp
Z25lZCBxdW90YSkKK1JlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdl
JiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29y
ZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKSwgcXVvdGEpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpCitSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVyLCBxdW90YSk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhKQorUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BM
ZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEpCiB7CiAgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9pZGVudGlmaWVy
LCB0b3BMZXZlbE9yaWdpbiwgcXVvdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuaAppbmRleCA4ZWEyNWU2ZTc1MDllYjJjMTdiZDFmOTQ4NGMzNzMxZjZjMWVhNzk1Li4zY2U2
ZGI5ZjA2OGU4MDM4OTY4MTE0ZWY5OWFjMjVhY2UwNDExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuaApAQCAtMzEsMTYgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRp
Zmllcik7CisgICAgc3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGdldE9y
Q3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcigpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
IHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiwgdW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYs
IHVuc2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSBvdmVycmlk
ZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVv
dGEpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubW0KaW5kZXggY2YzMDg1Yjg0MGYwN2ZkN2QwNTkyMTM1MjVkZDQ3ZGJlMWJlYjQ3
MS4uZmM2NTk4NjMyNTJiZmU0ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0KQEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Omlu
dmFsaWRhdGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxl
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90
IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQ+IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2UgPSBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7
Ci0gICAgbW9kZWwtPmFkZENsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBhdXRvIG1vZGVsID0gUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIGF1dG8gaW50ZXJm
YWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250
ZXh0SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoaW50ZXJmYWNlLmdldCgpKTsKIAogICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDdmNjMzMDlmMzJhMGE4M2EzOGQwYzI4ODI1ZTgxNzNi
MDIyMWYxNmUuLjVkNjExMGI3OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmludmFsaWRhdGUoKQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVy
ZmFjZVR1cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNl
KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRl
cmZhY2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNv
bnRleHRJZCk7CisgICAgYXV0byBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpjcmVhdGUoKTsKKyAgICBhdXRvIGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAgICBtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKIAogICAgIGludGVy
ZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVy
ZmFjZSk7CisgICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZhY2UuZ2V0KCkpOwogCiAgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDAxODE1YzEzYWMyYTEwMjk2NDAzMjczMTcyMjY3ZTMyNTZlOGMyZWMu
LjRhOTRhMWQ4NWNlY2ExZTNjNjNiYzcyYTg2YWIwNmFmMGUxODZkNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAt
OTMsMzEgKzkzLDMwIEBAIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUlt
cGwoKQogICAgICAgICBjbG9zZSgpOwogfQogCi1SZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCitSZWY8U3RvcmFnZU5hbWVzcGFjZT4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZVR5
cGUgPT0gU3RvcmFnZVR5cGU6OlNlc3Npb24gfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlw
ZTo6RXBoZW1lcmFsTG9jYWwpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBu
ZXdOYW1lc3BhY2UgPSBhZG9wdFJlZihuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdl
VHlwZSwgbV9wYXRoLCBtX3F1b3RhKSk7CisgICAgYXV0byBuZXdOYW1lc3BhY2UgPSBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIG1fcGF0aCwgbV9xdW90
YSkpOwogICAgIGZvciAoYXV0byYgaXRlciA6IG1fc3RvcmFnZUFyZWFNYXApCiAgICAgICAgIG5l
d05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaXRlci5rZXksIGl0ZXIudmFsdWUtPmNv
cHkoKSk7CiAKLSAgICByZXR1cm4gbmV3TmFtZXNwYWNlOworICAgIHJldHVybiBXVEZNb3ZlKG5l
d05hbWVzcGFjZSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUlt
cGw6OnN0b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQorUmVmPFN0
b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPiBz
dG9yYWdlQXJlYTsKLSAgICBpZiAoKHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQo
b3JpZ2luKSkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlQXJlYTsKKyAgICBpZiAoUmVmUHRyPFN0
b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4p
KQorICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWEucmVsZWFzZU5vbk51bGwoKTsKIAotICAgIHN0
b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2lu
LCBtX3N5bmNNYW5hZ2VyLmdldCgpLCBtX3F1b3RhKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwLnNl
dChvcmlnaW4sIHN0b3JhZ2VBcmVhLmdldCgpKTsKLSAgICByZXR1cm4gc3RvcmFnZUFyZWE7Cisg
ICAgYXV0byBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhSW1wbDo6Y3JlYXRlKG1fc3RvcmFnZVR5
cGUsIG9yaWdpbiwgbV9zeW5jTWFuYWdlci5nZXQoKSwgbV9xdW90YSk7CisgICAgbV9zdG9yYWdl
QXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYS5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1v
dmUoc3RvcmFnZUFyZWEpOwogfQogCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCmluZGV4IDI3YjhmOWJhYjNhZDMzOTY2ODU0MGY0ODBiZmQ2NWE5NjY2MTYxMzcuLmM4OGYw
NjFlZjVlNTBjOWIxNjM1ZWMzZjhkNmJhMGVkNzcwNWNhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCkBAIC01Nyw4ICs1Nyw4
IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2UgewogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpT
dG9yYWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNl
PiBjb3B5KFdlYkNvcmU6OlBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6
UGFnZSogbmV3UGFnZSkgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWFJbXBsPj4gU3RvcmFnZUFyZWFN
YXA7CiAgICAgU3RvcmFnZUFyZWFNYXAgbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKaW5kZXggZWQ3ZWEzYWEzOTNkYTU1OTM3YTFhZDQ1YTQ2ZDY3N2M4ODRhYmQ5ZS4uODM2
MjA1N2ZmZDc0ZjZkMmRhMWFhNDdkNzc4MDA0OTFjOWRhMTFkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgc3RhdGljIEhhc2hTZXQ8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyKj4mIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKQogICAgIHJldHVybiBzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWZQdHI8V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK1JlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpKTsKIH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpCkBAIC05NiwyMiArOTYsMjIgQEAgdm9pZCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogICAgIH0KIH0KIAotUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZSYsIHVuc2lnbmVkIHF1b3RhKQogewogICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocXVvdGEpOwogfQogCi1SZWZQdHI8U3RvcmFn
ZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3JhZ2VO
YW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4g
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFj
ZShxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkKIHsKICAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoLCBxdW90YSk7CiB9CiAKLVJlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFNlY3VyaXR5T3JpZ2luJiwgdW5zaWduZWQgcXVvdGEpCiB7
CiAgICAgLy8gRklYTUU6IEEgc21hcnRlciBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjcmVhdGUgYSBz
cGVjaWFsIG5hbWVzcGFjZSB0eXBlIGluc3RlYWQgb2YganVzdCBwaWdneS1iYWNraW5nIG9mZgog
ICAgIC8vIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKaW5k
ZXggMGQyMDdkMzQzMTkyYzRmZTdiOTdkMDM4ZDU4MWIyYzRlYzA3N2FiYi4uZTU4OWZlZTdhNWM2
YzkxY2Y5NGI3ZDIzYjQ4NjE0ODE3OWI4Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisgICAg
c3RhdGljIFJlZjxXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjbG9zZUxvY2FsU3RvcmFnZSgp
OwpAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVu
c2lnbmVkIHF1b3RhKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2Um
LCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2ln
bmVkIHF1b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZSYsIHVuc2lnbmVkIHF1
b3RhKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CisgICAgUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHVuc2lnbmVkIHF1b3RhKSBvdmVycmlk
ZTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5j
cHAKaW5kZXggYzZiNDA4NzEwNTAwNjE5OTAxYjU0MDYwNWUwNjY3ZDFhNjIxM2I5ZC4uNjNjYWUy
ZDBhZDUyY2Q1MTNkODUzMzIwMGMzZGVlZmNjMTdjNGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcApAQCAtNDIsMTggKzQy
LDIyIEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJW
aWV3R3JvdXBzKCkKICAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKIH0KIAotUmVmUHRyPFdlYlZp
ZXdHcm91cD4gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorUmVmPFdlYlZpZXdHcm91cD4g
V2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJW
aWV3R3JvdXAoU3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOwogCiAgICAgYXV0
byYgd2ViVmlld0dyb3VwID0gd2ViVmlld0dyb3VwcygpLmFkZChuYW1lLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3ZWJWaWV3R3JvdXApCi0gICAgICAgIHdlYlZpZXdHcm91
cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIgJiYgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5
KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCisgICAgaWYgKCF3ZWJW
aWV3R3JvdXApIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFdlYlZpZXdH
cm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKyAgICAgICAgd2ViVmlld0dy
b3VwID0gcmVzdWx0LmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBpZiAoIXdlYlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2Vi
Vmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlZpZXdHcm91cC0+bV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CiAKLSAg
ICByZXR1cm4gd2ViVmlld0dyb3VwOworICAgIHJldHVybiAqd2ViVmlld0dyb3VwOwogfQogCiBX
ZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCmluZGV4
IGZlMDVjZDU0ODY5MDVjZDI5ZmI2ODg0ZTdhODdmYmRjOTMyNzJiNWYuLjRkNDEzN2NlMmFhYWMz
YTE0MGQ1OWM2MmMzOTYzMzUyZjI1NWIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaApAQCAtMzgsNyArMzgsNyBAQCBPQkpDX0NM
QVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlZpZXdHcm91cD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViVmlld0dyb3VwPiBn
ZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCk7CiAgICAgfldlYlZpZXdHcm91cCgpOwogCiAgICAgc3RhdGljIFdlYlZpZXdHcm91cCogZ2V0
KGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmNwcAppbmRleCBkMDg0
OTNiMGY0MmNjZDM2MmFmNDQyYzAzZTQ5NDQ4ZDgxZDdmNWQwLi44MDQ5YjFjY2MyNzJjMzQ3MjU5
OWU0OTQyZTUwMDZjYjg2ODE1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5jcHAKQEAgLTI2
LDEzICsyNiwxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNlYXJjaFBvcHVwTWVu
dUlPUzo6U2VhcmNoUG9wdXBNZW51SU9TKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDog
bV9wb3B1cChhZG9wdFJlZihuZXcgUG9wdXBNZW51SU9TKGNsaWVudCkpKQorICAgIDogbV9wb3B1
cChhZG9wdFJlZigqbmV3IFBvcHVwTWVudUlPUyhjbGllbnQpKSkKIHsKIH0KIAogUG9wdXBNZW51
KiBTZWFyY2hQb3B1cE1lbnVJT1M6OnBvcHVwTWVudSgpCiB7Ci0gICAgcmV0dXJuIG1fcG9wdXAu
Z2V0KCk7CisgICAgcmV0dXJuIG1fcG9wdXAucHRyKCk7CiB9CiAKIHZvaWQgU2VhcmNoUG9wdXBN
ZW51SU9TOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVj
dG9yPFJlY2VudFNlYXJjaD4mIC8qc2VhcmNoSXRlbXMqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgK
aW5kZXggNzE2ZWQ1OWM0MTQ3MjM5NTJkNzBkZWM1MmRiZjhlZjU5ODc5YWY0Zi4uMGVmNDRiNDJh
NjYwYWUzNTJjOGJlZTY5NTUwYWIyZGYwZjk1MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51SU9TLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVibGljIFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudSB7CiAgICAgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFBvcHVwTWVudUlPUz4gbV9wb3B1cDsKKyAgICBSZWY8UG9wdXBN
ZW51SU9TPiBtX3BvcHVwOwogfTsKIAogI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVudUlPU19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
YmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggNDIzYzA0OTAwZjRmMGU2YjlhNWU2ODlmYzE5Yzg3
Mzc0NDJiNWIyOS4uODU5MTE3N2E5Y2YyYWU5MjYwYzdhMGNmYWYyZjMyYTEzNjFmNjY4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJs
ZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDMzLDggKzQzMyw4IEBAIC0gKERPTVJhbmdlICop
ZW5jbG9zaW5nUmFuZ2VXaXRoRGljdGF0aW9uUGhyYXNlQWx0ZXJuYXRpdmVzOihOU0FycmF5ICoq
KWFsdGVybmF0CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1hcmtlckFsdGVy
bmF0aXZlcy5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJsZUFycmF5ICop
KmFsdGVybmF0aXZlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopKG1hcmtlckFsdGVybmF0aXZlc1tq
XSldOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSwgbm9k
ZSwgbWFya2VyLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4ga2l0KHJhbmdlLmdl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBu
b2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgICAgIApAQCAtNDYyLDggKzQ2Miw4IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5nUmFuZ2VX
aXRoQ29ycmVjdGlvbkluZGljYXRvcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vy
cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBEb2N1bWVudE1hcmtlciogbWFya2VyID0g
bWFya2Vyc1tpXTsKICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8PSBvZmZzZXQg
JiYgbWFya2VyLT5lbmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0
T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJu
IGtpdChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCwgbm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVu
ZE9mZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBraXQocmFuZ2UucHRyKCkpOwogICAgICAg
ICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA5NmE2NDk2YzJjNDQ2MDk5MmM1
YzEyYzBkY2ZlNjdmMzQwYTZjMWM4Li5hNTkxOThjMzM0ZWUxNDk4ZDlmMzRiOWMwOTYyOTNkYzM2
Y2E1ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAtNDY1LDEzICs0NjUsMTMgQEAgLSAodm9pZClz
aW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6KE5TVVJMICopVVJMCiAgICAgaWYgKCFVUkwpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3NlZDo6WWVzLAorICAgIGF1dG8gZXZl
bnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzLCBFdmVudDo6SXNDb21wb3Nl
ZDo6WWVzLAogICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwgbnVsbHB0ciwgMSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCAwLCAwLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBNb3VzZUV2ZW50OjpJ
c1NpbXVsYXRlZDo6WWVzKTsKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNh
dXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNvdXJjZSB3ZWJGcmFtZV0pOwogICAgIEZyYW1lTG9hZFJl
cXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSwgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3csIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCAgSW5pdGlhdGVkQnlNYWluRnJh
bWU6OlVua25vd24gfTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBldmVudC5nZXQoKSwgbnVsbHB0cik7CisgICAgZnJhbWUt
PmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgZXZl
bnQucHRyKCksIG51bGxwdHIpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5t
bQppbmRleCBmODdlNjE1MzM3MTJmOGVlZDcwY2VlYjllMzg2MzVlM2FhOGY0YWQ0Li44MTM2NGQw
ZTU3NjEyYTgwZjY2OTRjMWYyMGZkNzNlNjRjZGIzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET00ubW0KQEAgLTU0NCwxMCArNTQ0LDEwIEBAIC0gKHZvaWQpZ2V0UHJldmlld1NuYXBzaG90
SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5TQXJyYXkgKiopcmVjdHMKIAog
ICAgIGF1dG8mIG5vZGUgPSAqY29yZShzZWxmKTsKIAotICAgIFJlZjxSYW5nZT4gcmFuZ2UgPSBy
YW5nZU9mQ29udGVudHMobm9kZSk7CisgICAgYXV0byByYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhu
b2RlKTsKIAogICAgIGNvbnN0IGZsb2F0IG1hcmdpbiA9IDQgLyBub2RlLmRvY3VtZW50KCkucGFn
ZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dElu
ZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShyYW5nZSwgVGV4dEluZGlj
YXRvck9wdGlvblRpZ2h0bHlGaXRDb250ZW50IHwKKyAgICBhdXRvIHRleHRJbmRpY2F0b3IgPSBU
ZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25U
aWdodGx5Rml0Q29udGVudCB8CiAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4
dENvbG9yIHwKICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfAog
ICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250
ZW50Rm9yQ29tcGxleFJhbmdlcyB8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5t
bQppbmRleCAxZjMyZGM5NDk4YmE0MjIxZDEyOTM5MWI4NDc5YWJhMzBhOTc5ODk0Li5hMDRiYzU1
N2JmZGRjOTc2ZmQxODA1YWZlYjc4NjViNGQxMjdhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdE1hbmFnZXIubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5PiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjppbnN0YW50aWF0ZVBs
dWdpbgogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0
YVdpdGhQcm9wZXJ0eUxpc3Q6cHJvcGVydGllcy5nZXQoKSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RC
aW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CiAgICAgQVNTRVJUKGRh
dGEpOwogICAgIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IGluc3Rh
bmNlID0gTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjcmVhdGUoaG9zdFByb3h5LCBwbHVn
aW5WaWV3LCBmdWxsRnJhbWUpOworICAgIGF1dG8gaW5zdGFuY2UgPSBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmNyZWF0ZShob3N0UHJveHksIHBsdWdpblZpZXcsIGZ1bGxGcmFtZSk7CiAg
ICAgdWludDMyX3QgcmVxdWVzdElEID0gaW5zdGFuY2UtPm5leHRSZXF1ZXN0SUQoKTsKICAgICBr
ZXJuX3JldHVybl90IGtyID0gX1dLUEhJbnN0YW50aWF0ZVBsdWdpbihob3N0UHJveHktPnBvcnQo
KSwgcmVxdWVzdElELCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29uc3RfY2FzdDx2b2lkKj4oW2Rh
dGEgYnl0ZXNdKSksIFtkYXRhIGxlbmd0aF0sIGluc3RhbmNlLT5wbHVnaW5JRCgpKTsKICAgICBp
ZiAoa3IgPT0gTUFDSF9TRU5EX0lOVkFMSURfREVTVCkgewpAQCAtMjk5LDcgKzI5OSw3IEBAIFJl
ZlB0cjxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk+IE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXI6Omluc3RhbnRpYXRlUGx1Z2luCiAgICAgaW5zdGFuY2UtPnNldFJlbmRlckNvbnRleHRJRChy
ZXBseS0+bV9yZW5kZXJDb250ZXh0SUQpOwogICAgIGluc3RhbmNlLT5zZXRSZW5kZXJlclR5cGUo
cmVwbHktPm1fcmVuZGVyZXJUeXBlKTsKIAotICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICByZXR1
cm4gV1RGTW92ZShpbnN0YW5jZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
cjo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90
eXBlX3QgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNjA4ZDk0MTFh
OTlmZWFkNTAwZjRlMTlkMmM3NzEyOWZkODRkYTk0Mi4uYzY5Mjg0MTFlYmU5ODM0ZTNkOGQ2NDNj
MWMxZmY2NDFjMzU0NTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQpAQCAtNzE5LDggKzcxOSw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpldmFsdWF0ZUphdmFTY3JpcHQoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzCiAgICAgICAg
IC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBhbmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYg
dGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRv
ZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0gW3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAgIAotICAgICAgICBSZWZQdHI8SG9zdGVkTmV0
c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3QoKSk7Ci0gICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJl
YW0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpj
cmVhdGUodGhpcywgcGx1Z2luUmVxdWVzdC0+cmVxdWVzdElEKCksIHBsdWdpblJlcXVlc3QtPnJl
cXVlc3QoKSk7CisgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLT5zdHJlYW1JRCgpLCBzdHJl
YW0uY29weVJlZigpKTsKICAgICAgICAgCiAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNl
PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpV
UkwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOkAidGV4dC9wbGFpbiIgCkBAIC03OTks
MTAgKzc5OSwxMCBAQCBOUEVycm9yIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJl
cXVlc3QoTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaAogICAgICAgICBtX3BsdWdpblJl
cXVlc3RzLmFwcGVuZChXVEZNb3ZlKHBsdWdpblJlcXVlc3QpKTsKICAgICAgICAgbV9yZXF1ZXN0
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgcmVxdWVzdCk7CisgICAgICAgIGF1dG8gc3Ry
ZWFtID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQs
IHJlcXVlc3QpOwogCiAgICAgICAgIEFTU0VSVCghbV9zdHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJ
RCkpOwotICAgICAgICBtX3N0cmVhbXMuYWRkKHJlcXVlc3RJRCwgc3RyZWFtKTsKKyAgICAgICAg
bV9zdHJlYW1zLmFkZChyZXF1ZXN0SUQsIHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJl
YW0tPnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAzMmMzNjhmZGVh
OTRhMmZiMDI4YTJjNTAzMDQ3YTllYTBlNzVjMDliLi5iNTdjOGUyYWMxNzNkMGQ3YTcwMDAyMmY5
YzEwN2QzMGRkMmIzY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAg
LSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRQbHVnaW5SZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0
ICopSlNQbHVnaW5SZXF1ZXN0CiAgICAgICAgIC8vIERvbid0IGNhbGwgTlBQX05ld1N0cmVhbSBh
bmQgb3RoZXIgc3RyZWFtIG1ldGhvZHMgaWYgdGhlcmUgaXMgbm8gSlMgcmVzdWx0IHRvIGRlbGl2
ZXIuIFRoaXMgaXMgd2hhdCBNb3ppbGxhIGRvZXMuCiAgICAgICAgIE5TRGF0YSAqSlNEYXRhID0g
W3Jlc3VsdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgICAg
IAotICAgICAgICBSZWZQdHI8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpV
UkxdLCBwbHVnaW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdp
blJlcXVlc3Qgbm90aWZ5RGF0YV0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpjcmVhdGUoW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpVUkxdLCBw
bHVnaW4sIFtKU1BsdWdpblJlcXVlc3Qgc2VuZE5vdGlmaWNhdGlvbl0sIFtKU1BsdWdpblJlcXVl
c3Qgbm90aWZ5RGF0YV0pOwogICAgICAgICAKICAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9u
c2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJ0ZXh0L3BsYWluIiAKQEAgLTE2
NzgsOSArMTY3OCw5IEBAIC0gKE5QRXJyb3IpbG9hZFJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVl
c3QgKilyZXF1ZXN0IGluVGFyZ2V0Oihjb25zdCBjaGFyICopY1RhCiAgICAgICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IobG9hZFBsdWdpblJlcXVlc3Q6KSB3aXRoT2JqZWN0OnBs
dWdpblJlcXVlc3QgYWZ0ZXJEZWxheTowXTsKICAgICAgICAgW3BsdWdpblJlcXVlc3QgcmVsZWFz
ZV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
PiBzdHJlYW0gPSBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHJlcXVlc3QsIHBsdWdp
biwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSk7CisgICAgICAgIGF1dG8gc3RyZWFtID0g
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZShyZXF1ZXN0LCBwbHVnaW4sIHNlbmROb3Rp
ZmljYXRpb24sIG5vdGlmeURhdGEpOwogCi0gICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5nZXQo
KSk7CisgICAgICAgIHN0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBzdHJl
YW0tPnN0YXJ0KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRl
eCA5NmVmOTIxZmQ2MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiLi4yMzQ3ODFiMGJlODZh
NGJkYTUwYzBjZTU2NDg0MjIzODhiNDJiZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bQpAQCAtMjA3LDggKzIwNyw4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNs
aWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lVmll
dy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246
OkRvTm90U2V0Rm9jdXMpOworICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRv
Y3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9y
KSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOworICAg
IGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAg
IE9wdGlvblNldDxQYWludEJlaGF2aW9yPiBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5w
YWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVo
YXZpb3I6OlNlbGVjdGlvbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2
MDE4ODVlYjhkNDRlNjE5YmQ1NDJiYWM1ZDA0MDZmMmUyM2YwZWRhLi5hZThiOWVmYjdkYWRlYzZl
ODE4ZWNlNzBmNjczOWEyNTQ4ZDZkYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMTQ2NSw3ICsxNDY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgaWYgKGlzTWFpbkZyYW1lICYmIGNvcmVGcmFt
ZS0+dmlldygpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0UGFyZW50VmlzaWJsZShm
YWxzZSk7CiAgICAgY29yZUZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwotICAgIFJlZlB0cjxGcmFt
ZVZpZXc+IGNvcmVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoKmNvcmVGcmFtZSk7CisgICAgYXV0
byBjb3JlVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKCpjb3JlRnJhbWUpOwogICAgIGNvcmVGcmFt
ZS0+c2V0Vmlldyhjb3JlVmlldy5jb3B5UmVmKCkpOwogCiAgICAgW21fd2ViRnJhbWUuZ2V0KCkg
X3VwZGF0ZUJhY2tncm91bmRBbmRVcGRhdGVzV2hpbGVPZmZzY3JlZW5dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggN2I5YmI4OTkwOGFlNWMxYTY1
MmUzNmNjODg5YmUwNGU1NjU0Yzk0Ni4uYTkzZGVmNjEzOTlhNWNjNTRlZjYxY2FlOWMwMzc5OTA1
ODkwY2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC0xNzQ2LDggKzE3NDYsOCBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczoo
TlNBcnJheSAqKilvdXRSYW5nZXMgYW5kTWV0YWRhdGFzOihOU0FycmF5ICoqKQogICAgICAgICAg
ICAgaWYgKCFtZXRhZGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmRvY3Vt
ZW50LCBub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0
KCkpOwotICAgICAgICAgICAgRE9NUmFuZ2UgKmRvbVJhbmdlID0ga2l0KHJhbmdlLmdldCgpKTsK
KyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbm9kZSwg
bWFya2VyLT5zdGFydE9mZnNldCgpLCBub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKTsKKyAgICAg
ICAgICAgIERPTVJhbmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5wdHIoKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChtZXRhZGF0YSAhPSBwcmV2aW91c01ldGFkYXRhKSB7CiAgICAg
ICAgICAgICAgICAgW21ldGFkYXRhcyBhZGRPYmplY3Q6bWV0YWRhdGFdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYWFmNTI4YzlmYTlj
ODIzYmFjMTBjZTA3ZTFjYTU5YzkzNDRmMzg3ZS4uZmY3NDBlZTkwZWZmZmIxZjc0MjgzMmVhMmEw
ZDc4YWU4OGQzYjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAtICh2b2lkKV93cml0ZVNlbGVjdGlv
bldpdGhQYXN0ZWJvYXJkVHlwZXM6KE5TQXJyYXkgKil0eXBlcyB0b1Bhc3RlYm9hcmQ6KE5TUGFz
dAogewogICAgIC8vIFB1dCBIVE1MIG9uIHRoZSBwYXN0ZWJvYXJkLgogICAgIGlmIChbdHlwZXMg
Y29udGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7Ci0gICAgICAgIGlmIChSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKGNvcmUoW3NlbGYgX2ZyYW1lXSkpKSB7CisgICAgICAgIGlmIChhdXRv
IGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihjb3Jl
KFtzZWxmIF9mcmFtZV0pKSkgewogICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+
IGRhdGEgPSBjb3JlQXJjaGl2ZSA/IGNvcmVBcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KSA6IDApCiAgICAgICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNE
YXRhICopZGF0YS5nZXQoKSBmb3JUeXBlOldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDE3ZWEw
YmE3MDQyOTkwMTA0MjYwMmVlZmQ4YjhkMzRlODQ3NjFiMDUuLmU3N2YxYmNiNjg4NDVjYjgzMTM0
MzY0YWNhZDMxZjBjNzgyZTNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTQ3MzUsOCArNDczNSw2IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRU
b0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3Js
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdmlld0dyb3VwID0gV2ViVmlld0dyb3VwOjpn
ZXRPckNyZWF0ZShncm91cE5hbWUsIFN0cmluZygpKTsKLSAgICBpZiAoIXZpZXdHcm91cCkKLSAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc2
MCw4ICs0NzU4LDYgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byB2aWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFt
ZSwgU3RyaW5nKCkpOwotICAgIGlmICghdmlld0dyb3VwKQotICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDVjMDc3MTIxMWVhZWQ2NDkw
NzNlMTAzZTkwNGE1ZWM5MDQ5YjQ2M2YuLmJjNzlkODliZDQ0NmM1NmVhMWJhOWQ1N2M3NWFlMzk5
YWE4ZjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6
cmVmcmVzaCgpCiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2th
Z2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBhdXRvIHBhY2th
Z2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFzdE1vZGlmaWVkKTsKICAg
ICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZU5vbk51bGwoKSkpCiAgICAg
ICAgICAgICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5NWZiYzVlZjdiM2M5OGRi
MTc2YzNkNjQxOWYwZTMxYzI4MWVmMTc4Li5kMTMyNGVjNTFmYTYyMWI3OWRiZGQ0M2U4NThlMTNj
ZjMzZWRmOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1lZGlhQ2FuU3Rh
cnQoRG9jdW1lbnQmKQogewogICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwogICAgIGlmICghc3Rh
cnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRG
cmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbih0
aGlzKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihwYXJlbnRG
cmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKSkuZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbigq
dGhpcyk7CiB9CiAKIFBsdWdpblZpZXc6On5QbHVnaW5WaWV3KCkKQEAgLTQxMCw4ICs0MTAsOCBA
QCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3Qp
CiAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgdGFyZ2V0ZWQgcmVxdWVzdCwgY3JlYXRlIGEg
c3RyZWFtIGZvciBpdC4gb3RoZXJ3aXNlLAogICAgICAgICAvLyBqdXN0IHBhc3MgaXQgb2ZmIHRv
IHRoZSBsb2FkZXIKICAgICAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxQbHVnaW5TdHJlYW0+IHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3Jl
YXRlKHRoaXMsIG1fcGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3Qo
KS5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0
LT5ub3RpZnlEYXRhKCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3Bs
dWdpbi0+cXVpcmtzKCkpOwotICAgICAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJlYW0pOworICAg
ICAgICAgICAgYXV0byBzdHJlYW0gPSBQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVu
dEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBw
bHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5zdGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsK
KyAgICAgICAgICAgIG1fc3RyZWFtcy5hZGQoc3RyZWFtLmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICBzdHJlYW0tPnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0
aGUgdGFyZ2V0IGZyYW1lIGlzIG91ciBmcmFtZSwgd2UgY291bGQgZGVzdHJveSB0aGUKQEAgLTQ1
NCw4ICs0NTQsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVl
c3QqIHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgY3N0ciA9IHJlc3VsdFN0cmluZy51dGY4KCk7
CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luU3RyZWFtPiBzdHJlYW0gPSBQbHVn
aW5TdHJlYW06OmNyZWF0ZSh0aGlzLCBtX3BhcmVudEZyYW1lLmdldCgpLCByZXF1ZXN0LT5mcmFt
ZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QtPnNlbmROb3RpZmljYXRp
b24oKSwgcmVxdWVzdC0+bm90aWZ5RGF0YSgpLCBwbHVnaW4oKS0+cGx1Z2luRnVuY3MoKSwgaW5z
dGFuY2UoKSwgbV9wbHVnaW4tPnF1aXJrcygpKTsKLSAgICAgICAgbV9zdHJlYW1zLmFkZChzdHJl
YW0pOworICAgICAgICBhdXRvIHN0cmVhbSA9IFBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIG1f
cGFyZW50RnJhbWUuZ2V0KCksIHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5yZXNvdXJjZVJl
cXVlc3QoKSwgcmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpLCByZXF1ZXN0LT5ub3RpZnlEYXRh
KCksIHBsdWdpbigpLT5wbHVnaW5GdW5jcygpLCBpbnN0YW5jZSgpLCBtX3BsdWdpbi0+cXVpcmtz
KCkpOworICAgICAgICBtX3N0cmVhbXMuYWRkKHN0cmVhbS5jb3B5UmVmKCkpOwogICAgICAgICBz
dHJlYW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlcXVlc3RVUkwsIGNzdHIpOwogICAgIH0KIH0K
QEAgLTY5MCwxMSArNjkwLDExIEBAIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1
Z2luVmlldzo6YmluZGluZ0luc3RhbmNlKCkKICAgICB9CiAKICAgICBhdXRvIHJvb3QgPSBtX3Bh
cmVudEZyYW1lLT5zY3JpcHQoKS5jcmVhdGVSb290T2JqZWN0KHRoaXMpOwotICAgIFJlZlB0cjxK
U0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gaW5zdGFuY2UgPSBKU0M6OkJpbmRpbmdzOjpDSW5zdGFu
Y2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOworICAgIGF1dG8gaW5zdGFuY2UgPSBK
U0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmNyZWF0ZShvYmplY3QsIFdURk1vdmUocm9vdCkpOwog
CiAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9iamVjdCk7CiAKLSAgICByZXR1cm4gaW5zdGFuY2U7
CisgICAgcmV0dXJuIFdURk1vdmUoaW5zdGFuY2UpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCA3Y2ZjN2E5YTgyZTcyYzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5ZjRlLi5iNWI2MGE4
MDk5MWQ2MDcxMGI4NzA2MzAyNDAyMWQ2NTA5MDYzMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzE3LDcgKzMxNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBWZWN0b3I8Ym9vbCwgND4gbV9wb3B1cFN0YXRlU3RhY2s7
CiAKLSAgICAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPiA+IG1fc3RyZWFtczsKKyAg
ICAgICAgSGFzaFNldDxSZWZQdHI8UGx1Z2luU3RyZWFtPj4gbV9zdHJlYW1zOwogICAgICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBsdWdpblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogCiAgICAg
ICAgIGJvb2wgbV9pc1dpbmRvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDgwODcyMDc2NGQ3NjRkYmFkYTU1MDNiZmY4YzZhMmRjMjRlYjRmNGEuLmVlODE5OGE4ODI3MTY4
MWU1MWJjMWNlYzIxNzU1ZTFmNTc0ZGRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKQEAgLTEwNjEsNyArMTA2MSw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZXR1
cm4gV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmll
dyogcGx1Z2luVmlldykgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyYgcGx1Z2luVmlldykgY29uc3QK
IHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkBAIC0x
MDcyLDIzICsxMDcyLDIzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgUmV0YWluUHRy
PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
bV93ZWJGcmFtZSk7Ci0gICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1l
KCkpOworICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LnBhcmVudEZyYW1lKCkpOwogCi0g
ICAgaWYgKCFwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7Cisg
ICAgaWYgKCFwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJM
IHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKSkpOwogICAg
ICAgICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAg
ICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKICAg
ICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdp
blBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoIXBsdWdpblZpZXctPm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKKyAgICBp
ZiAoIXBsdWdpblZpZXcubWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZT
dHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVm
KFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwg
a2V5LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
fQogCi0gICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVn
aW5OYW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKKyAgICBpZiAocGx1Z2luVmll
dy5wbHVnaW4oKSkgeworICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1
Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAg
ICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CiAgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5W
aWV3KiBwbHVnaW4KICAKICAgICBpbnQgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcgZGVzY3Jp
cHRpb247Ci0gICAgc3dpdGNoIChwbHVnaW5WaWV3LT5zdGF0dXMoKSkgeworICAgIHN3aXRjaCAo
cGx1Z2luVmlldy5zdGF0dXMoKSkgewogICAgICAgICBjYXNlIFBsdWdpblN0YXR1c0Nhbk5vdEZp
bmRQbHVnaW46CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckNhbm5vdEZpbmRQ
bHVnSW47CiAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IFdFQl9VSV9TVFJJTkcoIlRoZSBwbHVn
LWluIGNhblx4RTJceDgwXHg5OXQgYmUgZm91bmQiLCAiV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1
Z2luIGRlc2NyaXB0aW9uIik7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcq
IHBsdWdpbgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAg
UmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIGVy
cm9yQ29kZSwgcGx1Z2luVmlldy0+dXJsKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9y
IHJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVn
aW5WaWV3LnVybCgpLCBTdHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRv
cHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0Jh
Zy5nZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVk
V2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBSZWZQdHI8UGx1Z2luVmlldz4g
cGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2luU2l6ZSwgJmVsZW1l
bnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBsb2FkTWFudWFsbHkp
OworICAgIGF1dG8gcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShmcmFtZSwgcGx1Z2lu
U2l6ZSwgJmVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIG1pbWVUeXBlLCBs
b2FkTWFudWFsbHkpOwogCiAgICAgaWYgKHBsdWdpblZpZXctPnN0YXR1cygpID09IFBsdWdpblN0
YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CkBAIC0x
MTgwLDcgKzExODAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQmIHBsdWdpbldpZGdldCkKIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIEhUTUxBcHBsZXRFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIFJlZlB0
cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJG
cmFtZSksIHBsdWdpblNpemUsICZlbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFsc2UpOworICAgIGF1dG8gcGx1Z2lu
VmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fd2ViRnJhbWUpLCBwbHVnaW5TaXplLCAm
ZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1q
YXZhLWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJl
IGxvYWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1
Z2luVmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDIwNTZhZTMxMmE1M2NkY2RiMjRiY2IwYmFhZDZmNzVjODcyNjVlNjEuLmE5NjVmNTkxOWVlZjQy
YzE2ZWYyNTJiMmUzYzI1MGFmNmU3YTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNDksNyArNDksNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgc2V0V2Vi
RnJhbWUoV2ViRnJhbWUqIHdlYkZyYW1lKSB7IG1fd2ViRnJhbWUgPSB3ZWJGcmFtZTsgfQogICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJhbWU7IH0KIAotICAg
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5W
aWV3KikgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0
IFdlYkNvcmU6OlBsdWdpblZpZXcmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGMwMzI0MmM3
ZDZiNjJkOGZjNjM1ZDlhMGQ3YmQ2ZTVkN2MyNTlmZWQuLjQ1ZTRhNTdiNWE4YmFjMmRhN2I0NGU0
ZGZiZjgyMWNhZWYwYWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAg
LTU2NCw3ICs1NjQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJ
V2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJG
cmFtZTo6bG9hZERhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFz
ZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1l
VHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTYx
MCw3ICs2MTAsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFt
KiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogCiBIUkVTVUxUIFdlYkZyYW1l
Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFy
KSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNp
emVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CiAgICAgQlN0cmluZyBwbGFp
blRleHRNaW1lVHlwZShURVhUKCJ0ZXh0L3BsYWluIiksIDEwKTsKICAgICBCU3RyaW5nIHV0ZjE2
RW5jb2RpbmcoVEVYVCgidXRmLTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgcGxhaW5UZXh0TWltZVR5cGUsIHV0ZjE2RW5jb2RpbmcsIHVybCwgbnVsbHB0cik7
CkBAIC02MTksNyArNjE5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmlu
ZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIgdXJsKQogCiB2b2lkIFdlYkZyYW1lOjps
b2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgaHRtbFN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9J
bl8gQlNUUiB1bnJlYWNoYWJsZVVSTCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPiho
dG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7Cisg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1s
U3RyaW5nKSk7CiAgICAgQlN0cmluZyB1dGYxNkVuY29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsK
ICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIDAsIHV0ZjE2RW5jb2RpbmcsIGJh
c2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmlu
ZGV4IDFiYWRkMDFjM2E3NjQwY2NmMTEzMDRhNDM1YTdiMWUyNDUxMTVmZGUuLjUwMmNhODlkZjZi
OTBkMGEyNzdkNzliMWJiNTk4NzFiNWQxMTQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuaApAQCAtMTk5LDcgKzE5OSw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00
NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgZmluYWwgOiBwCiAKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNU
UiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0
RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBs
b2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50
REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBh
Z2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXpl
T3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggOTQwNzc5MTJhOTkxNjQxMTdkMGM2ODFjY2Nj
MDY2ODZlMDRjNGRlMC4uZjlhYjgzYjUxY2EzMjNlYmU3MWY1NTAyNjc5MmRiZjYzNTM0MzM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMTg3LDkgKzE4Nyw5IEBAIENBVmlldzo6fkNB
VmlldygpCiAgICAgbWVzc2FnZVdpbmRvdyA9IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDQVZpZXc+
IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK1JlZjxDQVZp
ZXc+IENBVmlldzo6Y3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENBVmlldyhkZXN0aW5hdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENBVmlldyhkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIENBVmlldzo6c2V0
Q29udGV4dERpZENoYW5nZUNhbGxiYWNrKENvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9u
IGZ1bmN0aW9uLCB2b2lkKiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggNDViNjRlYzAx
NTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4MDQ2Yy4uNzI5NjNiZTNkYmJjNDMyOGY1NTc5YTZk
YTU3MGM2MmM1ZjQ4OTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNw
bGF5TGlua0NsaWVudCB7CiAKICAgICBjbGFzcyBIYW5kbGU7CiAKLSAgICBzdGF0aWMgUmVmUHRy
PENBVmlldz4gY3JlYXRlKERyYXdpbmdEZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFJlZjxDQVZp
ZXc+IGNyZWF0ZShEcmF3aW5nRGVzdGluYXRpb24pOwogICAgIH5DQVZpZXcoKTsKIAogICAgIHR5
cGVkZWYgdm9pZCAoKkNvbnRleHREaWRDaGFuZ2VDYWxsYmFja0Z1bmN0aW9uKShDQVZpZXcqLCB2
b2lkKiBpbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsuY3BwCmluZGV4IGIx
NTQ4MjRjZTQ0ODNjN2RkOWU2MzFiYWQxYjEzOTg0NTdmNDlmYzUuLmFhYmQxOThiMTExNWVkN2U2
NWFkODMwODU0MTYxOWNkNDE1ODQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DVkRpc3BsYXlM
aW5rLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDVkRpc3BsYXlMaW5rOjp+Q1ZEaXNwbGF5TGluaygp
CiAgICAgOjpDbG9zZUhhbmRsZShtX3dha2V1cEV2ZW50KTsKIH0KIAotUmVmUHRyPENWRGlzcGxh
eUxpbms+IENWRGlzcGxheUxpbms6OmNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50KiBjbGllbnQp
CitSZWY8Q1ZEaXNwbGF5TGluaz4gQ1ZEaXNwbGF5TGluazo6Y3JlYXRlKENWRGlzcGxheUxpbmtD
bGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENWRGlzcGxheUxpbmso
Y2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1ZEaXNwbGF5TGluayhjbGllbnQp
KTsKIH0KIAogdm9pZCBDVkRpc3BsYXlMaW5rOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NWRGlzcGxheUxpbmsu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZE
aXNwbGF5TGluay5oCmluZGV4IDBhZTAyZjE2OWVjODI4OTEyNjYxZWZhNzM4Yzg0ZmI3YzQ0NDIy
ODMuLmNhMDI2YWZlYWM0MTVkNzE4NzQ3OGU4NzM3NWEyNzEwOTlmNDBjY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ1ZEaXNw
bGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ1ZEaXNwbGF5TGluay5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENWRGlzcGxh
eUxpbmtDbGllbnQ7CiAvLyBGSVhNRSA4NzY5MTgxOiBSZXBsYWNlIHRoaXMgd2l0aCBDVkRpc3Bs
YXlMaW5rUmVmCiBjbGFzcyBDVkRpc3BsYXlMaW5rIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPENWRGlzcGxheUxpbms+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENWRGlzcGxh
eUxpbms+IGNyZWF0ZShDVkRpc3BsYXlMaW5rQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxDVkRp
c3BsYXlMaW5rPiBjcmVhdGUoQ1ZEaXNwbGF5TGlua0NsaWVudCopOwogICAgIH5DVkRpc3BsYXlM
aW5rKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29udmVyc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0ltYWdlQ29u
dmVyc2lvbi5jcHAKaW5kZXggZGM2NjcwZDQzM2ZmMDllMGQxMTY2NWRjMDU1M2IyMTZkZmIyNjAw
Yy4uY2Y5MjE4NWExMGRiOTQ2ZDA2YmI0YmQ0ODBjNjlmZGVjMzQ2MDQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9JbWFnZUNv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvSW1hZ2VDb252ZXJzaW9uLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMg
SFJFU1VMVCBnZXRJbWFnZUNvcHkoSURpcmVjdDNEU3VyZmFjZTkqIHN5c3RlbU1lbW9yeVN1cmZh
Y2UsIFJlZlB0cjxJbWFnZQogCiAgICAgQ1NpemUgc3VyZmFjZVNpemUoZGVzYy5XaWR0aCwgZGVz
Yy5IZWlnaHQpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlOjpjcmVhdGUoc3Vy
ZmFjZVNpemUpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZTo6Y3JlYXRlKHN1cmZhY2VTaXplKTsK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCmluZGV4IGU4YmRkZWJmMjYyNmY1Y2NhZDhkNGFjZWQ1NzMzZTcyNzIy
YWVlYjcuLmZiYzA0ZGU2NTk3ODk4YjA1ZDIyYTRlNTczYTI0ZWQ1NjE5Nzk4MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC02OTEyLDggKzY5MTIsNiBAQCBIUkVTVUxUIFdl
YlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRf
IElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgYXV0byB2aWV3R3Jv
dXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwLCBTdHJpbmcoKSk7Ci0gICAgaWYg
KCF2aWV3R3JvdXApCi0gICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBpZiAoIWlXb3JsZCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTY5NDEsOCArNjkzOSw2IEBAIEhSRVNVTFQg
V2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9J
bl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvIHZpZXdH
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXAsIFN0cmluZygpKTsKLSAgICBp
ZiAoIXZpZXdHcm91cCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIGlmICghaVdvcmxk
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwo=
</data>
<flag name="review"
          id="374687"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>